Advertisement
Guest User

Untitled

a guest
Sep 29th, 2022
7,116
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 1 0
  1. import config
  2. import logging
  3.  
  4. from aiogram import Bot, Dispatcher, executor, types
  5. from aiogram.types.message import ContentType
  6.  
  7. # log
  8. logging.basicConfig(level=logging.INFO)
  9.  
  10. # init
  11. bot = Bot(token=config.TOKEN)
  12. dp = Dispatcher(bot)
  13.  
  14. # prices
  15. PRICE = types.LabeledPrice(label="Подписка на 1 месяц", amount=500*100)  # в копейках (руб)
  16.  
  17.  
  18. # buy
  19. @dp.message_handler(commands=['buy'])
  20. async def buy(message: types.Message):
  21.     if config.PAYMENTS_TOKEN.split(':')[1] == 'TEST':
  22.         await bot.send_message(message.chat.id, "Тестовый платеж!!!")
  23.  
  24.     await bot.send_invoice(message.chat.id,
  25.                            title="Подписка на бота",
  26.                            description="Активация подписки на бота на 1 месяц",
  27.                            provider_token=config.PAYMENTS_TOKEN,
  28.                            currency="rub",
  29.                            photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg",
  30.                            photo_width=416,
  31.                            photo_height=234,
  32.                            photo_size=416,
  33.                            is_flexible=False,
  34.                            prices=[PRICE],
  35.                            start_parameter="one-month-subscription",
  36.                            payload="test-invoice-payload")
  37.  
  38.  
  39. # pre checkout  (must be answered in 10 seconds)
  40. @dp.pre_checkout_query_handler(lambda query: True)
  41. async def pre_checkout_query(pre_checkout_q: types.PreCheckoutQuery):
  42.     await bot.answer_pre_checkout_query(pre_checkout_q.id, ok=True)
  43.  
  44.  
  45. # successful payment
  46. @dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)
  47. async def successful_payment(message: types.Message):
  48.     print("SUCCESSFUL PAYMENT:")
  49.     payment_info = message.successful_payment.to_python()
  50.     for k, v in payment_info.items():
  51.         print(f"{k} = {v}")
  52.  
  53.     await bot.send_message(message.chat.id,
  54.                            f"Платёж на сумму {message.successful_payment.total_amount // 100} {message.successful_payment.currency} прошел успешно!!!")
  55.  
  56.  
  57. # run long-polling
  58. if __name__ == "__main__":
  59.     executor.start_polling(dp, skip_updates=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement