Яндекс деньги

feature/fix_generate_pass
Andrey 8 years ago
parent dad77389d6
commit bad5be7181
  1. 13
      finance/signals.py
  2. 27
      finance/tasks.py
  3. 2
      finance/urls.py
  4. 23
      finance/views.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
)

@ -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

@ -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()),
]

@ -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)

Loading…
Cancel
Save