Pagamento no Telegram

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 BotFather.

  • Vá até as configurações do bot desejado e selecione "Pagamentos" no menu.

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

Como emitir uma fatura para 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, de 1 a 32 caracteres

! description

(parâmetro obrigatório) descrição do produto, de 1 a 255 caracteres

! currency

(parâmetro obrigatório) moeda de pagamento (EUR, USD, UAH etc.; para mais detalhes https://core.telegram.org/bots/payments#supported-currenciesarrow-up-right )

prices

Uma matriz de matrizes contendo detalhes de preços do produto e serviços adicionais (entrega, embalagem etc.). Exibido na página de pagamento. O valor pode ser especificado como um número inteiro (por exemplo, 125) ou um número decimal usando ponto (por exemplo, 120.25).

Por exemplo: [["product", 2000], ["VAT", 20.75], ["packaging", 100]]

photo_url

URL da imagem do produto

payload

A primeira parte do callback de pagamento, o padrão é tg_payment

protect_content

1 - protege contra cópias e capturas de tela, 0 - sem proteção

disable_notification

1 - enviar com notificação, 0 - sem notificação

need_name

1 - exigir o nome completo do usuário para concluir o pedido, 0 - não solicitar nome

need_phone_number

1 - exigir o número de telefone do usuário para concluir o pedido, 0 - não solicitar número de telefone

need_email

1 - exigir o e-mail do usuário para concluir o pedido, 0 - não solicitar e-mail

reply_to_message_id

ID da mensagem para responder; se você quiser enviar a fatura como uma mensagem separada, use duas aspas simples ('')

reply_markup

Teclado com o primeiro botão definido para o tipo pay

message_thread_id

ID do tópico (disponível para supergrupos com a funcionalidade de fórum ativada)

provider_data

Dados da fatura em JSON formato para serem enviados ao provedor de serviços de pagamento. O sistema de pagamento deve fornecer descrições detalhadas dos campos obrigatórios.

circle-exclamation

Exemplo:

Se algum dos parâmetros need_name, need_phone_number, ou need_email estiver habilitado, o usuário será solicitado a fornecer essas informações antes de concluir o pagamento. Após o pagamento ser realizado com sucesso, os dados serão salvos nas variáveis correspondentes do cliente.

Exemplo:

O resultado: os dados são solicitados antes do pagamento.

Callback de pagamento

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

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

  1. course_pay - payload - o payload da solicitação original de criação da fatura;

  2. 1372995196 - o ID do chat para o qual 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 e-mail do usuário forem solicitados, as variáveis correspondentes serão atribuídas ao cliente:

tg_payment_name, tg_payment_phone e tg_payment_email

circle-info

Um callback de sucesso do 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, ele deve ter iniciado ou assinado o bot) antes para que o pagamento seja realizado. Caso contrário, o bot não poderá enviar a mensagem direta.

circle-info

Assim que o webhook de pagamento for recebido, o pagamento será confirmado automaticamente por meio do método answerPreCheckoutQuery. https://core.telegram.org/bots/api#answerprecheckoutqueryarrow-up-right

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 nova mensagem fixada. As notificações são sempre desativadas em canais e chats privados. Para desativar as notificações, defina o disable_notification parâmetro como 1; caso contrário, use 0.

Exemplo:

Etapa 1: prices = [["course", 100], ["VAT", 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"}]]}')

Etapa 2: Como resultado da primeira etapa, você receberá uma resposta da qual precisa extrair o message_id valor 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 course", 100]]

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

Exemplo: teclado

prices = [["course", 100], ["VAT", 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"}]]}')

Atualizado