Menu Topo

Recebendo Pix em bot Telegram

Se você quer criar um bot para o Telegram ou integrar funcionalidades de mensagens no seu projeto, a API do Telegram é uma opção incrível – e muito mais fácil de usar do que parece. Com ela, você consegue automatizar o envio de mensagens, gerenciar grupos, criar interações personalizadas e até processar pagamentos. Tudo isso com bastante liberdade e flexibilidade.

A melhor parte é que a API funciona bem com várias linguagens de programação, mas, se eu puder recomendar, Python é uma das melhores para começar. Ela tem várias bibliotecas dedicadas, como o python-telegram-bot, que agilizam bastante o trabalho. E se você já tiver alguma experiência com desenvolvimento, vai se sentir em casa rapidinho; se ainda está começando, vai encontrar uma comunidade enorme para ajudar.

Requisitos

Instalação

Instale a biblioteca oficial do Mercado Pago para utilizar a cobrança via PIX.

Shell
pip install mercadopago

Cobrança simples

Python
import mercadopago

sdk = mercadopago.SDK(TOKEN)

payment_data = {
    "transaction_amount": valor,
    "description": "descrição",
    "payment_method_id": 'pix',
    "installments": 1,
    "payer": {
        "email": '[email protected]'
    }
}
result = sdk.payment().create(payment_data)
print(result['response'])
  • transaction_amount: Valor a ser cobrado
  • description: Descrição
  • payment_method_id: (Não alterar) Método de pagamento
  • installments: (Não alterar) Número de parcelas;
  • player:
Código copiado com sucesso!

Cobrança com validade

Abaixo, um script que gera cobrança com validade igual a 30 minutos:

Python
import datetime                          
import mercadopago
            
sdk = mercadopago.SDK(TOKEN)
                                        
expire = datetime.datetime.now() + datetime.timedelta(minutes=30)
expire = expire.strftime("%Y-%m-%dT%-H:%M:%S.000-03:00")                                       
payment_data = {
    "date_of_expiration": f"{expire}",
    "transaction_amount": valor,
    "description": "descrição",
    "payment_method_id": 'pix',
    "installments": 1,
    "payer": {
        "email": '[email protected]'
    }
}
result = sdk.payment().create(payment_data)
print(result['response'])
  • date_of_expiration: Data de validade. Padrão: 1 dia.

Resposta

Para fins de simplicação, apenas alguns items da resposta serão tratados aqui. Consulte a lista completa na documentação oficial.

Usando-se qualquer um dos códigos anteriores,

Python
pix_copia_cola = result['response']['point_of_interaction']['transaction_data']['qr_code']

qr_code = result['response']['point_of_interaction']['transaction_data']['qr_code_base64']
  • pix_copia_cola: Valor a ser colado no PIX para ser feito o pagamento já com o valor fixado;
  • qr_code: QRCode correspondente ao pix copia e cola em base64.

Ou seja, com o pix_copia_cola já é possível fazer o pagamento. A imagem contida em qr_code pode ser usada também. Mais abaixo é demonstrado como ela pode ser enviada.



Lista de cobrança

Para verificar todas as cobranças em sua conta, independente do estado e listadas na ordem em que foram geradas, utilize:

Python
import mercadopago

sdk = mercadopago.SDK(TOKEN_MERCADOPAGO)
                            
payments = sdk.payment().search({'sort':'date_created', 'criteria': 'desc'})
                            
for payment in payments['response']['results']:
    print(payment['id'], payment['status'], payment['description'], payment['date_of_expiration'])

Verificando o estado

Uma cobrança de ID específico pode ser verificada usando:

Python
import mercadopago
import telebot
                            
bot = telebot.TeleBot(TOKEN_BOT)
sdk = mercadopago.SDK(TOKEN_MERCADOPAGO)
                            
result = sdk.payment().get(ID_DO_PAGAMENTO)
payment = result["response"]
                            
print(payment['status'], payment['description'])

Bot envia PIX copia e cola


Este bot irá enviar uma cobrança no valor de R$ 10 (linha 27) para a pessoa que enviar o comando /pagar.

Python
import datetime
import mercadopago
import telebot
                            
sdk = mercadopago.SDK(TOKEN_MERCADOPAGO)
bot = telebot.TeleBot(TOKEN_BOT)
                            
def create_payment(value):
    expire = datetime.datetime.now() + datetime.timedelta(days=1)
    expire = expire.strftime("%Y-%m-%dT%-H:%M:%S.000-03:00")
                            
    payment_data = {
        "transaction_amount": int(value),
        "payment_method_id": 'pix',
        "installments": 1,
        "description": 'Descrição',
        "date_of_expiration": f"{expire}",
        "payer": {
            "email": '[email protected]'
        }
    }
    result = sdk.payment().create(payment_data)
    return result
                            
@bot.message_handler(commands=['pagar'])
def cmd_pagar(message):
    payment = create_payment(10)
    pix_copia_cola = payment['response']['point_of_interaction']
    ['transaction_data']['qr_code']
    bot.send_message(message.from_user.id, f'{pix_copia_cola}', 
    parse_mode='HTML')
                                
if __name__ == "__main__":
    bot.infinity_polling()

Envia QRCode


Semelhante ao exemplo anterior, este bot envia uma cobrança para o usuário que enviar /pagar. A resposta será a imagem do QRCode com o PIX Copia e Cola como legenda.

Python
import datetime
import mercadopago
import telebot
import base64
from PIL import Image
from io import BytesIO
                            
sdk = mercadopago.SDK(TOKEN_MERCADOPAGO)
bot = telebot.TeleBot(TOKEN_BOT)
                            
def create_payment(value):
    expire = datetime.datetime.now() + datetime.timedelta(days=1)
    expire = expire.strftime("%Y-%m-%dT%-H:%M:%S.000-03:00")
                            
    payment_data = {
        "transaction_amount": int(value),
        "payment_method_id": 'pix',
        "installments": 1,
        "description": 'Descrição',
        "date_of_expiration": f"{expire}",
        "payer": {
            "email": '[email protected]'
        }
    }
    result = sdk.payment().create(payment_data)
    return result
                            
@bot.message_handler(commands=['pagar'])
def cmd_pagar(message):
    payment = create_payment(10)
    pix_copia_cola = payment['response']['point_of_interaction']['transaction_data']['qr_code']
    qr_code = payment['response']['point_of_interaction']['transaction_data']['qr_code_base64']
    qr_code = base64.b64decode(qr_code)
    qr_code_img = Image.open(BytesIO(qr_code))
    qrcode_output = qr_code_img.convert('RGB')
    bot.send_photo(message.from_user.id, qrcode_output, 
    f'{pix_copia_cola}', parse_mode='HTML')
                            
if __name__ == "__main__":
    bot.infinity_polling()

Taxas

Na data em que o texto foi escrito havia uma cobrança de 0.99% por pagamento. Consulte o site oficial para obter informações atualizadas.
© 2024 Felipe Souza. Alguns direitos reservados.
Atualizados Recentemente

Recebimento Pix pelo telegram