def receive_result(request): """ обработчик для ResultURL. """ data = request.POST if USE_POST else request.GET form = ResultURLForm(data) if form.is_valid(): trans = form.cleaned_data['InvId'] sum = form.cleaned_data['OutSum'] extra_params = form.extra_params() user_id = extra_params['user_id'] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа user = User.objects.filter(id=user_id).first() if not user: return HttpResponse('error: bad user_id') order = UserOrder( user_id=user.id, amount=float(sum), trans=trans, ) order.save() user.cash += order.amount user.save() return HttpResponse('OK%s' % trans) return HttpResponse('error: bad signature')
def action_payment(request, user): try: params = get_pay_params(request) except (ValueError, TypeError): return HttpResponse('status=%i' % TRANS_STATUS.INVALID_PARAMS) term, trans, amount = params trans_count = UserOrder.objects.filter(trans=trans).count() if trans_count > 0: return HttpResponse('status=%i' % TRANS_STATUS.ALREADY) order = UserOrder( user_id=user.id, term=term, trans=trans, amount=amount, ) order.save() user.cash += order.amount user.save() return HttpResponse('status=%i&summa=%.2f' % (TRANS_STATUS.SUCCESSFUL, order.amount))