Оплата через эквайринг тинькофф телеграмм
Видел в боте что можно сделать оплату через Тинькофф. Перекидывает на сайт оплаты, оплата проходит и бот каким-то образом понимаем что оплата прошла, и можно занести в бд данные о том что оплатил. Для этого мне нужно подключать эквайринг, где я смогу получить токен?
Если есть какой-нибудь пример кода, как реализация происходит 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