示例#1
0
文件: views.py 项目: okonkwo/prospere
def buy(request):

    if request.method == 'POST':
        from robokassa.forms import RobokassaForm
        from datetime import datetime

        deal_id = request.POST.get('deal_id',False)
        if not deal_id: return direct_to_template(request,'error.html')
            
        deal = Dealings.objects.get(pk = deal_id)
        deal.state = "WP"
        deal.product.last_purchase = datetime.now()
        deal.product.save()
        deal.save()

        form = RobokassaForm(initial={
                   'OutSum': str(deal.cost),
                   'InvId': deal.id,
                   'Desc': '',
                   'Email': request.user.email,
                   # 'IncCurrLabel': '',
                   'Culture': 'ru',
               })
        return redirect(form.get_redirect_url())

    return direct_to_template(request,'error.html')
示例#2
0
文件: views.py 项目: xorsnn/lugati
def get_payment_template(request, order_id=''):
    if order_id == '':
        return HttpResponse()
    else:
        cur_site_name = get_current_site(request).name
        order = Order.objects.get(pk=order_id)
        if settings.LUGATI_TESTING:
            form = RobokassaForm(initial={
                'OutSum': 1,
                'InvId': order_id,
            })
        else:
            form = RobokassaForm(
                initial={
                    'OutSum':
                    float(order.delivery_price) + float(order.get_total_sum()),
                    'InvId':
                    order_id,
                })

        return render(
            request,
            'ligati_payment/lugati_robokassa/robokassa_payment_template.html',
            {
                'form': form,
                'cur_site_name': cur_site_name
            })
示例#3
0
class RobokassaFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(
            initial={
                'OutSum': 100.00,
                'InvId': 58,
                'Desc': u'Холодильник "Бирюса"',
                'Email': '*****@*****.**'
            })

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            '%s:100.0:58:%s:shpparam1=None:shpparam2=None' %
            (LOGIN, PASSWORD1))
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial={'InvId': 5})
        self.assertEqual(
            form._get_signature_string(),
            '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin="******"test_login&OutSum=100.0&InvId=58&Desc=%D5%EE%EB%EE%E4%" \
              "E8%EB%FC%ED%E8%EA+%22%C1%E8%F0%FE%F1%E0%22&SignatureVa" \
              "lue=0EC23BE40003640B35EC07F6615FFB57&Email=vasia%40exa" \
              "mple.com&shpparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#4
0
class RobokassaFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(
            initial={
                'OutSum': 100.00,
                'InvId': 58,
                'Desc': u'Холодильник "Бирюса"',
                'Email': '*****@*****.**'
            })

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            '%s:100.0:58:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1)
        )
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial={'InvId': 5})
        self.assertEqual(
            form._get_signature_string(),
            '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1)
        )

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin="******"test_login&OutSum=100.0&InvId=58&Desc=%D5%EE%EB%EE%E4%" \
              "E8%EB%FC%ED%E8%EA+%22%C1%E8%F0%FE%F1%E0%22&SignatureVa" \
              "lue=0EC23BE40003640B35EC07F6615FFB57&Email=vasia%40exa" \
              "mple.com&shpparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#5
