From bad5be71815ce14465896a9e80295189f1a8f406 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 14 Nov 2017 11:15:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=AF=D0=BD=D0=B4=D0=B5=D0=BA=D1=81=20=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D1=8C=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finance/signals.py | 13 +++++++++++-- finance/tasks.py | 27 --------------------------- finance/urls.py | 2 ++ finance/views.py | 23 +++++++++++++++++++++++ 4 files changed, 36 insertions(+), 29 deletions(-) delete mode 100644 finance/tasks.py diff --git a/finance/signals.py b/finance/signals.py index d8b39af..54091ea 100644 --- a/finance/signals.py +++ b/finance/signals.py @@ -1,4 +1,4 @@ -from finance.tasks import send_to_yandex +from django.core.mail import send_mail from django.db.models.signals import pre_save from django.dispatch import receiver @@ -9,4 +9,13 @@ from finance.models import Invoice def delete_dependencies(instance, **kwargs): """Отправка сообщения после сохранения платежа""" if instance.yandex_pay and instance.method == 'Y' and instance.status == 'P': - send_to_yandex.delay(**instance.yandex_pay.__dict__) + body = { + "subject": 'Спасибо за регистрацию', + "message": '''Вам выставлен счёт, для оплаты перейдите по ссылке /api/v1/finance/payment/%s/''' % instance.yandex_pay.id, + "from_email": 'robo@skillbox.ru', + "recipient_list": [instance.yandex_pay.cps_email], + } + + send_mail( + **body + ) diff --git a/finance/tasks.py b/finance/tasks.py deleted file mode 100644 index d417544..0000000 --- a/finance/tasks.py +++ /dev/null @@ -1,27 +0,0 @@ -from __future__ import absolute_import, unicode_literals -from celery import shared_task -import requests -from django.core.mail import send_mail - - -@shared_task -def send_to_yandex(**pay): - r = requests.post('https://money.yandex.ru/eshop.xml', data={ - 'shopId': pay['shop_id'], - 'scid': pay['scid'], - 'sum': pay['order_amount'], - 'customerNumber': pay['customer_number'], - 'orderNumber': pay['order_number'], - 'cps_email': pay['cps_email'], - }) - body = { - "subject": 'Спасибо за регистрацию', - "message": '''Вам выставлен счёт, для оплаты перейдите по ссылке %s''' % r.url, - "from_email": 'robo@skillbox.ru', - "recipient_list": [pay['cps_email']], - } - - send_mail( - **body - ) - return r.url diff --git a/finance/urls.py b/finance/urls.py index 8bc8fc2..dcf4465 100644 --- a/finance/urls.py +++ b/finance/urls.py @@ -3,5 +3,7 @@ from finance import views urlpatterns = [ url(r'bills/([0-9]{1,99})/$', views.BillDetailView.as_view()), + url(r'payment/([0-9]{1,99})/$', views.YandexPay.as_view()), url(r'bills/$', views.BillListView.as_view()), + ] \ No newline at end of file diff --git a/finance/views.py b/finance/views.py index 69a1676..9576179 100644 --- a/finance/views.py +++ b/finance/views.py @@ -6,11 +6,13 @@ from rest_framework.views import APIView from rest_framework.renderers import JSONRenderer from rest_framework.response import Response from django.db.models import Q +from django.shortcuts import redirect from yandex_money.models import Payment from finance.models import Bill, Invoice from finance.serializers import BillSerializer, InvoiceSerializer from lms.tools import get_real_name +import requests class BillListView(APIView): @@ -93,3 +95,24 @@ class BillDetailView(APIView): return Response("Permission denied", status=403) +class YandexPay(APIView): + renderer_classes = (JSONRenderer,) + + @staticmethod + def get(request, pk): + try: + pay = Payment.objects.get(id=pk) + r = requests.post('https://money.yandex.ru/eshop.xml', data={ + 'shopId': pay['shop_id'], + 'scid': pay['scid'], + 'sum': pay['order_amount'], + 'customerNumber': pay['customer_number'], + 'orderNumber': pay['order_number'], + 'cps_email': pay['cps_email'], + }) + return redirect(r.url) + + except Payment.DoesNotExist: + return Response('Payment not found', status=404) + +