Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать базу данных людей которые оплатили через Юкассу в тг боте, (python,aiogram)

HolderGD Знаток (490), на голосовании 2 недели назад
Как сделать базу данных людей которые оплатили через Юкассу в тг боте, (python,aiogram)
Голосование за лучший ответ
Uzi Uzu Гуру (3214) 1 месяц назад
Чтобы создать базу данных пользователей, совершивших оплату через ЮKassa в Telegram-боте на Python с использованием библиотеки aiogram, необходимо выполнить следующие шаги:

Настройка бота и подключение к ЮKassa:

Создайте бота через @BotFather и получите токен.
Подключите бота к ЮKassa, следуя официальной инструкции. В процессе вы получите provider_token, необходимый для отправки счетов.
Настройка базы данных:

Выберите СУБД для хранения данных (например, PostgreSQL или SQLite).
Создайте таблицу для хранения информации о платежах. Пример структуры таблицы:


 CREATE TABLE payments ( 
id SERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
username TEXT,
amount INTEGER NOT NULL,
currency TEXT NOT NULL,
payment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Отправка счета пользователю:

Используйте метод send_invoice из aiogram для отправки счета. Пример:

 from aiogram import Bot, Dispatcher, types 
from aiogram.types import LabeledPrice

bot = Bot(token='ВАШ_BOT_TOKEN')
dp = Dispatcher(bot)

@dp.message_handler(commands=['buy'])
async def process_buy_command(message: types.Message):
prices = [LabeledPrice(label='Товар', amount=10000)] # 100.00 RUB
await bot.send_invoice(
chat_id=message.chat.id,
title='Название товара',
description='Описание товара',
payload='unique_payload',
provider_token='ВАШ_PROVIDER_TOKEN',
currency='RUB',
prices=prices,
start_parameter='start'
)
Обратите внимание, что payload должен быть уникальным для каждой транзакции.
Обработка успешного платежа:

После успешной оплаты Telegram отправляет обновление с типом successful_payment. Необходимо создать обработчик для этого события:

 @dp.message_handler(content_types=types.ContentType.SUCCESSFUL_PAYMENT) 
async def process_successful_payment(message: types.Message):
successful_payment = message.successful_payment
user_id = message.from_user.id
username = message.from_user.username
amount = successful_payment.total_amount
currency = successful_payment.currency

# Сохранение информации о платеже в базу данных
# Пример для SQLite
import sqlite3
conn = sqlite3.connect('payments.db')
cursor = conn.cursor()
cursor.execute(
'INSERT INTO payments (user_id, username, amount, currency) VALUES (?, ?, ?, ?)',
(user_id, username, amount, currency)
)
conn.commit()
conn.close()

await message.answer('Спасибо за оплату!')
В этом примере используется SQLite для простоты. Для PostgreSQL или другой СУБД используйте соответствующие библиотеки и методы подключения.

Запуск бота:

Запустите бота, чтобы он начал обрабатывать команды и платежи:

 from aiogram import executor 

if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Убедитесь, что у вас настроены все необходимые права доступа к базе данных и что бот имеет доступ к сети для взаимодействия с Telegram API и ЮKassa.

Для более подробной информации о настройке платежей через Telegram-бота и ЮKassa вы можете ознакомиться с официальной документацией ЮKassa.
Похожие вопросы