prod
Dmitriy Shesterkin 9 years ago
parent c0b2d71147
commit bd7798a19b
  1. 2
      src/customer/consts.py
  2. 122
      src/customer/views/license.py

@ -28,7 +28,7 @@ PAYFORMS = (
(-2, 'Бонусная'), (-2, 'Бонусная'),
(-1, 'Бесплатно'), (-1, 'Бесплатно'),
(0, 'Безналичный расчёт'), (0, 'Безналичный расчёт'),
(1, 'Банковская карта'), (1, 'Карта, электронные деньги, наличные'),
) )
TERMS = ( TERMS = (

@ -6,11 +6,13 @@ import itertools
from django.db.models import Count from django.db.models import Count
from django.shortcuts import render, redirect, get_object_or_404 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.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.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.core.urlresolvers import reverse
from django.views.decorators.csrf import csrf_protect from django.views.decorators.csrf import csrf_protect
from robokassa.forms import RobokassaForm from robokassa.forms import RobokassaForm
@ -49,7 +51,29 @@ def order_license(request):
user=request.user, user=request.user,
type=1 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': if form.cleaned_data['payform'] == '0':
Payment.objects.create( Payment.objects.create(
@ -114,51 +138,51 @@ def delete_license(request, pk):
return HttpResponse(data, content_type='application/json') return HttpResponse(data, content_type='application/json')
@csrf_exempt # @csrf_exempt
def payment_result(request): # def payment_result(request):
if request.method == 'POST': # if request.method == 'POST':
try: # try:
nInvId = request.POST.get('InvId') # nInvId = request.POST.get('InvId')
#
nOutSum = request.POST.get('OutSum') # nOutSum = request.POST.get('OutSum')
sSignatureValue = request.POST.get('SignatureValue') # sSignatureValue = request.POST.get('SignatureValue')
SignatureValue = hashlib.md5('%s:%s:%s' % (nOutSum, nInvId, # SignatureValue = hashlib.md5('%s:%s:%s' % (nOutSum, nInvId,
settings.ROBOKASSA_PASSWORD2)).hexdigest() # settings.ROBOKASSA_PASSWORD2)).hexdigest()
if sSignatureValue.upper() == SignatureValue.upper(): # if sSignatureValue.upper() == SignatureValue.upper():
license = License.objects.get(pk=nInvId) # license = License.objects.get(pk=nInvId)
license.status = 1 # license.status = 1
license.save() # license.save()
return HttpResponse('OK%s' % nInvId) # return HttpResponse('OK%s' % nInvId)
else: # else:
return HttpResponse('bad sign') # return HttpResponse('bad sign')
except License.DoesNotExist: # except License.DoesNotExist:
return HttpResponseForbidden() # return HttpResponseForbidden()
else: # else:
return HttpResponseForbidden() # return HttpResponseForbidden()
@csrf_exempt # @csrf_exempt
def payment_success(request): # def payment_success(request):
nInvId = request.GET.get('orderNumber') # nInvId = request.GET.get('orderNumber')
# order = License.objects.get(pk=nInvId) # # order = License.objects.get(pk=nInvId)
context = {'success': True, 'order_num': nInvId} # context = {'success': True, 'order_num': nInvId}
return TemplateResponse(request, 'customer/profile/end_order.html', context) # return TemplateResponse(request, 'customer/profile/end_order.html', context)
#
#
@csrf_exempt # @csrf_exempt
def payment_fail(request): # def payment_fail(request):
try: # try:
# nInvId = request.GET.get('') # # nInvId = request.GET.get('')
#
message = u"Возникла проблема. Ваш Заказ не оплачен. " \ # message = u"Возникла проблема. Ваш Заказ не оплачен. " \
u"Попробуйте оформить заявку снова, или позвоните по номеру." # u"Попробуйте оформить заявку снова, или позвоните по номеру."
#
return TemplateResponse( # return TemplateResponse(
request, # request,
'customer/profile/end_order.html', # 'customer/profile/end_order.html',
{'message': message, 'success': False}) # {'message': message, 'success': False})
except: # except:
return HttpResponseForbidden() # return HttpResponseForbidden()
@login_required @login_required

Loading…
Cancel
Save