Merge branch 'dev' into 'master'

Dev

See merge request !410
master
Вадим Шандринов 8 years ago
commit 493e5decc8
  1. 0
      finance/management/__init__.py
  2. 44
      finance/management/commands/yandex_repeat_payment.py
  3. 72
      finance/tasks.py

@ -0,0 +1,44 @@
from django.core.management.base import BaseCommand
import os
import requests
from dateutil.relativedelta import relativedelta
from yandex_money.models import Payment
from finance.models import InvoiceRebilling
from django.conf import settings
from django.utils import timezone
class Command(BaseCommand):
def handle(self, *args, **options):
print('Started')
invoices = InvoiceRebilling.objects.filter(method='Y').exclude(status='F')
for invoice in invoices.filter(
expected_date__gt=timezone.now(), expected_date__lt=timezone.now() + relativedelta(days=1)):
print('invoice', invoice)
user = invoice.bill.user
yandex_pay = Payment.objects.create(
order_amount=invoice.price,
customer_number=user.id,
user=user,
cps_email=user.email
)
invoice.yandex_pay = yandex_pay
invoice.save()
resp = requests.post(
settings.YANDEX_MONEY_MWS_URL + 'repeatCardPayment',
data={
'clientOrderId': invoice.id, # уникальное возрастающее целое число
'invoiceId': invoice.key,
'amount': invoice.price,
'orderNumber': invoice.yandex_pay.order_number
},
cert=(
os.path.join(settings.SSL_ROOT, 'skillbox.cer'),
os.path.join(settings.SSL_ROOT, 'skillbox.key')
),
verify=os.path.join(settings.SSL_ROOT, 'yamoney_chain.cer')
)
print(resp)

@ -15,45 +15,43 @@ logger_yandex = logging.getLogger('yandex_money')
@celery_app.task @celery_app.task
def periodic_billing(): def periodic_billing():
logger_yandex.info("start periodic billing task")
invoices = InvoiceRebilling.objects.filter(method='Y').exclude(status='F')
for invoice in invoices.filter(
expected_date__gt=timezone.now(), expected_date__lt=timezone.now() + relativedelta(days=1)):
user = invoice.bill.user
yandex_pay = Payment.objects.create(
order_amount=invoice.price,
customer_number=user.id,
user=user,
cps_email=user.email
)
invoice.yandex_pay = yandex_pay
invoice.save()
repeat_card_payment(invoice)
def repeat_card_payment(invoice):
try: try:
resp = requests.post(settings.YANDEX_MONEY_MWS_URL + 'repeatCardPayment', logger_yandex.info("start periodic billing task")
data={ invoices = InvoiceRebilling.objects.filter(method='Y').exclude(status='F')
'clientOrderId': invoice.id, # уникальное возрастающее целое число
'invoiceId': invoice.key, for invoice in invoices.filter(
'amount': invoice.price, expected_date__gt=timezone.now(), expected_date__lt=timezone.now() + relativedelta(days=1)):
'orderNumber': invoice.yandex_pay.order_number
}, user = invoice.bill.user
cert=( yandex_pay = Payment.objects.create(
os.path.join(settings.SSL_ROOT, 'skillbox.cer'), order_amount=invoice.price,
os.path.join(settings.SSL_ROOT, 'skillbox.key') customer_number=user.id,
), user=user,
verify=os.path.join(settings.SSL_ROOT, 'yamoney_chain.cer')) cps_email=user.email
)
invoice.yandex_pay = yandex_pay
invoice.save()
repeat_card_payment(invoice)
except Exception as exc: except Exception as exc:
logger_yandex.error('periodic billing Exception', exc_info=True, extra={ logger_yandex.error('periodic billing Exception', exc_info=True, extra={
'exc': exc 'exc': exc
}) })
else:
logger_yandex.info('periodic billing finish', exc_info=True, extra={
'response': resp.text def repeat_card_payment(invoice):
}) resp = requests.post(settings.YANDEX_MONEY_MWS_URL + 'repeatCardPayment',
data={
'clientOrderId': invoice.id, # уникальное возрастающее целое число
'invoiceId': invoice.key,
'amount': invoice.price,
'orderNumber': invoice.yandex_pay.order_number
},
cert=(
os.path.join(settings.SSL_ROOT, 'skillbox.cer'),
os.path.join(settings.SSL_ROOT, 'skillbox.key')
),
verify=os.path.join(settings.SSL_ROOT, 'yamoney_chain.cer'))
logger_yandex.info('periodic billing finish', exc_info=True, extra={
'response': resp.text
})

Loading…
Cancel
Save