Прием платежей через телеграмм бот (ЮМАНИ)

Друзья поделитесь знаниями. Топчусь на одном месте, не могу задачку решить. Делаю прием платежей в боте телеграмм. Проблема в том, что после ввода номера карты о нажатии на кнопку оплатить бот зависает секунд на 10 (видимо именно это врем дается на ответ запроса телеграмм) и появляется ошибка: BOT_PRECHECKOUT_TIMEOUT

Фрагменты кода.

При нажатии пользователем на определенную кнопку направляю инфойс на оплату:

await bot.send_invoice(callback.message.chat.id, 'Текст1', 'Текст2', 'invoice', payment_token,'RUB', [types.LabeledPrice('Оплата справки1', 100 * 100)])

Начитавшись (конечно громко сказано) всякой документации понял, что когда пользователь нажимает "Оплатить", бот получает от телеграма запрос предпроверки (pre_checkout_query). Бот должен ответить на этот запрос, используя метод answerPreCheckoutQuery, чтобы подтвердить, что все детали платежа корректны.

Тут собственно пытаюсь словить запрос и ответить на него:

@dp.pre_checkout_query_handler(lambda query: True)
async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery):
    await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)

Ну и если бы платеж проходил успешно, то сообщал бы пользователю:

@dp.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT)
async def payment(message: types.Message):
    await message.answer(f'Оплата прошла. Подробности: {message.successful_payment.order_info}')

Что делаю не так? С удовольствием приму любые советы, помощь, критику.


Ответы (0 шт):