You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
import logging
|
|
|
|
import os
|
|
import requests
|
|
from yandex_money.models import Payment
|
|
|
|
from finance.models import InvoiceRebilling
|
|
from lms import celery_app
|
|
from django.conf import settings
|
|
|
|
logger_yandex = logging.getLogger('yandex_money')
|
|
|
|
|
|
@celery_app.task
|
|
def periodic_billing():
|
|
logger_yandex.info("start periodic billing task")
|
|
|
|
for invoice in InvoiceRebilling.objects.filter(method='Y').exclude(status='F'):
|
|
|
|
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):
|
|
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(resp.text)
|
|
|