Initial commit

master
Anton 2021-04-08 17:44:37 +03:00
commit 620304a3ea
1 changed files with 89 additions and 0 deletions

89
qiwi_module.py Normal file
View File

@ -0,0 +1,89 @@
# Qiwi module v1.00
# 21/08/2020
# https://t.me/ssleg © 2020
import requests
import logging
headers = {
'accept': 'application/json',
'content-type': 'application/json',
'Authorization': 'Bearer xxxxxx' # ваш секретный ключ из личного кабинета
}
url = 'https://api.qiwi.com/partner/bill/v1/bills/'
# создание платежа. на входе; сумма (число), номер заказа (текст, идет в комментарий к платежу)
# номер счета (текст, любой уникальный счетчик) и str(datetime) формата 2020-08-21 10:34:22
# на выходе возвращает URL формы оплаты для клиента.
def create_bill(summa, order_num, bill_num, exp_datetime):
am = {'currency': 'RUB', 'value': '{:.2f}'.format(summa)}
exp = exp_datetime.replace(' ', 'T') + '+03:00'
# персональная форма платежа, может не использоваться
# cust = {'themeCode': 'ваш код формы из личного кабинета'}
rdata = {'amount': am, 'expirationDateTime': exp, 'comment': order_num} # , 'customFields': cust}
rurl = url + bill_num
try:
response = requests.put(rurl, json=rdata, headers=headers, timeout=5)
cod = response.status_code
res = response.json()
if cod == 200:
return res.get('payUrl')
else:
levent = 'qiwi server error (create bill). code - ' + str(cod) + ', response - ' + str(res)
logging.error(levent)
return 'error'
except Exception as e:
levent = 'protocol error (create bill): ' + str(e)
logging.error(levent)
return 'error'
# проверка статуса платежа,на входе его номер (текст), на выходе статус из документации.
# можно вызывать 1 раз в секунду и реже.
def bill_status(bill_num):
rurl = url + bill_num
try:
response = requests.get(rurl, headers=headers, timeout=5)
cod = response.status_code
res = response.json()
if cod == 200:
status = res.get('status')
return status.get('value')
else:
levent = 'qiwi server error (bill status). code - ' + str(cod) + ', response - ' + str(res)
logging.error(levent)
return 'error'
except Exception as e:
levent = 'protocol error (bill status): ' + str(e)
logging.error(levent)
return 'error'
# отмена счета, на входе его номер (текст).
# в случае успеха возвращает REJECTED
def cancel_bill(bill_num):
rurl = url + bill_num + '/reject'
try:
response = requests.post(rurl, headers=headers, timeout=5)
cod = response.status_code
res = response.json()
if cod == 200:
status = res.get('status')
return status.get('value')
else:
levent = 'qiwi server error (cancel bill). code - ' + str(cod) + ', response - ' + str(res)
logging.error(levent)
return 'error'
except Exception as e:
levent = 'protocol error (cancel bill): ' + str(e)
logging.error(levent)
return 'error'