10мес



Программирование
+3Crypto bot api telebot
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
APITOKEN = '' # Токен вашего бота
bot = telebot.TeleBot(APITOKEN)
CRYPTOPAYPROVIDER_TOKEN = '' # Токен провайдера CryptoPay
@bot.messagehandler(commands=['start'])
def start(message):
bot.sendmessage(message.chat.id, "Добро пожаловать! Пожалуйста, введите сумму в USDT для создания счета.")
@bot.messagehandler(func=lambda message: message.text.replace('.', '', 1).isdigit())
def createinvoice(message):
try:
amount = float(message.text) # Преобразуем текст в число
if amount <= 0:
raise ValueError("Сумма должна быть положительной.")
invoice_payload = 'unique_invoice_payload' # Уникальный идентификатор инвойса
# Создание инвойса
bot.send_invoice(
chat_id=message.chat.id,
title='Оплата в USDT',
description='Оплата за услуги.',
provider_token=CRYPTO_PAY_PROVIDER_TOKEN, # Токен провайдера
start_parameter='test-invoice',
invoice_payload=invoice_payload, # Обязательный параметр
currency='USDT',
prices=[telebot.types.LabeledPrice(label='Услуга', amount=int(amount * 1000000))] # Сумма в микро-USDT
)
except ValueError:
bot.send_message(message.chat.id, "Пожалуйста, введите корректную сумму в USDT.")
except Exception as e:
bot.send_message(message.chat.id, f"Произошла ошибка: {str(e)}")
@bot.precheckoutqueryhandler(func=lambda query: True)
def precheckout(query):
bot.answerprecheckout_query(query.id, ok=True)
@bot.messagehandler(contenttypes=['successfulpayment'])
def successfulpayment(message):
bot.send_message(message.chat.id, "Спасибо за вашу покупку! Ваш счет успешно создан.")
bot.polling()
Произошла ошибка: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: PAYMENTPROVIDERINVALID
должен через api crypto bot создавать чек на указаную сумму
По дате
По рейтингу
Убедитесь, что токен провайдера оплаты (`CRYPTO_PAY_PROVIDER_TOKEN`) правильно введен и действителен. Неверный токен приведет к ошибке.
Убедитесь, что используете поддерживаемую валюту, такую как `USD`, так как `USDT` может не поддерживаться API Telegram.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546
import telebot
APITOKEN = '' # Токен вашего бота
bot = telebot.TeleBot(APITOKEN)
CRYPTO_PAY_PROVIDER_TOKEN = '' # Токен провайдера CryptoPay
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "Добро пожаловать! Пожалуйста, введите сумму в USD для создания счета.")
@bot.message_handler(func=lambda message: message.text.replace('.', '', 1).isdigit())
def create_invoice(message):
try:
amount = float(message.text) # Преобразуем текст в число
if amount <= 0:
raise ValueError("Сумма должна быть положительной.")
invoice_payload = 'unique_invoice_payload' # Уникальный идентификатор инвойса
# Создание инвойса
bot.send_invoice(
chat_id=message.chat.id,
title='Оплата в USD',
description='Оплата за услуги.',
provider_token=CRYPTO_PAY_PROVIDER_TOKEN, # Токен провайдера
start_parameter='test-invoice',
invoice_payload=invoice_payload, # Обязательный параметр
currency='USD', # Используйте поддерживаемую валюту
prices=[telebot.types.LabeledPrice(label='Услуга', amount=int(amount * 100))] # Сумма в центах
)
except ValueError:
bot.send_message(message.chat.id, "Пожалуйста, введите корректную сумму в USD.")
except Exception as e:
bot.send_message(message.chat.id, f"Произошла ошибка: {str(e)}")
@bot.pre_checkout_query_handler(func=lambda query: True)
def pre_checkout(query):
bot.answer_pre_checkout_query(query.id, ok=True)
@bot.message_handler(content_types=['successful_payment'])
def successful_payment(message):
bot.send_message(message.chat.id, "Спасибо за вашу покупку! Ваш счет успешно создан.")
bot.polling()
понял братка