0
class RobokassaFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(
            initial={
                "OutSum": 100.00,
                "InvId": 58,
                "Desc": 'Холодильник "Бирюса"',
                "Email": "*****@*****.**",
            })

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            "%s:100.0:58:%s:shpparam1=None:shpparam2=None" %
            (LOGIN, PASSWORD1),
        )
        self.assertEqual(len(self.form.fields["SignatureValue"].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial={"InvId": 5})
        self.assertEqual(
            form._get_signature_string(),
            "%s::5:%s:shpparam1=None:shpparam2=None" % (LOGIN, PASSWORD1),
        )

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin=test_login&OutSum=100.0&InvId=58&Desc=%D5%EE%EB%EE%E4%E8%EB%FC%ED%E8%EA+%22%C1%E8%F0%FE%F1%E0%22&SignatureValue=0EC23BE40003640B35EC07F6615FFB57&Email=vasia%40example.com&shpparam1=None&shpparam2=None"  # noqa
        self.assertEqual(self.form.get_redirect_url(), url)
示例#6
0
 def setUp(self):
     self.form = RobokassaForm(initial = {
                    'OutSum': 100.00,
                    'InvId': 58,
                    'Desc' : u'Холодильник "Бирюса"',
                    'Email' : '*****@*****.**'
                 })
示例#7
0
 def setUp(self):
     self.form = RobokassaForm(
         initial={
             "OutSum": 100.00,
             "InvId": 58,
             "Desc": 'Холодильник "Бирюса"',
             "Email": "*****@*****.**",
         })
示例#8
0
 def testExtra(self):
     form = RobokassaForm(initial={
                             'InvId': 58,
                             'OutSum': 100,
                             'param1': 'value1',
                             'param2': 'value2'
                         })
     self.assertEqual(form._get_signature_string(),
                      '%s:100:58:%s:shpparam1=value1:shpparam2=value2' % (LOGIN, PASSWORD1))
    def save(self):
        order = Order.objects.get(id=self.checkout.storage['order_id'])

        order.comment = self.request.POST.get('comment', '').strip()

        # Выбор пользователем типа оплаты
        payment_type = self.request.POST.get('payment')
        if payment_type not in ('cash', 'robokassa'):
            payment_type = None

        # Нет доставки - заказ оптового покупателя
        if not order.delivery:
            self.checkout.storage['is_payed'] = True
            order.status = Order.STATUS_PAYMENT_WAITING
            order.is_emails_sended = True
            order.save()
            self.checkout.save()

            send_order_mails(order, self.request.user)
            self.checkout.storage['is_notified'] = True

            return

        # Самовывоз - не нужна оплата
        # Оплата наличкой - не нужна оплата
        elif payment_type == 'cash':
            self.checkout.storage['is_payed'] = True
            order.payment_type = Order.PAYMENT_CASHPICK
            order.status = Order.STATUS_PAYED
            order.is_emails_sended = True
            order.save()
            self.checkout.save()

            send_order_mails(order, self.request.user)
            self.checkout.storage['is_notified'] = True

            return

        order.payment_type = Order.PAYMENT_ROBOKASSA
        order.save()

        form = RobokassaForm(initial={
            'OutSum': order.net,
            'InvId': order.id,
            'Desc': u'Заказ №%s в интернет-магазине «Томат»' % order.id,
            'Email': self.request.user.email,
            'Culture': 'ru',
        })
        if settings.DEBUG:
            form.target = reverse('checkout.views.rk_test_start')
            url = form.get_redirect_url()
        else:
            url = form.get_redirect_url()

        self.checkout.save()

        return HttpResponseRedirect(url)
示例#10
0
 def testSignatureMissingParams(self):
     form = RobokassaForm(
         initial={'InvId': 5},
         login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2)
     self.assertEqual(
         form._get_signature_string(),
         '%s::5:%s:shpparam1=None:shpparam2=None' % (
             CUSTOM_LOGIN, CUSTOM_PASS1)
     )
示例#11
0
 def testSignatureMissingParams(self):
     form = RobokassaForm(initial={'InvId': 5},
                          login=CUSTOM_LOGIN,
                          password1=CUSTOM_PASS1,
                          password2=CUSTOM_PASS2)
     self.assertEqual(
         form._get_signature_string(),
         '%s::5:%s:shpparam1=None:shpparam2=None' %
         (CUSTOM_LOGIN, CUSTOM_PASS1))
示例#12
0
 def testExtra(self):
     form = RobokassaForm(initial={
                             'InvId': 58,
                             'OutSum': 100,
                             'param1': 'value1',
                             'param2': 'value2'
                         })
     self.assertEqual(form._get_signature_string(),
                      '%s:100:58:%s:shpparam1=value1:shpparam2=value2' % (LOGIN, PASSWORD1))
示例#13
0
 def setUp(self):
     self.form = RobokassaForm(initial={
         'OutSum': 100.00,
         'InvId': 58,
         'Desc': u'Холодильник "Бирюса"',
         'Email': '*****@*****.**'
     },
                               login=CUSTOM_LOGIN,
                               password1=CUSTOM_PASS1,
                               password2=CUSTOM_PASS2)
示例#14
0
 def testExtra(self):
     form = RobokassaForm(initial={
         "InvId": 58,
         "OutSum": 100,
         "param1": "value1",
         "param2": "value2"
     })
     self.assertEqual(
         form._get_signature_string(),
         "%s:100:58:%s:shpparam1=value1:shpparam2=value2" %
         (LOGIN, PASSWORD1),
     )
示例#15
0
 def testExtra(self):
     form = RobokassaForm(initial={
         'InvId': 58,
         'OutSum': 100,
         'param1': 'value1',
         'param2': 'value2'
     },
                          login=CUSTOM_LOGIN,
                          password1=CUSTOM_PASS1,
                          password2=CUSTOM_PASS2)
     self.assertEqual(
         form._get_signature_string(),
         '%s:100:58:%s:shpparam1=value1:shpparam2=value2' %
         (CUSTOM_LOGIN, CUSTOM_PASS1))
示例#16
0
 def testExtra(self):
     form = RobokassaForm(
         initial={
             'InvId': 58,
             'OutSum': 100,
             'param1': 'value1',
             'param2': 'value2'
         },
         login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2
     )
     self.assertEqual(
         form._get_signature_string(),
         '%s:100:58:%s:shpparam1=value1:shpparam2=value2' % (
             CUSTOM_LOGIN, CUSTOM_PASS1)
     )
示例#17
0
def order(request, order_num=None):
    """

    """
    custom_context = {'editable': False, 'uc_form': MagnetForm()}
    if order_num is not None:
        custom_context.update({'order_num': order_num})
        order_obj = get_object_or_404(Order, number=order_num)
        if order_obj.status == 'new':
            raise Http404
        custom_context['pay_form'] = RobokassaForm(initial={
               'OutSum': order_obj.get_total_sum_with_delivery(),
               'InvId': order_obj.pk,
               'Desc': order_obj.fio,
               'Email': order_obj.email,
               #'IncCurrLabel': 'UAH',
               'Culture': 'ru'
           })
    else:
        custom_context['editable'] = True
        order_obj = get_order(request, draft=True)
    form = OrderForm(instance=order_obj)
    custom_context.update({'order': order_obj})
    custom_context.update({'form': form})
    return render(request, 'order.html', custom_context)
示例#18
0
 def setUp(self):
     self.form = RobokassaForm(initial = {
                    'OutSum': 100.00,
                    'InvId': 58,
                    'Desc' : 'Холодильник "Бирюса"',
                    'Email' : '*****@*****.**'
                 })
示例#19
0
def confirmation_view(request, template_name="cart/confirmation.html"):
    # получить  пользователя
    # нужно получить заказ
    # нужно получить доставку
    if request.user.is_authenticated():

        if request.method == 'GET' and "cart_id" in request.GET:
            cart_id = request.GET['cart_id']
            user = request.user

            order = Order.objects.get(cart_id=cart_id)

            form = RobokassaForm(initial={
                'OutSum': order.total_price(),
                'InvId': order.id,
            })

            order.save()
            subject = u'заявка от %s' % order.user.first_name
            message = u'Номер заказа: %s \n Имя: %s \n телефон: %s' % (
                order.id, order.user.last_name, order.user.phone)
            send_mail(subject,
                      message,
                      '*****@*****.**', [ADMIN_EMAIL],
                      fail_silently=False)
            # subject = u'Пользователь не оплатил %s' % order.user.first_name
            # message = u'Номер заказа: %s \n Имя: %s \n телефон: %s' % (order.id, order.user.last_name, order.user.phone)
            # send_mail(subject, message, '*****@*****.**', [ADMIN_EMAIL], fail_silently=False)
        # else:
        #     if request.method == 'POST' and "mail" in request.POST:
        #         cart_id = request.POST['cart_id']
        #         order = Order.objects.get(cart_id=cart_id)
        #         items = CartItem.objects.filter(cart_id=cart_id)
        #         context_dict = {
        #             'name': request.user.get_full_name(),
        #             'cart_items': items,
        #             'price': order.total_price(),
        #         }
        #
        #
        #         subject = u'Супер письмо'
        #         message = render_to_string(
        #             'core/email.html', context_dict)
        #
        #         from_email = '*****@*****.**'
        #         to = "*****@*****.**"
        #         msg = EmailMultiAlternatives(subject, message, from_email, [to])
        #         msg.content_subtype = "html"
        #         msg.send()
        #     return HttpResponseRedirect('/')

    else:
        return HttpResponseRedirect('/login')

    return render_to_response(template_name,
                              locals(),
                              context_instance=RequestContext(request))
示例#20
0
 def setUp(self):
     self.form = RobokassaForm(
         initial={
             'OutSum': 100.00,
             'InvId': 58,
             'Desc': u'Холодильник "Бирюса"',
             'Email': '*****@*****.**'
         },
         login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2
     )
示例#21
0
class RobokassaFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(
            initial={
                'OutSum': 100.00,
                'InvId': 58,
                'Desc': u'Холодильник "Бирюса"',
                'Email': '*****@*****.**'
            })

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            '%s:100.0:58:%s:shpparam1=None:shpparam2=None' %
            (LOGIN, PASSWORD1))
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial={'InvId': 5})
        self.assertEqual(
            form._get_signature_string(),
            '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))

    def testGetRedirectParams(self):
        self.assertEqual(
            dict(self.form.get_redirect_params()), {
                'MrchLogin': '******',
                'OutSum': '100.0',
                'InvId': '58',
                'Desc': 'Холодильник "Бирюса"',
                'SignatureValue': '0EC23BE40003640B35EC07F6615FFB57',
                'Email': '*****@*****.**',
                'Encoding': 'utf-8',
                'shpparam1': 'None',
                'shpparam2': 'None'
            })

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin=test_login&OutSum=100.0&InvId=58" \
        "&Desc=%D0%A5%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA+%22%D0%91%D0%B8%D1%80%D1%8E%D1%81%D0%B0%22" \
        "&SignatureValue=0EC23BE40003640B35EC07F6615FFB57&Email=vasia%40example.com&Encoding=utf-8&shpparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#22
0
class RobokassaFormTest(TestCase):

    def setUp(self):
        self.form = RobokassaForm(initial = {
                       'OutSum': 100.00,
                       'InvId': 58,
                       'Desc' : u'Холодильник "Бирюса"',
                       'Email' : '*****@*****.**'
                    })

    def testSignature(self):
        self.assertEqual(self.form._get_signature_string(),
                         '%s:100.0:58:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial = {'InvId': 5})
        self.assertEqual(form._get_signature_string(),
                         '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))

    def testGetRedirectParams(self):
        self.assertEqual(
            dict(self.form.get_redirect_params()),
            {
                'MrchLogin': '******',
                'OutSum': '100.0',
                'InvId': '58',
                'Desc': 'Холодильник "Бирюса"',
                'SignatureValue': '0EC23BE40003640B35EC07F6615FFB57',
                'Email': '*****@*****.**',
                'Encoding': 'utf-8',
                'shpparam1': 'None',
                'shpparam2': 'None'
            }
        )

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin=test_login&OutSum=100.0&InvId=58" \
        "&Desc=%D0%A5%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA+%22%D0%91%D0%B8%D1%80%D1%8E%D1%81%D0%B0%22" \
        "&SignatureValue=0EC23BE40003640B35EC07F6615FFB57&Email=vasia%40example.com&Encoding=utf-8&shpparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#23
0
def pay(request, id):
	order = Order.objects.get(id=id)

	CURRENCY = getattr(settings, 'ROBOKASSA_CURRENCY', False)

	if CURRENCY:
		valute = Valute.objects.get(slug=settings.ROBOKASSA_CURRENCY.lower())
		amount = order.retail_price_with_discount / valute.rate
	else:
		amount = order.retail_price_with_discount

	robokassa_form = RobokassaForm(initial={
		'OutSum': amount,
		'InvId': order.id,
		'Desc': 'Order #%s' % order.id,
		'Email': order.email,
		'Encoding': 'utf8',
		'Culture': 'ru'
	})

	return redirect(robokassa_form.get_redirect_url())
示例#24
0
def robokassa_redirect(request, basket_num, amount, **kwargs):
    """ This will be called from PaymentDetailsView.handle_payment,
    it supposed to generate url for Robokassa, inject it into RedirectRequired
    error and raise it
    We also have to save the session and to use its number as parameter
    """
    initial={'OutSum': amount, 'InvId': basket_num}
    for key in kwargs:
        if key in EXTRA_PARAMS or key in OPTIONAL_PARAMS:
            initial[key] = kwargs[key]

    session = request.session
    session.save()
    if session.session_key is not None:
        initial['session_key'] = session.session_key
    else:
        log.error('session_key is empty')

    form = RobokassaForm(initial=initial)
    err = RedirectRequired(form.get_redirect_url())
    raise err
示例#25
0
def robokassa_redirect(request, basket_num, amount, **kwargs):
    """ This will be called from PaymentDetailsView.handle_payment,
    it supposed to generate url for Robokassa, inject it into RedirectRequired
    error and raise it
    We also have to save the session and to use its number as parameter
    """
    initial = {'OutSum': amount, 'InvId': basket_num}
    for key in kwargs:
        if key in EXTRA_PARAMS or key in OPTIONAL_PARAMS:
            initial[key] = kwargs[key]

    session = request.session
    session.save()
    if session.session_key is not None:
        initial['session_key'] = session.session_key
    else:
        log.error('session_key is empty')

    form = RobokassaForm(initial=initial)
    err = RedirectRequired(form.get_redirect_url())
    raise err
示例#26
0
def pay_with_robokassa(request):
    form = RobokassaForm(
        initial={
            'OutSum': '100.00',
            'InvId': '1',
            'Desc': 'Some item',
            'Email': request.user.email or '*****@*****.**',

            # 'UserId': request.user.pk,
            # 'SiteId': 1
        })

    return render(request, 'robokassa/form.html', {'form': form})
示例#27
0
 def get_context_data(self, **kwargs):
     context = super(SubscribeView, self).get_context_data(**kwargs)
     payment_id = self.request.session.get('payment')
     payment = get_object_or_404(Payment, pk=payment_id)
     if not self.form:
         self.form = RobokassaForm(initial={
             'OutSum': payment.sum,
             'InvId': payment.pk,
             'Desc': payment.description,
             'Culture': 'ru'
         })
     context['form'] = self.form
     return context
示例#28
0
def pay_with_robokassa(request, order_id):
    order = get_object_or_404(Order, pk=order_id)

    form = RobokassaForm(
        initial={
            'OutSum': order.total,
            'InvId': order.id,
            'Desc': order.name,
            'Email': request.user.email,
            # 'IncCurrLabel': '',
            # 'Culture': 'ru'
        })

    return render(request, 'app/pay_with_robokassa.html', {'form': form})
示例#29
0
def pay_with_robokassa(request, order_id):
    order = get_object_or_404(Order, pk=order_id)

    form = RobokassaForm(
        initial={
            "OutSum": order.total,
            "InvId": order.id,
            "Desc": order.name,
            "Email": request.user.email,
            # 'IncCurrLabel': '',
            # 'Culture': 'ru'
        })

    return render(request, "app/pay_with_robokassa.html", {"form": form})
示例#30
0
class RobokassaCustomCredentialFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(
            initial={
                'OutSum': 100.00,
                'InvId': 58,
                'Desc': u'Холодильник "Бирюса"',
                'Email': '*****@*****.**'
            },
            login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2
        )

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            '%s:100.0:58:%s:shpparam1=None:shpparam2=None' % (
                CUSTOM_LOGIN, CUSTOM_PASS1)
        )
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(
            initial={'InvId': 5},
            login=CUSTOM_LOGIN, password1=CUSTOM_PASS1, password2=CUSTOM_PASS2)
        self.assertEqual(
            form._get_signature_string(),
            '%s::5:%s:shpparam1=None:shpparam2=None' % (
                CUSTOM_LOGIN, CUSTOM_PASS1)
        )

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin="******"test_login2&OutSum=100.0&InvId=58&Desc=%D5%EE%EB%EE%E4%E8%" \
              "EB%FC%ED%E8%EA+%22%C1%E8%F0%FE%F1%E0%22&SignatureValue=659" \
              "9E0D576E94D4E8616A40B16B8288F&Email=vasia%40example.com&sh" \
              "pparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#31
0
class RobokassaCustomCredentialFormTest(TestCase):
    def setUp(self):
        self.form = RobokassaForm(initial={
            'OutSum': 100.00,
            'InvId': 58,
            'Desc': u'Холодильник "Бирюса"',
            'Email': '*****@*****.**'
        },
                                  login=CUSTOM_LOGIN,
                                  password1=CUSTOM_PASS1,
                                  password2=CUSTOM_PASS2)

    def testSignature(self):
        self.assertEqual(
            self.form._get_signature_string(),
            '%s:100.0:58:%s:shpparam1=None:shpparam2=None' %
            (CUSTOM_LOGIN, CUSTOM_PASS1))
        self.assertEqual(len(self.form.fields['SignatureValue'].initial), 32)

    def testSignatureMissingParams(self):
        form = RobokassaForm(initial={'InvId': 5},
                             login=CUSTOM_LOGIN,
                             password1=CUSTOM_PASS1,
                             password2=CUSTOM_PASS2)
        self.assertEqual(
            form._get_signature_string(),
            '%s::5:%s:shpparam1=None:shpparam2=None' %
            (CUSTOM_LOGIN, CUSTOM_PASS1))

    def testRedirectUrl(self):
        url = "https://merchant.roboxchange.com/Index.aspx?MrchLogin="******"test_login2&OutSum=100.0&InvId=58&Desc=%D5%EE%EB%EE%E4%E8%" \
              "EB%FC%ED%E8%EA+%22%C1%E8%F0%FE%F1%E0%22&SignatureValue=659" \
              "9E0D576E94D4E8616A40B16B8288F&Email=vasia%40example.com&sh" \
              "pparam1=None&shpparam2=None"
        self.assertEqual(self.form.get_redirect_url(), url)
示例#32
0
def payment(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login/')  #TODO:перенести в одно место

    form = RobokassaForm(
        initial={
            'OutSum': 900,  #order.total,
            'InvId': request.user.id + int(time.time()),  #order.id,
            'Desc': 'Premium аккаунт Heliard',  #order.name,
            'Email': request.user.email,
            'user': request.user.id
            # 'IncCurrLabel': '',
            # 'Culture': 'ru'
        })
    return render(request, 'robokassa/payment.html', {
        'request': request,
        'form': form
    })
示例#33
0
 def post(self, *args, **kwargs):
     order_pk = self.request.session['order_pk']
     order = Order.objects.get(pk=order_pk, is_ordered=False)
     amount = order.get_total_order_price()
     print(amount)
     form = RobokassaForm(initial={
         'OutSum': amount,
         'InvId': order_pk,
         'Desc': 'Тестовая оплата',
         'IsTest': 1,
         'MerchantLogin': '******',
         'Pass1': 's6pS1LpEhZO0m6iWHT4i',
         'SignatureValue': 'U4aTMmo8mF4dIhHP5hJ9',
     })
     context = {
         'form': form,
     }
     return render(self.request, 'cart/payment_robokassa.html', context)
示例#34
0
    def likeAPro(request):
        from robokassa.forms import RobokassaForm
        userFee = Fee.objects.filter(user=request.user).order_by('-id')
        c = RequestContext(request)
        fee = userFee.aggregate(Sum('value'))['value__sum'] or 0
        feeLatId = userFee[0].id if userFee else None
        if feeLatId:
            form = RobokassaForm(
                initial={
                    'OutSum': fee,  # order.total,
                    'InvId': feeLatId,  # order.id,
                    'Desc': 'Пополнение счета Heliard',  # order.name,
                    'Email': request.user.email,
                    'user': request.user.id,
                    'request': ''
                })
            c.update({'fee': fee, 'form': form})

        return HttpResponse(loader.get_template('main/pro.html').render(c))
示例#35
0
 def testSignatureMissingParams(self):
     form = RobokassaForm(initial = {'InvId': 5})
     self.assertEqual(form._get_signature_string(),
                      '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))
示例#36
0
 def testSignatureMissingParams(self):
     form = RobokassaForm(initial={'InvId': 5})
     self.assertEqual(
         form._get_signature_string(),
         '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))
示例#37
0
文件: views.py 项目: greenteamer/tai
def receipt_view(request, template_name='checkout/receipt.html'):
    """Представление отображающее сделанный заказ"""
    request.breadcrumbs(u'Подтверждение данных', request.path_info)

    order_id = request.session.get('order_id', '')
    if order_id:
        # если в cookies есть номер заказа, выводим его содержимое
        order = Order.objects.get(id=order_id)
        order_items = OrderItem.objects.filter(order=order)

        delivery = order.delivery

        total = order.total
        if request.user.username == 'admin':
            total = 1

        if order.payment_method == 2:
            form = RobokassaForm(initial={
                'OutSum': total,
                'InvId': order.id,
            })

        else:
            """на данный момент следующий код не работает потому
             что отключена возможность выбора способа оплаты"""
            """отправка писем"""
            items = ''
            for item in order_items:
                items = items + '%s \n' % item.name
            if order.payment_method == 1:
                payment_method = u'Оплата на карту'
            else:
                payment_method = u'Оплата онлайн'
            subject = u'polythai.ru заявка от %s' % order.shipping_name
            message = u'Номер транзакции №: %s \n Имя: %s \n телефон: %s \n \
                почта: %s \n id заказа: %s \n Товары: %s \n %s \n \
                Тип доставки: %s \n Вес доставки: %s \n Адрес: %s \n \
                Стоимость доставки: %s \n Общая стоимость: %s \n \
                ссылка на заказ : http://polythai.ru%s' % (
                order.transaction_id, order.shipping_name, order.phone,
                order.email, order.id, items, payment_method,
                delivery.delivery_type, delivery.weight,
                order.shipping_address_1, delivery.delivery_price, order.total,
                order.get_absolute_url())

            send_mail(subject,
                      message,
                      '*****@*****.**', [ADMIN_EMAIL],
                      fail_silently=False)

            context_dict = {
                'transaction': order.transaction_id,
                'id': order.id,
                'items': items,
                'total': order.total,
                'payment_method': payment_method,
            }

            message = render_to_string('checkout/email_1.html', context_dict)
            from_email = '*****@*****.**'
            to = '%s' % order.email
            msg = EmailMultiAlternatives(subject, message, from_email, [to])
            msg.content_subtype = "html"
            msg.send()

            cupon_done = Cupon.objects.get(id=order.cupon.id)
            cupon_done.percent = '0'
            cupon_done.save()

            price_order = '%s' % order.total
            price_order = price_order.split(".")

            template_name = 'checkout/receipt_print.html'

        if request.POST == 'POST':
            del request.session['order_id']

    else:
        # иначе перенаправляем пользователя на страницу корзины
        cart_url = urlresolvers.reverse('show_cart')
        return HttpResponseRedirect(cart_url)

    return render_to_response(template_name,
                              locals(),
                              context_instance=RequestContext(request))