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 })
def setUp(self): self.form = RobokassaForm(initial = { 'OutSum': 100.00, 'InvId': 58, 'Desc' : u'Холодильник "Бирюса"', 'Email' : '*****@*****.**' })
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)
def setUp(self): self.form = RobokassaForm( initial={ "OutSum": 100.00, "InvId": 58, "Desc": 'Холодильник "Бирюса"', "Email": "*****@*****.**", })
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 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 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))
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 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 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})
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
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))
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})
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})
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 })
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)
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))
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
def testSignatureMissingParams(self): form = RobokassaForm(initial={'InvId': 5}) self.assertEqual( form._get_signature_string(), '%s::5:%s:shpparam1=None:shpparam2=None' % (LOGIN, PASSWORD1))
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))