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)
! 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-currencies )
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.
IMPORTANTE! Todos os parâmetros devem ser passados na ordem especificada na função. Se você precisar especificar um parâmetro específico e omitir outros, deixe valores vazios ou valores conforme especificado na documentação para os parâmetros de que você não precisa.
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
course_pay - payload - o payload da solicitação original de criação da fatura;
1372995196 - o ID do chat para o qual a fatura foi originalmente enviada;
120.75 - o valor total do pagamento;
USD - a moeda;
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

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.
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#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)
! 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