August 28, 2023
Подключение платёжного шлюза к вашему боту
#! /usr/bin/env python3 from flask import Flask, request import logging app = Flask(__name__) logging.basicConfig(filename="logs.log", format="%(filename)+13s [ LINE:%(lineno)-4s] %(levelname)-8s [%(asctime)s] %(message)s", level=logging.INFO) @app.route("/purchase", methods=["POST"]) def webhook(): try: if request.method == "POST": data = request.form print(data) # Ваша бизнес логика return "OK", 200 except Exception as e: logging.info(f"Ошибка: {e}") return "Error", 400 from waitress import serve serve(app, host="0.0.0.0", port=12001)
Вы можете легко подключить оповещения из нашего сервиса в вашего бота, при минимальных усилиях.
Вам необходимо в нашем боте в разделе webhook внести адрес вашего сервера, куда будут приходить callback оповещения.
Подключить модуль веб сервере, представленного выше к вашему боту.
Оповещения будут приходить в формате неизменяемого словаря,
form-unlencoded
ImmutableMultiDict( [('status', 'success'), ('merchant_id', 'ваш id в телеграме'), ('telegram_id', 'id в телеграме вашего плательщика'), ('order_id', 'Id всегда разный'), ('check_id', 'номер вашего счёта который оплатил пользователь'), ('amount', 'Количество рублей'), ('date', 'Дата оплаты, строка %Y-%m-%d %H:%M:%S')])
Если ваш сервер не отвечает, сообщение будет отправляться в течение 5 минут с интервалом в 60 секунд
Для генерации ссылки на оплату необходимо вставить в вашего бота кнопку со
сборной ссылкой как в примере:
def clv(): chat_id = 'Id в телеграм, мерчанта в SkyPaymentLite' amount = 'Сумма' clv = InlineKeyboardMarkup(row_width=1) clv.add( InlineKeyboardButton(text=f"Оплатить", url=f"https://t.me/SkyPaymentLiteBot?start={chan_id}={amount}") ) return clv