Como conectar um sistema de pagamento

O sistema de pagamento está integrado ao Telegram. Para aceitar pagamentos dentro do mensageiro, você precisa:

  • Conectar um sistema de pagamento ao seu bot usando o BotFather.
  • Ir para as configurações do bot desejado e selecionar "Pagamentos" no menu.

Siga as instruções para conectar um sistema de pagamento disponível e copie o token fornecido.

Como faturar um cliente

Para enviar uma fatura no Telegram, use o método e especifique os parâmetros necessários.

tg_send_invoice(provider_token, platform_id, title, description, currency, prices, photo_url, payload, protect_content, disable_notification, need_name, need_phone_number, need_email, reply_to_message_id, reply_markup, message_thread_id, provider_data)

Parâmetros da função Descrição do parâmetro
**!** provider_token (parâmetro obrigatório) token obtido do BotFather após conectar o sistema de pagamento
**!** platform_id (parâmetro obrigatório) ID do destinatário - identificador do usuário, grupo ou canal
**!** title (parâmetro obrigatório) título do produto, 1–32 caracteres
**!** description (parâmetro obrigatório) descrição do produto, 1–255 caracteres
**!** currency (parâmetro obrigatório) moeda do pagamento (**EUR**, USD, UAH, etc.; para mais detalhes https://core.telegram.org/bots/payments#supported-currencies )
prices

Um array de arrays contendo detalhes de preços para o produto e serviços adicionais (entrega, embalagem, etc.). Exibido na página de pagamento. O valor pode ser especificado como um número inteiro (ex.: 125) ou um número decimal usando ponto (ex.: 120.25).

Por exemplo: [["produto", 2000], ["IVA", 20.75], ["embalagem", 100]]

photo_url URL da imagem do produto
payload A primeira parte do callback de pagamento, o padrão é tg_payment
protect_content 1 - proteger contra cópia e capturas de tela, 0 - sem proteção
disable_notification 1 - enviar com notificação, 0 - sem notificação
need_name 1 - exigir nome completo do usuário para concluir o pedido, 0 - sem solicitação de nome
need_phone_number 1 - exigir número de telefone do usuário para concluir o pedido, 0 - sem solicitação de telefone
need_email 1 - exigir email do usuário para concluir o pedido, 0 - sem solicitação de email
reply_to_message_id ID da mensagem para responder; se quiser enviar a fatura como uma mensagem separada, use duas aspas simples ('')
reply_markup Teclado com o primeiro botão definido como tipo pay
message_thread_id ID do tópico (disponível para supergrupos com funcionalidade de fórum ativada)
provider_data Dados da fatura no formato JSON a serem enviados ao provedor de serviços de pagamento. O sistema de pagamento deve fornecer descrições detalhadas dos campos obrigatórios.

IMPORTANTE! Todos os parâmetros devem ser passados na ordem especificada na função. Se precisar especificar um parâmetro específico e omitir outros, deixe valores vazios ou valores conforme especificado na documentação para os parâmetros que você não precisa.

Exemplo:

Se algum dos parâmetros need_name, need_phone_number ou need_email estiver ativado, o usuário será solicitado a fornecer essa informação antes de concluir o pagamento. Após o pagamento bem-sucedido, os dados são salvos nas variáveis de cliente correspondentes.

Exemplo:

Resultado: os dados são solicitados antes do pagamento.

Callback de pagamento

Se um pagamento for bem-sucedido, um callback com o seguinte conteúdo será enviado para o chat do usuário:

tg_payment 1372995196 120.75 USD 2ff747b9-000f-5000-b000-16d7e3517aa', onde

  1. course_pay - payload - o payload da solicitação original de criação da fatura;
  2. 1372995196 - o ID do chat onde a fatura foi originalmente enviada;
  3. 120.75 - o valor total do pagamento;
  4. USD - a moeda;
  5. 2ff747b9-000f-5000-b000-16d7e3517aa9 - o ID do pagamento no sistema do comerciante.

Além disso, se o nome, número de telefone e/ou email do usuário foram solicitados, as variáveis correspondentes serão atribuídas ao cliente:

tg_payment_name, tg_payment_phone e tg_payment_email

Um callback de sucesso de pagamento será enviado para as mensagens diretas do usuário com o bot.

O usuário deve ter um chat existente com o bot (ou seja, deve ter iniciado ou se inscrito no bot) antes do pagamento ser feito. Caso contrário, o bot não pode enviar a mensagem direta.

Uma vez recebido o webhook de pagamento, o pagamento será automaticamente confirmado através do método answerPreCheckoutQuery. https://core.telegram.org/bots/api#answerprecheckoutquery

Mensagem fixada com um botão de pagamento

Você precisa usar o recurso de fixar mensagem após conectar o sistema de pagamento.

tg_pin_chat_message(platform_id, message_id, disable_notification)

Parâmetros da função Descrição
**!** platform_id ID do chat do Telegram *
message_id ID da mensagem a ser fixada
disable_notification Este parâmetro define se uma notificação deve ser enviada a todos os membros do chat sobre a mensagem recém-fixada. As notificações estão sempre desativadas em canais e chats privados.
Para desativar notificações, defina o parâmetro disable_notification como 1; caso contrário, use 0.

Exemplo:

Passo 1:
prices = [["curso", 100], ["IVA", 20.75]]

result=tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Criar cursos é fácil', 'USD', prices, 'https://salebot.pro/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pagar", "pay":"True"}]]}')

Passo 2:
Como resultado do primeiro passo, você receberá uma resposta da qual precisa extrair o valor message_id usando a função get().
res=get(result,'result')
m_id=get(res,'message_id')

Em seguida, fixe a mensagem: tg_pin_chat_message(#{platform_id}, #{m_id}, 1)

Exemplo: conjunto mínimo de parâmetros

prices = [["super curso", 100]]

result= tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Criar cursos é super fácil', 'USD', prices)

Exemplo: teclado

prices = [["curso", 100], ["IVA", 20.75]]

tg_send_invoice('381764678:TEST:129736', platform_id, 'Curso sobre cursos', 'Criar cursos é fácil', 'USD', prices, 'https://mavibot.ai/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pagar", "pay":"True"}], [{"text":"Outro botão", "callback_data": "Outro botão"}]]}')