Ошибка BOT_PRECHECKOUT_TIMEOUT | Интеграция ЮKassa | Telegram Payment API
Инвойс успешно отправляется, ввожу данные карты, а дальше форма оплаты зависает, и выходит ошибка внутри платежной формы BOT_PRECHECKOUT_TIMEOUT, платеж не проходит, сообщения об успехе нет. Я понимаю, что проблема в ответе на вебхук, но никак не могу разобраться. Очень надеюсь на помощь.
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.types import LabeledPrice
TOKEN = ''
PAYMENT_PROVIDER_TOKEN = ''
CURRENCY = 'RUB'
PRICES = [LabeledPrice('Product', 10000)]
logging.basicConfig(level=logging.INFO)
bot = Bot(token=TOKEN)
storage = MemoryStorage()
dispatcher = Dispatcher(bot, storage=storage)
@dispatcher.message_handler(commands=['start'])
async def start_command(message: types.Message):
await message.answer('Привет! Чтобы совершить покупку, введите /buy.')
@dispatcher.message_handler(commands=['buy'])
async def buy_command(message: types.Message):
await message.answer('Вы выбрали покупку. Введите /pay для оплаты.')
@dispatcher.message_handler(commands=['pay'])
async def pay_command(message: types.Message):
title = 'Product'
description = 'Описание продукта'
payload = 'custom_payload'
invoice = await bot.send_invoice(
chat_id=message.chat.id,
title=title,
description=description,
payload=payload,
provider_token=PAYMENT_PROVIDER_TOKEN,
start_parameter='invoice',
currency=CURRENCY,
prices=PRICES
)
if invoice:
await storage.update_data(chat=message.chat.id, data={"invoice_message_id": invoice.message_id})
@dispatcher.pre_checkout_query_handler()
async def pre_checkout_query_handler(query: types.PreCheckoutQuery):
await bot.answer_pre_checkout_query(query.id, ok=True)
@dispatcher.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT)
async def successful_payment_handler(message: types.Message):
data = await storage.get_data(chat=message.chat.id)
if 'invoice_message_id' in data and data['invoice_message_id'] == message.reply_to_message.message_id:
await message.answer('Спасибо за покупку! Платеж успешно обработан.')
# Выполните необходимые действия после успешного платежа
else:
await message.answer('Произошла ошибка при обработке платежа. Попробуйте еще раз.')
def main():
from aiogram import executor
executor.start_polling(dispatcher)
if __name__ == '__main__':
main()
Источник: Stack Overflow на русском