Задать вопрос
@makarovSoftware

Не проходит оплата Telegram Stars (aiogram)?

Пытаюсь прикрутить к боту оплату через Stars (бот пишу впервые, никакой оплаты раньше не делал). Использую aiogram 3.18.0, бот на вебхуках. Появляется сообщение-подтверждение об оплате, но после нажатия на кнопку "оплатить" 10 секунд висит ожидание и сообщение, что ответ от бота не получен.

Судя по логам не приходит запрос в pre_checkout_query.

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

Пробовал убирать по максимуму все другие роутеры/хендлеры, чтобы они не перехватывали ивент - не помогло.
Пробовал делать router.pre_checkout_query(lambda query: True) - не помогло.
Роутер конечно же регистрируется в DP, все остальные команды и коллбеки из этого роутера успешно работают.

Вот пример из кода:
router = Router()

@router.pre_checkout_query()
async def pre_checkout_handler(pre_checkout_query: PreCheckoutQuery):
    logging.info("Запускаю pre_checkout_handler") #Этот лог не появляется.
    await pre_checkout_query.answer(ok = True)

@router.message(F.successful_payment)
async def success_payment_handler(message: Message):
    await message.answer(text="Оплата успешно принята! Подписка продлена на 1 месяц.")

@router.message(Command("paysupport"))
async def pay_support_handler(message: Message):
    logging.info("Запускаю pay_support_handler") #А этот появляется, если вызвать команду :)
    await message.answer(
        text="Для возврата средств, напишите в поддержку")

async def show_payment(message_or_callback, is_callback: bool): #метод без аттрибута, потому что вызывается из другого места.
    ...
    prices = [LabeledPrice(label="XTR", amount=450)]
    if is_callback:
        await message_or_callback.message.answer_invoice(
            title="Продлить подписку",
            description="Оплата подписки на 1 месяц",
            prices=prices,
            provider_token="",
            payload="month_payment",
            currency="XTR"
        )
        await message_or_callback.answer()
    else:
        await message_or_callback.answer_invoice(
            title="Продлить подписку",
            description="Оплата подписки на 1 месяц",
            prices=prices,
            provider_token="",
            payload="month_payment",
            currency="XTR"
        )


Если кто-то знает тайну, что нужно дохимичить - буду безумно благодарен!
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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