Оплата с киви telebot?

Всем привет

Такой вопрос как сделать оплату в боте с заранее зафиксированной ценой например 10р
Чтобы после нажатия человеку выдавало ссылку для оплаты, и после перевода чтобы человеку выдавался товар в боте

Библиотека SimpleQiwi
  • Вопрос задан
  • 620 просмотров
Пригласить эксперта
Ответы на вопрос 1
@St3DiTwister
Я не уверен, но вроде как при помощи этой библиотеки нельзя генерировать ссылки для оплаты, но у киви есть подробное и понятное API, которое можно легко использовать. Отправляешь запрос с нужными данными (сумма платежа, а так же данные о том, кто оплачивает счёт), он возвращает тебе ссылку для оплаты, которую уже скидываешь пользователю. После успешной оплаты киви отправляет запрос к тебе на сервер, со всей нужной информацией. Примеры отправляемых заголовков и параметров, которые нужно отправлять киви:
headers = {
        'accept': 'application/json',
        'Authorization': 'Bearer ' + get_from_env('SECRET_QIWI_TOKEN'),
        'content-type': 'application/json',
        'Referrer-Policy': 'no-referrer-when-downgrade'
    }
params = {
        'amount': {'value': amount, 'currency': 'RUB'},
        'comment': db.get_user(user_id)['nickname'],
        'expirationDateTime': date.isoformat(),
        'customer': {'account': str(user_id)}
    }

Запрос отправляется на специальную ссылку, со случайным сгенерированным ID, а потом вытягиваешь из ответа ссылку на оплату:
buildID = os.urandom(16).hex()
url = f'https://api.qiwi.com/partner/bill/v1/bills/{buildID}'
resp = requests.put(url, json=params, headers=headers)
resp.json()['payUrl']

Подробнее, что за поля указаны в параметрах в документации. Я делал таким образом, всё хорошо работало.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы