Telegram ботыБоты

Создание Telegram-бота для приема платежей на подписку: Telegram Payments, QIWI API и Bitcoin

В этой статье мы рассмотрим, как создать Telegram бота для приема платежей и интегрировать различные платежные системы в ваш Telegram-бот на Python, включая Telegram Payments, QIWI API и Bitcoin. Мы покажем вам шаг за шагом процесс интеграции платежных систем с помощью нашего подробного руководства, и вы сможете быстро и просто интегрировать платежные системы в 2023 году.

Telegram Payments

Telegram Payments – это встроенная система платежей для ботов, которая позволяет пользователям совершать покупки прямо из чата.

Для работы с Telegram Payments, вам нужно зарегистрироваться у одного из платежных провайдеров, поддерживаемых Telegram, таких как Stripe или Yandex.Money. После регистрации вы получите токен API, который будет использоваться для обработки платежей.

В библиотеке python-telegram-bot есть класс telegram.Invoice для создания счетов, которые могут быть отправлены пользователю. Вот пример отправки счета с помощью этой библиотеки:

from telegram import LabeledPrice, Invoice

price = LabeledPrice("Test product", 100)  # 1.00 USD
bot.send_invoice(chat_id, "Test product", "Description", "payload", PROVIDER_TOKEN, "start_parameter", "USD", [price])

Для обработки платежей вам нужно обрабатывать обновления с типом telegram.PreCheckoutQuery и вызывать метод answer_pre_checkout_query для подтверждения платежа.

QIWI API

QIWI API – это система платежей, которая позволяет проводить транзакции через сервис QIWI. Для работы с QIWI API вам потребуется создать QIWI-кошелек и получить API-токен.

Для взаимодействия с QIWI API вы можете использовать библиотеку qiwi-api-wrapper. Вот пример создания платежной ссылки с помощью этой библиотеки:

from qiwi_api import QiwiWrapper

qiwi = QiwiWrapper(token="your_token", phone="your_phone_number")
invoice_url = qiwi.create_payment_link(amount=100.0, comment="Payment for test product")

После получения ссылки на оплату, вы можете отправить ее пользователю в виде кнопки или текстового сообщения.

Работа с Bitcoin

Для работы с Bitcoin-платежами вам потребуется создать кошелек Bitcoin и получить его адрес. Затем вы можете использовать библиотеку bitcoin-python для работы с Bitcoin API.

Вот пример создания Bitcoin-адреса и проверки его баланса с помощью этой библиотеки:

from bitcoin import SelectParams, RPCProxy

SelectParams("mainnet")  # выбор сети Bitcoin
rpc = RPCProxy("http://user:[email protected]:8332")  # подключение к Bitcoin-ноде

address = rpc.getnewaddress() # создание нового Bitcoin-адреса
balance = rpc.getbalance(address) # получение баланса адреса

Вы можете отправить пользователю адрес Bitcoin, на который им следует отправить средства. Для отслеживания платежей, вы должны мониторить баланс этого адреса, используя Bitcoin-ноду или сторонние сервисы.

Пример Telegram бот для платежей за платную подписку

В этом разделе мы создадим Telegram-бота, который будет предлагать пользователю оплатить подписку на премиум-функции. Пользователь сможет оплатить подписку с помощью Telegram Payments, QIWI API или Bitcoin. После успешной оплаты пользователь будет отмечен как «премиум» в базе данных SQLite.

  1. Создайте новый файл Python и импортируйте необходимые модули.
  2. Инициализируйте бота с вашим токеном бота и токеном платежного провайдера для Telegram Payments.
  3. Создайте базу данных SQLite и таблицу для хранения информации о пользователях и их статусе «премиум».
  4. Реализуйте обработчики для команды /subscribe, которые будут отправлять инструкции для оплаты через Telegram Payments, QIWI API и Bitcoin.
  5. Реализуйте функции проверки успешной оплаты для каждого способа оплаты.
  6. После успешной оплаты, обновите статус пользователя на «премиум» в базе данных SQLite.

Для создания такого бота, сначала установите необходимые библиотеки:

pip install aiogram python-telegram-bot qiwipy bitcoin

Теперь давайте создадим бота с использованием следующего кода:

import logging
import sqlite3
from datetime import datetime, timedelta

from aiogram import Bot, Dispatcher, types
from aiogram.contrib.middlewares.logging import LoggingMiddleware
from aiogram.types import LabeledPrice
from aiogram.utils import executor

