def receive_result(request, **credentials): """ Обработчик для ResultURL """ data = request.POST if USE_POST else request.GET form = ResultURLForm(data, **credentials) if form.is_valid(): inv_id = form.cleaned_data['InvId'] out_sum = form.cleaned_data['OutSum'] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа notification = SuccessNotification.objects.create( InvId=inv_id, OutSum=out_sum ) # дополнительные действия с заказом (например, смену его статуса) можно # осуществить в обработчике сигнала robokassa.signals.result_received result_received.send( sender=notification, InvId=inv_id, OutSum=out_sum, extra=form.extra_params()) return HttpResponse('OK%s' % inv_id) return HttpResponse('error: bad signature')
def testFormExtra(self): form = ResultURLForm({ 'OutSum': '100', 'InvId': '58', 'SignatureValue': 'B2111A06F6B7A1E090D38367BF7032D9', 'shpparam1': 'Vasia', 'shpparam2': 'None', }) self.assertTrue(form.is_valid()) self.assertEqual(form._get_signature_string(), '100:58:%s:shpparam1=Vasia:shpparam2=None' % (PASSWORD2)) self.assertEqual(form.extra_params(), {'param1': 'Vasia', 'param2': 'None'})
def testFormExtra(self): form = ResultURLForm({ 'OutSum': '100', 'InvId': '58', 'SignatureValue': '8D63137C2AC89F7D5B7E6CD448DA64AF', 'shpparam1': 'Vasia', 'shpparam2': 'None', }, login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2) self.assertTrue(form.is_valid()) self.assertEqual( form._get_signature_string(), '100:58:%s:shpparam1=Vasia:shpparam2=None' % CUSTOM_PASS2) self.assertEqual( form.extra_params(), {'param1': 'Vasia', 'param2': 'None'} )
def testFormExtra(self): form = ResultURLForm({ "OutSum": "100", "InvId": "58", "SignatureValue": "B2111A06F6B7A1E090D38367BF7032D9", "shpparam1": "Vasia", "shpparam2": "None", }) self.assertTrue(form.is_valid()) self.assertEqual( form._get_signature_string(), "100:58:%s:shpparam1=Vasia:shpparam2=None" % (PASSWORD2), ) self.assertEqual(form.extra_params(), { "param1": "Vasia", "param2": "None" })
def receive_result(request): """ обработчик для ResultURL. """ data = request.POST if USE_POST else request.GET form = ResultURLForm(data) if form.is_valid(): id, sum = form.cleaned_data["InvId"], form.cleaned_data["OutSum"] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа notification = SuccessNotification.objects.create(InvId=id, OutSum=sum) # дополнительные действия с заказом (например, смену его статуса) можно # осуществить в обработчике сигнала robokassa.signals.result_received result_received.send(sender=notification, InvId=id, OutSum=sum, extra=form.extra_params()) return HttpResponse("OK%s" % id) return HttpResponse("error: bad signature")
def payment_result(request): data = request.POST if USE_POST else request.GET form = ResultURLForm(data) print data.get('SignatureValue') if form.is_valid(): order_id, order_sum = form.cleaned_data['InvId'], form.cleaned_data['OutSum'] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа notification = SuccessNotification.objects.create(InvId=order_id, OutSum=order_sum) # дополнительные действия с заказом (например, смену его статуса) можно # осуществить в обработчике сигнала robokassa.signals.result_received result_received.send(sender=notification, InvId=order_id, OutSum=order_sum, extra=form.extra_params()) return HttpResponse('OK%s' % order_id) return HttpResponse('error: bad signature')
def testFormExtra(self): form = ResultURLForm( { 'OutSum': '100', 'InvId': '58', 'SignatureValue': '8D63137C2AC89F7D5B7E6CD448DA64AF', 'shpparam1': 'Vasia', 'shpparam2': 'None', }, login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2) self.assertTrue(form.is_valid()) self.assertEqual( form._get_signature_string(), '100:58:%s:shpparam1=Vasia:shpparam2=None' % CUSTOM_PASS2) self.assertEqual(form.extra_params(), { 'param1': 'Vasia', 'param2': 'None' })
def receive_result(request): """ обработчик для ResultURL. """ form = ResultURLForm(request.POST) if form.is_valid(): id, sum = form.cleaned_data['InvId'], form.cleaned_data['OutSum'] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа notification = SuccessNotification.objects.create(InvId=id, OutSum=sum) order = Order.objects.get(id=id) order.status = Order.STATUS_PAYED order.net = float(sum) logger.info('Order #%d had payed. Sum: %s' % (order.id, order.net)) if not order.is_emails_sended: send_order_mails(order, order.user) order.is_emails_sended = True order.save() return HttpResponse('OK%s' % id) return HttpResponse('error: bad signature')
def receive_result(request): """ обработчик для ResultURL. """ data = request.POST if USE_POST else request.GET logger.debug("receive result from robokassa: {}".format(data)) form = ResultURLForm(data) if form.is_valid(): logger.debug("result form from robokassa is valid") id, sum = form.cleaned_data['InvId'], form.cleaned_data['OutSum'] # сохраняем данные об успешном уведомлении в базе, чтобы # можно было выполнить дополнительную проверку на странице успешного # заказа notification = SuccessNotification.objects.create(InvId=id, OutSum=sum) # дополнительные действия с заказом (например, смену его статуса) можно # осуществить в обработчике сигнала robokassa.signals.result_received result_received.send(sender=notification, InvId=id, OutSum=sum, extra=form.extra_params()) logger.debug("return ok to robokassa") return HttpResponse('OK%s' % id) logger.debug("return bad to robokassa. errors: {}".format(form.errors)) return HttpResponse('error: bad signature')