Інтеграція платіжних систем у Telegram ботах відкриває нові можливості для бізнесу, дозволяючи автоматизувати процес оплати та покращити користувацький досвід. У цій статті ми розглянемо різні способи інтеграції платіжних систем та найкращі практики їх реалізації.
Stripe надає потужний API для обробки платежів. Розглянемо приклад інтеграції Stripe з Telegram ботом:
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import CallbackContext
import stripe
stripe.api_key = 'your_stripe_secret_key'
async def create_payment(update: Update, context: CallbackContext):
# Створення платежу в Stripe
try:
payment_intent = stripe.PaymentIntent.create(
amount=1000, # сума в копійках
currency='uah',
payment_method_types=['card'],
metadata={'telegram_user_id': update.effective_user.id}
)
# Створення платіжної форми
keyboard = [
[
InlineKeyboardButton(
"💳 Оплатити",
url=f"https://your-domain.com/pay/{payment_intent.client_secret}"
)
]
]
reply_markup = InlineKeyboardMarkup(keyboard)
await update.message.reply_text(
"Для оплати натисніть кнопку нижче:",
reply_markup=reply_markup
)
except stripe.error.StripeError as e:
await update.message.reply_text(
"Виникла помилка при створенні платежу. Спробуйте пізніше."
)
Вебхуки дозволяють отримувати сповіщення про статус платежів у реальному часі. Ось приклад обробки вебхуків від Stripe:
from flask import Flask, request, jsonify
import stripe
app = Flask(__name__)
stripe.api_key = 'your_stripe_secret_key'
@app.route('/webhook', methods=['POST'])
def webhook():
event = None
payload = request.data
sig_header = request.headers['STRIPE-SIGNATURE']
try:
event = stripe.Webhook.construct_event(
payload, sig_header, 'your_webhook_secret'
)
except ValueError as e:
return 'Invalid payload', 400
except stripe.error.SignatureVerificationError as e:
return 'Invalid signature', 400
if event['type'] == 'payment_intent.succeeded':
payment_intent = event['data']['object']
handle_successful_payment(payment_intent)
return jsonify({'status': 'success'})
def handle_successful_payment(payment_intent):
# Оновлення статусу замовлення в базі даних
user_id = payment_intent.metadata.get('telegram_user_id')
# Відправка повідомлення користувачу
bot.send_message(
user_id,
"Дякуємо за оплату! Ваше замовлення прийнято в обробку."
)
LiqPay - популярна платіжна система в Україні. Розглянемо приклад інтеграції:
from liqpay import LiqPay
def create_liqpay_payment(order_id: str, amount: float, description: str):
liqpay = LiqPay('your_public_key', 'your_private_key')
params = {
'action': 'pay',
'amount': amount,
'currency': 'UAH',
'description': description,
'order_id': order_id,
'version': '3',
'sandbox': 0 # змініть на 1 для тестового режиму
}
signature = liqpay.cnb_signature(params)
return signature, params
Інтеграція криптовалютних платежів стає все більш популярною. Ось приклад роботи з Ethereum платежами:
from web3 import Web3
from eth_account import Account
import secrets
def setup_crypto_payment():
# Підключення до Ethereum мережі
w3 = Web3(Web3.HTTPProvider('your_ethereum_node_url'))
# Створення нового гаманця для отримання платежу
private_key = secrets.token_hex(32)
account = Account.from_key(private_key)
return {
'address': account.address,
'private_key': private_key
}
def check_payment_status(address: str, expected_amount: float):
w3 = Web3(Web3.HTTPProvider('your_ethereum_node_url'))
balance = w3.eth.get_balance(address)
# Конвертація Wei в ETH
balance_eth = w3.from_wei(balance, 'ether')
return balance_eth >= expected_amount
Безпека - критично важливий аспект при роботі з платежами. Необхідно забезпечити надійний захист даних користувачів та транзакцій.
Інтеграція платіжних систем у Telegram ботах - складний, але важливий процес, який може значно покращити ваш бізнес. Використовуючи правильні інструменти та дотримуючись найкращих практик безпеки, ви можете створити надійну та зручну систему оплати для ваших користувачів.