Не срабатывает хендлер pre_checkout_query() Как исправить?
После ввода данных карточки и клика на "заплатить" платежный шлюз закрывается, а модульное окно инвойса от телеграма нет. И дальше - тишина.
Хендлеры @router.pre_checkout_query() и @router.message(F.successful_payment) не срабатывают
Что исправить в коде чтоб заработало?
"""Этот хендлер выставляет счета и показывает окно ввода карты"""
@router.callback_query((F.data == 'button_12_1_pressed')|
(F.data == 'button_13_pressed')|
(F.data == 'button_11_pressed'))
async def process_payment(callback: CallbackQuery, bot):
pass
elif callback.data == 'button_11_pressed':
await bot.delete_message(callback.from_user.id, callback.message.message_id)
await bot.send_invoice(chat_id=user_id_tg, title='Оформление подписки за 999',
description='Описание подписки за 999', payload='month sub 999',
provider_token='381764678:TEST:74022', currency='RUB',
start_parameter='test_999',
prices=[{'label':'руб.', 'amount':99900}])
print(f'из button_11_pressed {callback.model_dump_json(indent=4, exclude_none=True)}')
# подтвердить наличие товара
@router.pre_checkout_query()
async def pre_checkout_query_handler(pre_checkout_query: PreCheckoutQuery, bot):
print('подтверждаем')
await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)
print('подтвердили')
# успешный платеж
@router.message(F.successful_payment)
async def success_pay(message: Message):
user_id_tg = message.from_user.id
if message.successful_payment.invoice_payload == 'month sub 999':
user_id_tg = message.from_user.id
await message.answer(user_id_tg, text='Вы подписались за 999')
Ответы (1 шт):
Автор решения: Ткаченко Ігор
→ Ссылка
Сталкивался с подобной проблемой, решилась она следующим способом:
@router.pre_checkout_query(
lambda query: True
)