API_TOKEN = 'your_bot_token_here'

# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())

# Подключение к базе данных SQLite и создание таблицы пользователей
conn = sqlite3.connect("subscription_bot.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    user_id INTEGER NOT NULL UNIQUE,
    premium BOOLEAN NOT NULL DEFAULT FALSE,
    premium_until TIMESTAMP
);
""")
conn.commit()

# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def on_start(message: types.Message):
    user_id = message.from_user.id
    cursor.execute("INSERT OR IGNORE INTO users (user_id) VALUES (?)", (user_id,))
    conn.commit()

    await message.reply("Привет! Отправь мне /subscribe, чтобы оплатить премиум-подписку!")

# Обработчик команды /subscribe
@dp.message_handler(commands=['subscribe'])
async def on_subscribe(message: types.Message):
    user_id = message.from_user.id

    # Создание счета на оплату
    prices = [LabeledPrice(label='Премиум-подписка', amount=1000)]
    await bot.send_invoice(
        chat_id=user_id,
        title='Премиум-подписка',
        description='Оплата премиум-подписки на 1 месяц',
        provider_token='your_telegram_payments_provider_token',
        currency='usd',
        prices=prices,
        start_parameter='subscription',
        payload=str(user_id)
    )

# Обработчик успешной оплаты
@dp.pre_checkout_query_handler(lambda query: True)
async def process_pre_checkout_query(pre_checkout_query: types.PreCheckoutQuery):
    await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)

@dp.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT)
async def on_successful_payment(message: types.Message):
    user_id = message.from_user.id

    # Обработка успешной оплаты
    successful_payment_handler(user_id)

    await message.reply("Оплата успешно проведена! Вы получили премиум-подписку на 1 месяц.")

# Функция обработки успешной оплаты
def successful_payment_handler(user_id):
    now = datetime.now()
    premium_until = now + timedelta(days=30)

    cursor.execute("UPDATE users SET premium = 1, premium_until = ? WHERE user_id = ?", (premium_until, user_id))
    conn.commit()

# Функция проверки премиум-статуса пользователя
def is_user_premium(user_id):
    cursor.execute("SELECT premium, premium_until FROM users WHERE user_id = ?", (user_id,))
    user_data = cursor.fetchone()

    if user_data:
        premium, premium_until = user_data
        if premium:
            now = datetime.now()
            if now < datetime.strptime(premium_until, "%Y-%m-%d %H:%M:%S.%f"):
                return True

            cursor.execute("UPDATE users SET premium = 0 WHERE user_id = ?", (user_id,))
            conn.commit()

    return False
Запуск бота
if name == 'main':
    from aiogram import executor
    executor.start_polling(dp, skip_updates=True)

Не забудьте заменить API_TOKEN, QIWI_TOKEN, BITCOIN_ADDRESS и PROVIDER TOKEN HERE на соответствующие значения для вашего бота и платежных систем.

Этот код создает бота, который предлагает оплатить подписку черую через Telegram Payments, QIWI и Bitcoin. После успешной оплаты через любой из этих способов, пользователь будет отмечен как «премиум» в базе данных SQLite.

Обратите внимание, что для работы с Telegram Payments вам нужно получить токен платежного провайдера. Информацию о том, как это сделать, можно найти в документации Telegram.

Сейчас код проверяет только успешные платежи через Telegram Payments. Если вы хотите проверять платежи через QIWI и Bitcoin, вам потребуется реализовать проверку транзакций для каждого из этих способов оплаты. Вы можете создать вебхук для QIWI или периодически опрашивать их API, чтобы проверять состояние транзакций. Для проверки Bitcoin-транзакций вам потребуется интеграция с сервисами обработки платежей, такими как BTCPay Server или Coinbase Commerce.

После успешной оплаты, вы можете использовать информацию о «премиум» пользователе в вашем боте для предоставления дополнительных возможностей или контента.

Заключение

В этой статье мы рассмотрели, как интегрировать различные платежные системы в ваш Telegram бот для платежей на Python, включая Telegram Payments, QIWI API и Bitcoin. Это позволит вашему боту обрабатывать платежи от пользователей и расширить его функциональность. Вы можете выбрать подходящую платежную систему в зависимости от требований вашего проекта и предпочтений пользователей.

3.7/5 - (6 голосов)

Добавить комментарий

Back to top button