@Ivan1lion

Почему не срабатывает обработчик @for_user_router.message(F.successful_payment) успешного платежа SuccessfulPayment через Telegram API?

Помогите пожалуйста (уже все перепробовал). Платежи проходят, деньги списываются - всё отлично. Появляется всплывающее сообщение в боте что мол вы оплатили услугу. НО!

Не приходят уведомления о статусе платежа (или я не могу их отловить обработчиком)

pre_checkout_query срабатывает без проблем (платёж проходит):

@for_user_router.pre_checkout_query(lambda query: True)
async def pre_checkout_query(pre_checkout_query: PreCheckoutQuery, bot: Bot):
    await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)

и возвращает (function successful_payment at 0x000001EC4A563920)

А вот этот обработчик не срабатывает:

@for_user_router.message(F.successful_payment)
async def successful_payment(message: Message, state: FSMContext, session: AsyncSession()):
    await bot.send_message(message.chat.id, f"Thanks! Payment was successful, "
                                            f"id: {message.successful_payment.provider_payment_charge_id}")


Кто знает, кто сталкивался с этим напишите пожалуйста

upd.

Вопрос вроде как решен (спасибо тебе Михаил Гок), но для этого пришлось регистрировать хэндлер в главном файле app.py через dispatcher, а не через РОУТЕР как все остальные обработчики
667d0c23490da223490913.png

Вопрос, почему все хэндлеры через РОУТЕР работают например:
@for_user_router.pre_checkout_query(lambda query: True)

или
@for_user_router.message(CommandStart())
, а вот проверка успешного платежа
@for_user_router.message(F.successful_payment) не работает?

Буду благодарен каждому за пояснение данного вопроса
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
mihailgok
@mihailgok
Фронтенд-разработчик, филантроп
Попробуйте не через router а через dispatcher

dp = Dispatcher()
....
@dp.message(F.successful_payment)
async def star_payment(msg: Message, bot: Bot):
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы