コード例 #1
0
ファイル: views.py プロジェクト: thakryptex/django-robokassa
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')
コード例 #2
0
ファイル: tests.py プロジェクト: cyberxam/topfighters
 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'})
コード例 #3
0
 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'})
コード例 #4
0
ファイル: tests.py プロジェクト: LPgenerator/django-robokassa
 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'}
     )
コード例 #5
0
 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"
     })
コード例 #6
0
ファイル: views.py プロジェクト: veziak/django-robokassa
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")
コード例 #7
0
ファイル: views.py プロジェクト: JasperGrimm/imagnet
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')
コード例 #8
0
ファイル: tests.py プロジェクト: thakryptex/django-robokassa
 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'
     })
コード例 #9
0
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')
コード例 #10
0
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')