Оплата через эквайринг тинькофф телеграмм

Видел в боте что можно сделать оплату через Тинькофф. Перекидывает на сайт оплаты, оплата проходит и бот каким-то образом понимаем что оплата прошла, и можно занести в бд данные о том что оплатил. Для этого мне нужно подключать эквайринг, где я смогу получить токен?

Если есть какой-нибудь пример кода, как реализация происходит Aiogram.

Пример кода который работает в тестовом режиме Сбер

PAYMENTS_TOKEN = ""
PRICE = types.LabeledPrice(label="Приобрести информацию о товаре", amount=500*100)  

@dp.message_handler(commands=['buy'])
async def buy(message: types.Message):
    if PAYMENTS_TOKEN.split(':')[1] == 'TEST':
        await bot.send_message(message.chat.id, "Тестовый платеж!!!")

    await bot.send_invoice(message.chat.id,
                           title="Покупка инструкции",
                           description="Приобрести информаию.....",
                           provider_token=PAYMENTS_TOKEN,
                           currency="rub",
                           # photo_url="https://www.aroged.com/wp-content/uploads/2022/06/Telegram-has-a-premium-subscription.jpg",
                           # photo_width=416,
                           # photo_height=234,
                           # photo_size=416,
                           is_flexible=False,
                           prices=[PRICE],
                           start_parameter="buy_tovar",
                           payload="test-invoice-payload")

@dp.message_handler(content_types=ContentType.SUCCESSFUL_PAYMENT)
async def successful_payment(message: types.Message):
    print("SUCCESSFUL PAYMENT:")

Данный код работает с платёжной системой телеграмм в тестовом режиме.

Но как я понял Тинькофф нужно делать POST запрос да?

async def send_payment_invoice(message: types.Message):
    await message.answer("Оплатите заказ")

    # Создание платежной ссылки
    async with aiohttp.ClientSession() as session:
        async with session.post(
            f"{TINKOFF_API_URL}Init",
            json={
                "TerminalKey": TINKOFF_TERMINAL_KEY,
                "Password": TINKOFF_PASSWORD,
                "Amount": 100,  # Сумма платежа
                "OrderId": str(message.from_user.id),  # Уникальный идентификатор заказа
                "Description": "Оплата заказа",  # Описание заказа
                "PayType": "O",  # Тип платежа (O - одностадийный)
                "Receipt": {
                    "Email": message.from_user.email,  # Email пользователя
                    "Phone": message.from_user.phone_number  # Номер телефона пользователя
                }
            }
        ) as response:
            data = await response.json()
            if data["Success"]:
                # Отправка пользователю ссылки на оплату
                await message.answer(f"Оплатите заказ по ссылке: {data['PaymentURL']}")
            else:
                await message.answer("Ошибка создания платежа")

@dp.message_handler(Command("payment"))
async def start_payment(message: types.Message):
    await send_payment_invoice(message)

Принятие запроса

async def check_payment_status(order_id: str):
    async with aiohttp.ClientSession() as session:
        async with session.post(
             f"{TINKOFF_API_URL}GetState",
             json={
                 "TerminalKey": TINKOFF_TERMINAL_KEY,
                 "Password": TINKOFF_PASSWORD,
                 "PaymentId": order_id  # Идентификатор платежа
             }
         ) as response:
             data = await response.json()
             if data["Success"]:
                 return data["Status"]
             else:
                 return None

Ответы (0 шт):