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

Crypto bot api telebot

Арсений Есипенко Знаток (253), на голосовании 2 месяца назад
 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 создавать чек на указаную сумму
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (158632) 3 месяца назад
Убедитесь, что токен провайдера оплаты (`CRYPTO_PAY_PROVIDER_TOKEN`) правильно введен и действителен. Неверный токен приведет к ошибке.

Убедитесь, что используете поддерживаемую валюту, такую как `USD`, так как `USDT` может не поддерживаться API Telegram.

  
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()
Похожие вопросы