aiogram3.x не присылает оплату send_invoice
хочу добавить в бота оплату подписки... Посмотрел несколько примеров и документацию ошибок не вижу.
Когда пишу боту /payment приходит только сообщение, а вот на send_invoice() вообще тишина ни ошибки ни оплаты...
Пробовал разных провайдеров (ЮKassa и PayMaster) оплата не отправляется и ошибок нет (может и есть, но я буквально не вижу в чем ошибка).
# bot_messages.py
from aiogram import Router,F,Bot
from aiogram.types import (
Message,
ContentType,
LabeledPrice,
PreCheckoutQuery
)
from aiogram.filters import (
Command
)
@router.message(Command(commands="payment"))
async def pay(message:Message,bot=Bot):
print("pay send")
await bot.send_message(message.chat.id,f"Your order payment") # Сообщение приходит
await bot.send_invoice(
chat_id= message.chat.id,
title="title",
description="desc_test",
payload=f'test-invoice-payload',
provider_token='TEST_TOKEN',
currency='RUB',
prices=[
LabeledPrice(
label='Sub month',
amount=299*100
)
],
max_tip_amount=100*100,
suggested_tip_amounts=[100*100,300*100],
start_parameter=f'testpaymentbot',
provider_data=None,
need_email=True,
need_phone_number=True,
need_name=True,
need_shipping_address=False,
send_phone_number_to_provider=False,
send_email_to_provider=False,
is_flexible=False,
disable_notification=False,
protect_content=True,
reply_to_message_id=None,
allow_sending_without_reply=True,
reply_markup=None,
request_timeout=30
)
@router.pre_checkout_query()
async def process_pre_checkout_query(pre_checkout_query: PreCheckoutQuery, bot: Bot):
if pre_checkout_query.invoice_payload != "test_payload":
await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=False, error_message="Что-то пошло не так...")
else:
await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)
@router.message(F.content_type == ContentType.SUCCESSFUL_PAYMENT)
async def succesfull_payment(message: Message):
print("succesfull_payment activate")
msg = f"Thank you for sub {message.successful_payment.total_amount // 100} {message.successful_payment.currency}!"
await message.answer(msg)
# main.py
from handlers import bot_messages
async def main() -> None:
try:
bot = Bot(token=f"{conf.bot_token}",parse_mode="HTML")
dp = Dispatcher()
dp.include_routers(
bot_messages.router # добавляю все обработчики
)
logger_bot.info("Bot initialization succesful!")
except (Exception,AiogramError) as _ex:
logger_bot.critical(f"Can't initilize bot! Error: {_ex}")
try:
await bot.delete_webhook(drop_pending_updates=True)
logger_bot.info(f"Bot start succesful! {bot.id}|{bot.get_my_name}")
await dp.start_polling(bot)
except (Exception,AiogramError) as _ex:
logger_bot.critical(f"Can't start bot! Error: {_ex}")
return None
if __name__ == "__main__":
asyncio.run(main())
Помогите разобраться почему не отправляется оплата... уже неделю бьюсь...
Ответы (1 шт):
Автор решения: максим огуенко
→ Ссылка
Я нашел свою ошибку, это suggested_tip_amounts=[100*100,300*100] в bot.send_invoice().
«A JSON-serialized array of suggested amounts of tips»
