diff --git a/src/customer/consts.py b/src/customer/consts.py index 51db476..42f252c 100644 --- a/src/customer/consts.py +++ b/src/customer/consts.py @@ -28,7 +28,7 @@ PAYFORMS = ( (-2, 'Бонусная'), (-1, 'Бесплатно'), (0, 'Безналичный расчёт'), - (1, 'Банковская карта'), + (1, 'Карта, электронные деньги, наличные'), ) TERMS = ( diff --git a/src/customer/views/license.py b/src/customer/views/license.py index 7794da3..2391207 100644 --- a/src/customer/views/license.py +++ b/src/customer/views/license.py @@ -6,11 +6,13 @@ import itertools from django.db.models import Count from django.shortcuts import render, redirect, get_object_or_404 -from django.http import (HttpResponseForbidden, HttpResponse, HttpResponseBadRequest) +from django.http import ( + # HttpResponseForbidden, + HttpResponse, HttpResponseBadRequest) from django.conf import settings -from django.views.decorators.csrf import csrf_exempt +# from django.views.decorators.csrf import csrf_exempt from django.contrib.auth.decorators import login_required -from django.template.response import TemplateResponse +# from django.template.response import TemplateResponse from django.core.urlresolvers import reverse from django.views.decorators.csrf import csrf_protect from robokassa.forms import RobokassaForm @@ -49,7 +51,29 @@ def order_license(request): user=request.user, type=1 ) - return redirect(reverse('payment_robokassa', kwargs={'payment_id': payment.id})) + + login = settings.ROBOKASSA_LOGIN + inv_id = payment.pk + out_summ = format(payment.order_amount, '.2f') + desc = 'Оплата лицензии Dokumentor.ru' + site = 'https://auth.robokassa.ru/Merchant/Index.aspx' + signature = hashlib.md5( + f'{login}:{out_summ}:{inv_id}:{settings.ROBOKASSA_PASSWORD1}'.encode("ascii") + ).hexdigest().upper() + + params = f'?MerchantLogin={login}' \ + f'&SignatureValue={signature}' \ + f'&InvId={inv_id}' \ + f'&OutSum={out_summ}' \ + f'&InvDesc={desc}' \ + f'&Email={payment.user.email}' \ + f'&Culture=ru' + + if settings.DEBUG: + params += f'&isTest=1' + url = f'{site}{params}' + + return redirect(url) if form.cleaned_data['payform'] == '0': Payment.objects.create( @@ -114,51 +138,51 @@ def delete_license(request, pk): return HttpResponse(data, content_type='application/json') -@csrf_exempt -def payment_result(request): - if request.method == 'POST': - try: - nInvId = request.POST.get('InvId') - - nOutSum = request.POST.get('OutSum') - sSignatureValue = request.POST.get('SignatureValue') - SignatureValue = hashlib.md5('%s:%s:%s' % (nOutSum, nInvId, - settings.ROBOKASSA_PASSWORD2)).hexdigest() - if sSignatureValue.upper() == SignatureValue.upper(): - license = License.objects.get(pk=nInvId) - license.status = 1 - license.save() - return HttpResponse('OK%s' % nInvId) - else: - return HttpResponse('bad sign') - except License.DoesNotExist: - return HttpResponseForbidden() - else: - return HttpResponseForbidden() - - -@csrf_exempt -def payment_success(request): - nInvId = request.GET.get('orderNumber') - # order = License.objects.get(pk=nInvId) - context = {'success': True, 'order_num': nInvId} - return TemplateResponse(request, 'customer/profile/end_order.html', context) - - -@csrf_exempt -def payment_fail(request): - try: - # nInvId = request.GET.get('') - - message = u"Возникла проблема. Ваш Заказ не оплачен. " \ - u"Попробуйте оформить заявку снова, или позвоните по номеру." - - return TemplateResponse( - request, - 'customer/profile/end_order.html', - {'message': message, 'success': False}) - except: - return HttpResponseForbidden() +# @csrf_exempt +# def payment_result(request): +# if request.method == 'POST': +# try: +# nInvId = request.POST.get('InvId') +# +# nOutSum = request.POST.get('OutSum') +# sSignatureValue = request.POST.get('SignatureValue') +# SignatureValue = hashlib.md5('%s:%s:%s' % (nOutSum, nInvId, +# settings.ROBOKASSA_PASSWORD2)).hexdigest() +# if sSignatureValue.upper() == SignatureValue.upper(): +# license = License.objects.get(pk=nInvId) +# license.status = 1 +# license.save() +# return HttpResponse('OK%s' % nInvId) +# else: +# return HttpResponse('bad sign') +# except License.DoesNotExist: +# return HttpResponseForbidden() +# else: +# return HttpResponseForbidden() + + +# @csrf_exempt +# def payment_success(request): +# nInvId = request.GET.get('orderNumber') +# # order = License.objects.get(pk=nInvId) +# context = {'success': True, 'order_num': nInvId} +# return TemplateResponse(request, 'customer/profile/end_order.html', context) +# +# +# @csrf_exempt +# def payment_fail(request): +# try: +# # nInvId = request.GET.get('') +# +# message = u"Возникла проблема. Ваш Заказ не оплачен. " \ +# u"Попробуйте оформить заявку снова, или позвоните по номеру." +# +# return TemplateResponse( +# request, +# 'customer/profile/end_order.html', +# {'message': message, 'success': False}) +# except: +# return HttpResponseForbidden() @login_required