Django платежи Liqpay
Подскажите, пожалуйста, по LiqPay?
Вроде все сделал по инструкции, оплатил товар в тестовом режиме, оплата прошла успешно, но через какое то время мне приходит уведомление на мыло, что я опять успешно оплатил товар.
И как редиректнуть после успешного платежа на главную страницу?
class PayView(TemplateView):
template_name = 'pay.html'
def get(self, request, *args, **kwargs):
if request.user.is_authenticated:
customer = Customer.objects.get(user=request.user)
else:
session_key = request.session.session_key
name = str(session_key)
user = User.objects.filter(username=name).first()
customer = Customer.objects.filter(user=user).first()
orders = Order.objects.filter(customer=customer).order_by('-id')[:1].first()
liqpay = LiqPay(settings.LIQPAY_PUBLIC_KEY, settings.LIQPAY_PRIVATE_KEY)
params = {
'action': 'pay',
'amount': int(orders.cart.final_price) ,
'currency': 'UAH',
'description': 'Payment for clothes',
'version': '3',
'order_id': orders.id ,
'sandbox': 0, # sandbox mode, set to 1 to enable it
'server_url': 'https://mysite123456.herokuapp.com/pay-callback/', # url to callback view
'result_url': 'https://mysite123456.herokuapp.com/',
'Result URL': 'https://mysite123456.herokuapp.com/',
}
signature = liqpay.cnb_signature(params)
data = liqpay.cnb_data(params)
return render(request, self.template_name, {'signature': signature, 'data': data})
@method_decorator(csrf_exempt, name='dispatch')
class PayCallbackView(View):
def post(self, request, *args, **kwargs):
liqpay = LiqPay(settings.LIQPAY_PUBLIC_KEY, settings.LIQPAY_PRIVATE_KEY)
data = request.POST.get('data')
signature = request.POST.get('signature')
sign = liqpay.str_to_sign(settings.LIQPAY_PRIVATE_KEY + data + settings.LIQPAY_PRIVATE_KEY)
# if sign == signature:
response = liqpay.decode_data_from_str(data)
try:
phone = response['sender_phone']
except:
phone = '0'
if phone != '0' and signature == sign:
orders = Order.objects.get(id=response['order_id'])
if response['status'] == 'success':
orders.status_pay = 'pay'
orders.save()
x = 'сумма платежа' + str(response['amount']) + '... response order id===' + response['order_id'] + '--status----' + response['status'] + '--phone'+phone + 'Остальное -------' + str(response)
send_mail('Платеж удачен!',x, "Yasoob",['[email protected]'], fail_silently=False)
if response['status'] == 'failed':
orders.status_pay = 'not_pay'
orders.save()
send_mail('Платеж отклонен!', "Yasoob",['[email protected]'], fail_silently=False)
if response['status'] == 'reversed':
orders.status_pay = 'reversed'
orders.save()
send_mail('Платеж возвращнo', "Yasoob",['[email protected]'], fail_silently=False)
if response['status'] == 'error':
orders.status_pay = 'miss'
orders.save()
send_mail('Платеж ошибка!', "Yasoob",['[email protected]'], fail_silently=False)
else:
pass
result_url = 'https://mysite123456.herokuapp.com/'
success_url = 'https://mysite123456.herokuapp.com/'
return HttpResponse()