Exemple #1
0
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')
Exemple #2
0
    def testFormValid(self):
        self.assertTrue(
            ResultURLForm({
                'OutSum': '100',
                'InvId': '58',
                'SignatureValue': '877D3BAF8381F70E56638C3BC82580C5',
                'shpparam1': 'None',
                'shpparam2': 'None',
            }).is_valid())

        self.assertFalse(
            ResultURLForm({
                'OutSum': '101',
                'InvId': '58',
                'SignatureValue': '877D3BAF8381F70E56638C3BC82580C5',
                'shpparam1': 'None',
                'shpparam2': 'None',
            }).is_valid())

        self.assertFalse(
            ResultURLForm({
                'OutSum': '100',
                'InvId': '58',
                'SignatureValue': '877D3BAF8381F70E56638C3BC82580C5',
                'shpparam1': 'Vasia',
                'shpparam2': 'None',
            }).is_valid())
Exemple #3
0
    def testFormValid(self):

        self.assertTrue(
            ResultURLForm({
                "OutSum": "100",
                "InvId": "58",
                "SignatureValue": "877D3BAF8381F70E56638C3BC82580C5",
                "shpparam1": "None",
                "shpparam2": "None",
            }).is_valid())

        self.assertFalse(
            ResultURLForm({
                "OutSum": "101",
                "InvId": "58",
                "SignatureValue": "877D3BAF8381F70E56638C3BC82580C5",
                "shpparam1": "None",
                "shpparam2": "None",
            }).is_valid())

        self.assertFalse(
            ResultURLForm({
                "OutSum": "100",
                "InvId": "58",
                "SignatureValue": "877D3BAF8381F70E56638C3BC82580C5",
                "shpparam1": "Vasia",
                "shpparam2": "None",
            }).is_valid())
Exemple #4
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'})
Exemple #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'})
 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'}
     )
Exemple #7
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"
     })
Exemple #8
0
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")
Exemple #9
0
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')
Exemple #10
0
 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'
     })
Exemple #11
0
    def testFormValid(self):
        self.assertTrue(
            ResultURLForm(
                {
                    'OutSum': '100',
                    'InvId': '58',
                    'SignatureValue': '3D7DE0A71282E50308ED401DC24BBD5B',
                    'shpparam1': 'None',
                    'shpparam2': 'None',
                },
                login=CUSTOM_LOGIN,
                password1=CUSTOM_PASS1,
                password2=CUSTOM_PASS2).is_valid())

        self.assertFalse(
            ResultURLForm(
                {
                    'OutSum': '101',
                    'InvId': '58',
                    'SignatureValue': '3D7DE0A71282E50308ED401DC24BBD5B',
                    'shpparam1': 'None',
                    'shpparam2': 'None',
                },
                login=CUSTOM_LOGIN,
                password1=CUSTOM_PASS1,
                password2=CUSTOM_PASS2).is_valid())

        self.assertFalse(
            ResultURLForm(
                {
                    'OutSum': '100',
                    'InvId': '58',
                    'SignatureValue': '3D7DE0A71282E50308ED401DC24BBD5B',
                    'shpparam1': 'Vasia',
                    'shpparam2': 'None',
                },
                login=CUSTOM_LOGIN,
                password1=CUSTOM_PASS1,
                password2=CUSTOM_PASS2).is_valid())
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')
Exemple #13
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')
Exemple #14
0
 def testEmptyFormValid(self):
     self.assertFalse(
         ResultURLForm(login=CUSTOM_LOGIN,
                       password1=CUSTOM_PASS1,
                       password2=CUSTOM_PASS2).is_valid())
Exemple #15
0
 def testEmptyFormValid(self):
     self.assertFalse(ResultURLForm().is_valid())