Как узнать какой товар был куплен у телеграм бота
У меня есть бот для покупки ключей для игр.
Как сделать чтоб в функции successful payment печатало какой товар был куплен?
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ContentType
bot = Bot(token="token")
dp = Dispatcher(bot)
payment="payment"
@dp.message_handler(commands=['start'])
async def inserting_text_cars(message: types.Message):
await message.answer("/buy чтоб купить ключ к игре")
@dp.message_handler(commands=['buy'])
async def inserting_text_cars(message: types.Message):
kb = types.InlineKeyboardMarkup()
rust = types.InlineKeyboardButton(text='Купить RUST', callback_data='rust')
gta5 = types.InlineKeyboardButton(text='Купить GTA5', callback_data='gta5')
kb.add(rust, gta5)
await bot.send_message(message.chat.id, "Какую игру хотите купить?",reply_markup=kb)
PRICE = types.LabeledPrice(label='RUST', amount=100 + 100)
PRICE2 = types.LabeledPrice(label='GTA5', amount=1000 + 1000)
@dp.callback_query_handler(lambda call: True)
async def callback_inline(call):
if call.data == 'rust':
await bot.send_invoice(call.message.chat.id,
title="Ключь к игре",
description='Игра RUST" ',
provider_token=payment,
currency="eur",
photo_url="https://i.imgur.com/ht7t2JB.png",
photo_width=416,
photo_height=236,
photo_size=416,
is_flexible=False,
prices=[PRICE],
start_parameter="rust",
payload="test-invoce-payload")
elif call.data == 'gta5':
await bot.send_invoice(call.message.chat.id,
title="Ключь к игре",
description='Игра GTA5" ',
provider_token=payment,
currency="eur",
photo_url="https://i.imgur.com/z4CQfg7.png",
photo_width=416,
photo_height=236,
photo_size=416,
is_flexible=False,
prices=[PRICE],
start_parameter="gta5",
payload="test-invoce-payload")
@dp.pre_checkout_query_handler(lambda query: True)
async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery):
await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)
@dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)
async def successful_payment(message: types.Message):
print("SUCCESSFUL PAYMENT:")
payment_info = message.successful_payment.to_python()
for k, v in payment_info.items():
print(f"{k} = {v}")
await bot.send_message(message.chat.id,
f"Платеж нa сумму {message.successful_payment.total_amount // 100} {message.successful_payment.currency} выполнен")
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Источник: Stack Overflow на русском