import telebot
import requests
from telebot import types
TELEGRAM_BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CRYPTOBOT_TOKEN = 'YOUR_CRYPTOBOT_TOKEN'
bot = telebot.TeleBot(TELEGRAM_BOT_TOKEN)
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Я бот, который принимает платежи через CryptoBot. Нажмите /pay, чтобы начать.")
@bot.message_handler(commands=['pay'])
def create_payment(message):
chat_id = message.chat.id
amount = 0.001 # Укажите сумму в BTC или другой поддерживаемой валюте
# Создание платежа через CryptoBot
payment_url = create_cryptobot_payment(amount)
if payment_url:
markup = types.InlineKeyboardMarkup()
pay_button = types.InlineKeyboardButton("Оплатить", url=payment_url)
markup.add(pay_button)
bot.send_message(chat_id, "Нажмите кнопку ниже, чтобы оплатить:", reply_markup=markup)
else:
bot.send_message(chat_id, "Произошла ошибка при создании платежа. Попробуйте позже.")
def create_cryptobot_payment(amount):
url = 'https://api.cryptobot.com/v1/createInvoice'
headers = {
'Authorization': f'Bearer {CRYPTOBOT_TOKEN}',
'Content-Type': 'application/json'
}
data = {
'amount': amount,
'currency': 'BTC', # Укажите нужную валюту
'description': 'Оплата за услугу'
}
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status() # Это выбросит исключение для плохих ответов (4xx, 5xx)
payment_data = response.json()
return payment_data.get('pay_url')
except requests.exceptions.RequestException as e:
print("Ошибка при создании платежа:", e)
return None
bot.polling()
Что было изменено:
1. Добавлен импорт requests и types из telebot, если он не был импортирован ранее.
2. Добавлена обработка исключений при выполнении запроса к API. Это поможет вам понять, какая именно ошибка произошла при создании платежа через CryptoBot.
3. Убедитесь, что вы заменили YOUR_TELEGRAM_BOT_TOKEN и YOUR_CRYPTOBOT_TOKEN на реальные токены бота.
import telebot
from telebot import types
import requests
url = f'https://api.cryptobot.com/v1/createInvoice'
Должен быть: url = 'https://pay.crypt.bot/api/createInvoice'
headers = {
'Authorization': f'Bearer {CRYPTOBOT_TOKEN}',
'Content-Type': 'application/json'
}
Должен быть: headers = {
'Crypto-Pay-API-Token': CRYPTOBOT_TOKEN,
'Content-Type': 'application/json'
}
data = {
'asset': 'BTC',
'amount': str(amount),
'description': 'Оплата за услугу'
}
В чём ошибка?
Код для оплаты через криптобот
Ошибка выводится на стадии, когда отправляю команду /pay