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

feature/fix_generate_pass
Andrey 8 years ago
parent cfe1238b67
commit 468317b182
  1. 2
      finance/apps.py
  2. 3
      finance/models.py
  3. 12
      finance/signals.py
  4. 14
      finance/views.py

@ -4,4 +4,4 @@ from django.apps import AppConfig
class FinanceAppConfig(AppConfig):
name = "finance"
verbose_name = "Финансы"
verbose_name = "Финансы"

@ -1,6 +1,8 @@
# coding=utf-8
from django.db import models
from django.conf import settings
from yandex_money.models import Payment
from courses.models import Course, Vertex
@ -47,6 +49,7 @@ class Invoice(models.Model):
help_text='Сумма, минус комиссия')
method = models.CharField(verbose_name='Способ оплаты', max_length=2, default='Y', choices=BILL_METHOD)
key = models.CharField(verbose_name='Ключ платежа', blank=True, max_length=255, null=True)
yandex_pay = models.ForeignKey(to=Payment, blank=True, null=True)
comment = models.TextField(verbose_name='Комментарий продавца', help_text='Будет показано пользователю',
blank=True, editable=False)
bill = models.ForeignKey(to=Bill, verbose_name="Связный счёт")

@ -0,0 +1,12 @@
from finance.tasks import send_to_yandex
from django.db.models.signals import pre_save
from django.dispatch import receiver
from finance.models import Invoice
@receiver(pre_save, sender=Invoice)
def delete_dependencies(instance, **kwargs):
"""Отправка сообщения после сохранения платежа"""
if instance.yandex_pay and instance.method == 'Y' and instance.status == 'P':
send_to_yandex(instance.yandex_pay)

@ -1,7 +1,6 @@
from django.contrib.auth import get_user_model
from courses.models import Course
from finance.tasks import send_to_yandex
from lms.global_decorators import transaction_decorator
from rest_framework.views import APIView
from rest_framework.renderers import JSONRenderer
@ -44,17 +43,18 @@ class BillListView(APIView):
i['method'] = get_real_name(elem=i['method'][0], array=Invoice.BILL_METHOD)
i['status'] = get_real_name(elem=i['status'][0], array=Invoice.BILL_STATUSES)
i['bill'] = bill_obj
invoice, _is_create = Invoice.objects.update_or_create(**i)
invoices = [j for j in invoices if not j.id == invoice.id]
if invoice.method == 'Y' and invoice.status == 'P':
pay, _is_create = Payment.objects.get_or_create(
order_amount=invoice.price,
i['yandex_pay'] = None
if i['method'] == 'Y' and i['status'] == 'P':
i['yandex_pay'], _is_create = Payment.objects.get_or_create(
order_amount=i['price'].price,
order_number=bill_obj.id,
customer_number=bill_obj.user.id,
user=bill_obj.user,
cps_email=bill_obj.user.email,
)
send_to_yandex(pay)
invoice, _is_create = Invoice.objects.update_or_create(**i)
invoices = [j for j in invoices if not j.id == invoice.id]
[i.delete() for i in invoices]

Loading…
Cancel
Save