Prodamus (RU)
Disponível apenas no plano "Infobiz".
Como conectar o Prodamus
Para conectar o Prodamus, você vai precisar do URL do formulário de pagamento e da chave secreta.
URL do formulário de pagamento você recebe após o cadastro, ele tem o formato: demo.payform.ru
A chave secreta pode ser obtida na área do cliente; lá também é preciso informar o endereço URL para notificações.

Instruções detalhadas de como fazer isso: https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch
Endereço para notificações: https://chatter.salebot.pro/prodamus_callback/result
Esse endereço precisa ser informado nas configurações em dois lugares.
Na página principal das configurações, você pode escolher o modo de funcionamento do formulário: modo de teste sem pagamentos ou modo de pagamento:

O endereço para notificações precisa ser informado nas configurações do sistema de pagamento em dois lugares: na aba Configuração do formulário — para pagamentos normais e na aba Assinaturas — para pagamentos recorrentes.

Endereço para notificações: https://chatter.salebot.pro/prodamus_callback/result
Para configurar o funcionamento com pagamentos por assinatura vá para a aba Assinaturas e informe o endereço para notificações: https://chatter.mavibot.ai/prodamus_callback/result

Atenção! Após inserir a URL, обязательно clique no botão «Salvar».
Para conectar o Prodamus, é necessário acessar a seção "Adquirência"

Depois, basta informar os dados mencionados acima no formulário:

IMPORTANTE! a URL do formulário de pagamento deve ser informada SEM https://
Com isso, a conexão está concluída. Agora vamos entender como usar essa funcionalidade.
Как сформировать ссылку на оплату
Gerar o link de pagamento no bloco pode ser feito DE UMA DAS maneiras disponíveis:
Criação de link usando a variável payment_sum e parâmetros adicionais (versão antiga, ainda funcional)
Botão com a função Pagamento
Vamos ver todos os parâmetros possíveis desse botão.
Parâmetros obrigatórios do botão Pagamento para o Prodamus
Para gerar o link de pagamento, nas configurações do botão é necessário informar os parâmetros obrigatórios "Valor", "Nome do produto", também o parâmetro "Conteúdo pago", se você não tiver sua própria caixa online e quiser receber a nota fiscal do Prodamus.
Ao abrir a página de checkout, as informações do produto e seu valor já estarão preenchidas; ao cliente restará apenas informar seus contatos. Se nas configurações do botão você informar o email e/ou telefone do usuário, então na página de checkout serão exibidos os contatos do pagador e as informações do produto e do valor.

campo Texto. Esse texto será exibido no botão com o link de pagamento na mensagem
campo Função. Para criar o botão que gera o link de pagamento, selecione a função Pagamento
campo Sistema de pagamento. A lista mostra os sistemas de pagamento conectados ao projeto
Se não houver sistemas de pagamento conectados ao projeto, esse tipo de botão não estará disponível
campo Nome do produto (obrigatório). Nesse campo, é preciso informar o nome do produto. Quanto mais preciso for o nome do produto, melhor. Por exemplo: não "Telefone", e sim "Smartphone Xiaomi modelo …"
NÃO É PERMITIDO usar aspas duplas no nome do produto: remova-as ou substitua por aspas simples.
campo Valor (obrigatório). Nesse campo, informamos o preço do produto.
menu Informações adicionais. Ao clicar nesse botão, serão abertos campos adicionais para gerar o link
Descrição do pedido
Desconto em R$
Variável com o email do comprador
Variável com o número de telefone do comprador
Tempo de vida do link
ID do produto para assinatura (para criar pagamentos recorrentes)
Conteúdo pago
checkbox Com notificação de clique. Para rastrear o acesso ao link de pagamento, você pode marcar a opção. Nesse caso, ao clicar no botão, será enviada ao diálogo com o cliente no SaleBot uma notificação de que houve acesso ao link

Você pode configurar a lógica adicional do bot para essa notificação.
Muitos sistemas de pagamento suportam caixas online na nuvem, e elas são necessárias conforme a Lei 54-FZ. Leia as particularidades da emissão de comprovantes no site do sistema de pagamento escolhido para não passar por uma situação constrangedora com a fiscalização.
E é assim que fica a página de pagamento que é aberta ao acessar o link no botão Pagamento:

Parâmetros adicionais para geração do link de pagamento

campo Descrição do pedido. As informações informadas nesse campo serão exibidas na página de pagamento no campo Dados adicionais
campo Desconto. Nesse campo, você pode informar o valor do desconto em reais ou em reais com centavos. Para informar valores com centavos, use ponto como separador: 50.99 Na página de pagamento, o campo Valor a pagar será exibido com o desconto aplicado, e o preço original do produto ficará riscado.
Campo Variável com o email do comprador (opcional, se o Número de telefone tiver sido informado) Nesse campo, é informado o email do usuário (cliente). Você pode informar a variável que armazena o email do usuário.
Por exemplo, #{email}
Campo Variável com o número de telefone do comprador (opcional, se o Email tiver sido informado). Nesse campo, você pode informar a variável em que está salvo o número de telefone do comprador no formato 79000000000 Por exemplo, #{phone}
O email e/ou telefone deve estar обязательно presente
campo Tempo de vida do link. Você pode informar a data no formato dd.mm.aaaa hh:mm (por exemplo 25.01.2021 11:00) ou usar variáveis para definir o prazo de expiração do link.
Exemplo de uso da variável: #{link_expired}
campo ID do produto por assinatura. Para realizar um pagamento recorrente, informe o valor do ID do produto. Para criar a assinatura, é necessário criar um produto de assinatura.
Instruções detalhadas de como criar um produto para assinatura: https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski
Se o valor do ID do produto por assinatura for informado, o valor do pagamento não é considerado. Os dados do produto serão obtidos do cartão do produto na área do Prodamus
O número de telefone informado no pagamento será necessário para gerenciar a assinatura.
Se você informar ID do produto por assinatura, então no callback, em caso de pagamento bem-sucedido, será enviado o ID desse produto
Campo Conteúdo pago (condicionalmente obrigatório). Os dados são necessários para a fiscalização do pagamento pelo Prodamus, caso você não tenha sua própria caixa online. Nesse campo, é preciso informar a descrição da compra, o valor e o link para o conteúdo.
Por exemplo: Curso ‘Trançado de Cabelos’, valor de 3000 reais, link para a página do curso: https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911.
Esses dados são necessários para repasse à Receita Federal.
Botão com a função de pagamento
Se você informar o tempo de vida do link, então, no caso
Quando o usuário solicitou o link de pagamento durante o período em que ele estava ativo (ou seja, seu tempo de vida ainda não terminou) e ele existe no diálogo, ele não conseguirá pagar e receberá a seguinte notificação:
O prazo de validade do link deve ser posterior à data atual; caso contrário, o cliente também não conseguirá pagar por esse link.
2. Quando o usuário solicita o link e ele já está inativo Nesse caso, o botão simplesmente não aparecerá. E nas variáveis do cliente aparecerá a variável "error_payment_button", que contém o seguinte valor: "Erro: O prazo de validade do link deve ser posterior à data atual".
Para que o usuário consiga pagar corretamente, é recomendável tratar esse caso adicionalmente.
Como fazer isso?
Crie um bloco com a condição em que você indique, se uma notificação desse tipo chegar, error_payment_button == "Erro: O prazo de validade do link deve ser posterior à data atual"
Com a exibição do texto: "Desculpe, você não conseguiu a tempo e o link de pagamento não é mais válido":


Variáveis do cliente que serão criadas automaticamente ao usar o botão com a função Pagamento
Assim que o usuário receber o bloco com o botão "Pagamento", as variáveis do cliente serão criadas automaticamente:
Variável de sistema do cliente __payments , que armazena o valor e o identificador do link criado; é necessária para identificar o hook do sistema de pagamento.
A variável de sistema do cliente __payments NÃO PODE ser excluída nem alterada!
Variável do cliente error_payment_button é criada se ocorrer um erro ao gerar o botão.
No valor da variável error_payment_button será gravado o texto do erro ou a resposta de erro do sistema de pagamento.
Os valores das variáveis tornam-se atuais ao passar para o próximo bloco
Как обработать результат
Pagamento bem-sucedido.
Após o pagamento ser concluído com sucesso, o bot AUTOMATICAMENTE receberá um CALLBACK, composto pelos 10 primeiros caracteres da chave secreta do sistema de pagamento, da palavra _success e, após um espaço, do valor do pagamento. Para uso nas configurações do fluxo, basta copiá-lo.
Por exemplo: ovg58keefc_success 44, onde:
ovg58keefc: os 10 primeiros caracteres da chave secreta do sistema de pagamento
_success: resultado do processamento da solicitação (pagamento bem-sucedido)
44: valor do pagamento
Os callbacks (notificações) do sistema de pagamento o usuário NÃO VÊ. Eles são exibidos apenas na aba Clientes e ficam visíveis para o operador.
Exemplo de uso: Passo 1. No bloco "com botão Pagamento", adicionamos botões com a função Pagamento.
Passo 2. No campo Condição de conexão deste bloco para o bloco "Pagamento bem-sucedido", informamos o callback. Funciona da mesma forma se o callback de pagamento bem-sucedido for informado no campo Condição do bloco "Condição inicial".
Importante: seleção da correspondência Igualdade exata ou Contém palavras-chave
❗️Se você decidir verificar o pagamento justamente na seta pela condição, então pense bem na lógica do seu fluxo. Caso o cliente saia do bloco com a transição por condição com callback, não haverá переходo para o bloco. Esse método de verificação só faz sentido quando o cliente não muda sua posição no funil (posição no fluxo). Em fluxos em que o cliente se movimenta entre blocos, é melhor usar a opção de informar o callback no bloco "Condição inicial".

Pagamento bem-sucedido para produtos com assinatura automática.
Após o pagamento ser concluído com sucesso, o bot AUTOMATICAMENTE receberá um CALLBACK composto pelos 10 primeiros caracteres da chave secreta do sistema de pagamento, da palavra _success e após um espaço, do ID do produto por assinatura
Por exemplo: 214009eefc_success 618117, onde:
009eefc : 10 caracteres da chave secreta do sistema de pagamento
_success: resultado do processamento da solicitação (pagamento bem-sucedido)
618117: ID do produto por assinatura

Pagamento com erro
Em caso de erro no processamento do pagamento o bot AUTOMATICAMENTE receberá um CALLBACK composto pelos 10 caracteres da chave secreta do sistema de pagamento, da palavra _fail e, após um espaço, do valor do pagamento
Por exemplo, ovg58keefc_fail 44 , onde
ovg58keefc : 10 caracteres da chave secreta do sistema de pagamento
_fail : resultado do processamento da solicitação — o pagamento não foi realizado ou ocorreu um erro.
44 : valor do pagamento
Depende do sistema de pagamento. Nem todos os sistemas de pagamento enviam callback de erro de pagamento.
Se o valor informado nas configurações do botão for diferente do valor pago pelo cliente, então AUTOMATICAMENTE receberá um CALLBACK composto pelos 10 caracteres da chave secreta do sistema de pagamento, da palavra _different_amounts e, após um espaço, do ID único do pagamento
Por exemplo: ovg58keefc_different_amounts 123456 , onde:
ovg58keefc : 10 caracteres da chave secreta do sistema de pagamento
_different_amounts : resultado do processamento da solicitação (o valor pago é diferente do valor no link)
123456 : ID único do pagamento
Função get_prodamus_payment_url no Calculador
Para gerar o link de pagamento, você pode usar a função get_prodamus_payment_url no bloco Calculador.
No campo Calculador, atribuímos o valor da função à variável get_prodamus_payment_url
Você define o nome da variável por conta própria. Nos prints, há exemplos de nomes de variáveis.
Nessa variável será gravado o link de pagamento. A variável pode ser exibida na tela como um link na mensagem ou colocada em um botão com o texto "Pagar".
EXEMPLO de link de pagamento: https://payform.ru/7p3JR8/
Exemplo 1:

sua_variável = get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)
Parâmetros da função:
amount
valor a pagar. Você pode passar um número inteiro ou um número com ponto. Por exemplo 25 ou 52.5 (parâmetro obrigatório)
product_name
Nome do produto. (parâmetro obrigatório)
expired
tempo de vida do link de pagamento, no formato dd.mm.aaaa (por exemplo 25.01.2021). Também é possível, no campo "Calculador" informar: expired = current_date + 2 (o link será válido por 2 dias até 00:00). expired também é possível informar a data com horário exato, separados por um espaço, no formato dd.mm.aaaa hh:mm (por exemplo: 25.01.2021 12:23). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos:
time = current_time + 30
expired = "#{current_date} #{time}"
Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples ou duplas, ou o valor None
customer_phone
número de telefone do comprador, não é obrigatório se o parâmetro customer_email Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
customer_email
email do comprador, não é obrigatório se o parâmetro customer_phone Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
discount
valor do desconto. Passamos o parâmetro como número ou número com ponto: 25 ou 63.5 Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
description
descrição do produto (se não for informada, será preenchido com 'Pagamento da fatura order_id') Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
extra_params
parâmetros adicionais que não existem nesta função. Os possíveis parâmetros adicionais podem ser vistos no link da documentação de integração com a API do sistema de pagamento https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov Exemplo: extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples / um par de aspas duplas ou o valor None.
products_for_receipt
String de 50 a 4000 caracteres no formato "descrição do pedido - valor - link para o recurso adquirido”.
Por exemplo:
“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/". Obrigatório, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.
extra_params = {"payments_limit": "3"}
products_for_receipt = "Curso ‘Pesca de Brema’, valor da assinatura mensal de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/"
link_prodamus_url = get_prodamus_payment_url(4999, 'Curso ‘Pesca de Brema’', '27.03.2023 17:00', '79167777771', '[email protected]', 20, 'Melhor curso do mercado', extra_params, products_for_receipt)
Se houver várias funções para obter o link no bloco e ocorrer um erro, o valor do erro será gravado na variável error_payment_func
O erro será gravado pela última função no Calculador
Criação de link usando a variável payment_sum e parâmetros adicionais
Atenção: à variável payment_sum é atribuído o valor da última, depois das variáveis opcionais payment_description, product_name etc.
Para gerar o link de pagamento, basta definir no campo Calculador o valor da variável payment_sum. Logo em seguida, a variável prodamus_pay_url.
EXEMPLO de link de pagamento:: https://payform.ru/7p3JR8/
Essa variável pode ser exibida na tela como um link na mensagem ou colocada em um botão com o texto "Pagar".
Antes da declaração da variável payment_sum você também pode informar as seguintes variáveis opcionais:
product_name
nome do produto (se não for informado, será preenchido com 'Pagamento da fatura order_id') - no print abaixo é mostrado onde é exibido
payment_description
descrição do produto (se não for informada, será preenchida com 'Pagamento da fatura order_id', print abaixo) - no print abaixo é mostrado onde é exibida
discount_value
valor do desconto (por exemplo discount_value = 25 ou discount_value = 50.25)
customer_phone
número de telefone do comprador, não é obrigatório se o parâmetro
customer_email
email do comprador
link_expired
tempo de vida do link de pagamento, no formato dd.mm.aaaa (por exemplo 25.01.2021). Também é possível, no campo "Calculador" informar: link_expired = current_date + 2 (o link será válido por 2 dias até 00:00)
link_expired
também é possível informar a data com horário exato, separados por um espaço, no formato dd.mm.aaaa hh:mm (por exemplo: 25.01.2021 12:23). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos:
time = current_time + 30 link_expired = "#{current_date} #{time}"
currency
moeda do pagamento, por padrão "rub". Lista completa de argumentos:
rub
usd
eur
kzt Esse parâmetro deve ser passado em letras minúsculas.
payment_title
título do pagamento (até 127 caracteres). Se não for informado, será preenchido com o texto: “Pagamento da fatura payment_id” (payment_id - identificador do pedido no Salebot)
payment_description
descrição resumida do pagamento (até 127 caracteres)
locale
idioma da página de pagamento, informado como en-US, fr-XC etc. Por padrão - ‘ru-Ru’. A lista completa está disponível no link https://developer.paypal.com/api/rest/reference/locale-codes/
products_for_receipt
String de 50 a 4000 caracteres no formato "descrição do pedido - valor - link para o recurso adquirido”.
Por exemplo:
“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/".
Obrigatório, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.
payment_sum
(obrigatório) valor do pagamento
Variáveis discount_value, customer_phone, customer_email e link_expired também são válidas para assinaturas.

Exemplo de implementação.
No primeiro bloco, definimos o valor do pagamento:

Depois, exibimos no local desejado a URL, o link prodamus_pay_url:

prodamus_available_payment_methods é declarada antes da declaração de payment_sum.
Valores possíveis:
AC
pagamento com cartão emitido no Brasil
ACkz
pagamento com cartão do Cazaquistão
ACf
pagamento com cartões de países da CEI, exceto o Brasil
ACEURNMBX
Pagamento em EUR com cartão de todos os países, exceto Brasil e Bielorrússia
SBP
Pagamento rápido, sem inserir os dados do cartão. Para cartões do Brasil
QW
Qiwi wallet
PC
Юmoney
GP
terminal de pagamento
sbol
Sberбанк online invoice - Pagamento por boleto installment - Parcelamento pelo Prodamus
installment_5_21
Parcelamento pelo Prodamus em 3 meses
installment_6_28
Parcelamento pelo Prodamus em 6 meses
installment_10_28
Parcelamento pelo Prodamus em 10 meses
installment_12_28
Parcelamento pelo Prodamus em 12 meses installment_0_0_3 - Parcelamento pelo Tinkoff em 3 meses
installment_0_0_4
Parcelamento pelo Tinkoff em 4 meses
installment_0_0_6
Parcelamento pelo Tinkoff em 6 meses
installment_0_0_10
Parcelamento pelo Tinkoff em 10 meses
installment_0_0_12
Parcelamento pelo Tinkoff em 12 meses
installment_0_0_24
Parcelamento pelo Tinkoff em 24 meses
installment_0_0_36
Parcelamento pelo Tinkoff em 36 meses
credit
Crédito pelo Tinkoff
vsegdada_installment_0_0_4
Parcelamento pela VsegdaDa em 4 meses (não funciona com available_payment_methods)
vsegdada_installment_0_0_6
Parcelamento pela VsegdaDa em 6 meses
vsegdada_installment_0_0_10
Parcelamento pela VsegdaDa em 10 meses
vsegdada_installment_0_0_12
Parcelamento pela VsegdaDa em 12 meses sem juros
vsegdada_installment_0_0_24
Parcelamento pela VsegdaDa em 24 meses
vsegdada_installment_0_0_36
Parcelamento pela VsegdaDa em 36 meses
sbrf_installment_0_0_6
Parcelamento pelo SberBank em 6 meses
sbrf_installment_0_0_10
Parcelamento pelo SberBank em 10 meses
sbrf_installment_0_0_12
Parcelamento pelo SberBank em 12 meses
sbrf_installment_0_0_24
Parcelamento pelo SberBank em 24 meses
sbrf_installment_0_0_36
Parcelamento pelo SberBank em 36 meses
otp_installment_0_0_6
Parcelamento pelo OTP Bank em 6 meses
otp_installment_0_0_10
Parcelamento pelo OTP Bank em 10 meses
otp_installment_0_0_12
Parcelamento pelo OTP Bank em 12 meses
otp_installment_0_0_24
Parcelamento pelo OTP Bank em 24 meses
otp_installment_0_0_36
Parcelamento pelo OTP Bank em 36 meses
mts_installment_0_0_6
Parcelamento pelo MTS Bank em 6 meses
mts_installment_0_0_10
Parcelamento pelo MTS Bank em 10 meses
mts_installment_0_0_12
Parcelamento pelo MTS Bank em 12 meses
mts_installment_0_0_24
Parcelamento pelo MTS Bank em 24 meses
mts_installment_0_0_36
Parcelamento pelo MTS Bank em 36 meses
monetaworld
Cartões de bancos do mundo, exceto o Brasil
sbrf_bnpl
Parcelamento pelo Sber
É permitido passar vários valores, separados por barra vertical. Por exemplo: prodamus_available_payment_methods = "AC|PC|QW"
prodamus_currency - outro parâmetro adicional para informar o valor em uma moeda específica. Valores possíveis da moeda: kzt - para tenge eur - para euro usd - para dólar
Nesse caso, o valor informado no link será na moeda especificada.
Ao receber o callback payment_callback é preciso considerar o parâmetro currency e currency_sum, que conterá a moeda e o valor na moeda.
Importante! Verifique se você tem na sua página o método de pagamento na moeda desejada, pois, se ele não existir, você será redirecionado para uma página sem métodos de pagamento. Os métodos são ativados por meio do suporte. Você pode ver os habilitados nas configurações da página ou gerando um link de pagamento


Как обработать результат
Pagamento bem-sucedido
Importante! Após um pagamento bem-sucedido ou malsucedido, o bot receberá callbacks que permitem identificar que houve um pagamento bem-sucedido. Esses callbacks aparecem no sistema como mensagens do usuário; para que o usuário não consiga enviá-los, eles são compostos pela chave secreta e um sufixo de status, por exemplo: 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success ou 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail. Além disso, após o pagamento bem-sucedido, a variável prodamus_payment_completed é definida como True.
Atenção! Os callbacks chegam com atraso, então, após exibir o link de pagamento ao usuário, recomendamos enviar uma mensagem do tipo: “Após o pagamento, aguarde a mensagem de confirmação de pagamento bem-sucedido”
IMPORTANTE! Para links criados por meio do botão com a função Pagamento ou por meio da função no Calculador, após o pagamento o bot AUTOMATICAMENTE receberá um CALLBACK composto pelos caracteres da chave secreta do sistema de pagamento, da palavra _success e, após um espaço, do valor do pagamento. Para uso nas configurações do fluxo, basta copiá-lo.
Por exemplo: ovg58keefc_success, onde:
ovg58keefc: chave secreta por completo
_success: resultado do processamento da solicitação (pagamento bem-sucedido)
Por exemplo, você pode tratar o pagamento bem-sucedido com um bloco de condição e exibir a mensagem correspondente ao usuário:

O tipo de comparação deve ser "Igualdade exata"
Para realizar um novo pagamento, é obrigatório zerar payment_sum, o link gerado anteriormente e só então reatribuir a variável payment_sum para obter um novo link
Desativação/reactivação da assinatura
No Prodamus também existem notificações sobre ativação/desativação da assinatura:

"Assinante desativou a assinatura" - se a assinatura foi cancelada manualmente (por exemplo, o usuário deixou de assinar).
Pode chegar antes do fim do período já pago. Implica uma ação à sua escolha — ignorar ou colocar sob monitoramento, tentar recuperar o assinante.
"Assinante reativou a assinatura" - restauração da assinatura.
Pode chegar se o assinante reativar a assinatura antes do fim do período já pago. Implica uma ação à sua escolha — ignorar ou remover da lista de monitoramento para recuperação.
"Desativação da assinatura" - se a assinatura for desativada após várias tentativas de cobrança malsucedidas
Como salvar os valores do callback
Após o recebimento da notificação de pagamento bem-sucedido, no pedido do cliente (variável payment_callback) será gravado o callback do Prodamus com todos os dados do pagamento recebido. A partir dele, é possível salvar os dados necessários e usá-los como desejar. Exemplo de callback:
{"date": "2021-03-30T11:44:43+03:00", "order_id": "757679", "order_num": "", "domain": "demo.payform.ru", "sum": "14.50", "customer_phone": "+77777777777", "customer_extra": "Aqui a descrição do produto", "payment_type": "Cartão plástico Visa, MasterCard, MIR", "commission": "3.5", "commission_sum": "0.51", "attempt": "1", "discount_value": "10.5", "products[0][name]": "Acesso aos materiais de estudo", "products[0][price]": "14.50", "products[0][quantity]": "1", "products[0][sum]": "14.50", "payment_status": "success", "payment_status_description": "Pagamento bem-sucedido", "payment_init": "manual"}
Ao gerar o link, você pode informar variáveis product_name e payment_description. Então, ao receber o callback, será possível acessá-las assim
product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')

Atenção: à variável payment_sum é atribuído o valor da última, depois das variáveis opcionais payment_description, product_name
O valor pode ser obtido assim
summa = get(payment_callback,'sum')
Quais callbacks estão disponíveis
Além dos callbacks principais de pagamento bem-sucedido, no chat com o usuário é exibida uma mensagem que o usuário não vê, com os seguintes textos:
O assinante desativou a assinatura (mais detalhes aqui)
O assinante reativou a assinatura (mais detalhes aqui)
Assinatura concluída
Pagamento malsucedido - observação com explicação (na captura de tela acima)
Aviso de cobrança futura - data e hora da próxima cobrança
Pedido de parcelamento com status
Exemplos de callbacks no diálogo com o cliente:
O assinante desativou a assinatura
O assinante reativou a assinatura
Assinatura concluída
Pagamento malsucedido - fundos insuficientes.
Pagamento malsucedido - cartão expirado.
Pagamento malsucedido - limite do cartão excedido.
Pagamento malsucedido - cartão perdido
Pagamento malsucedido - erro do sistema
Pagamento malsucedido - operação recusada. Entre em contato com o banco emissor do cartão.
Pagamento malsucedido - operação recusada pelo banco emissor.
Pagamento malsucedido - operação recusada pelo banco.
Aviso de cobrança futura - dd.mm.aaaa hh:mm
Pedido de parcelamento aprovado
Pedido de parcelamento cancelado
Pedido de parcelamento recusado
Você pode ler a descrição dos erros com mais detalhes aqui:
Opcionalmente, é possível configurar o envio de alguma mensagem ao usuário. Por exemplo, vamos enviar uma mensagem informando que a cobrança automática falhou. Na notificação de pagamento malsucedido com motivo específico, você pode configurar um bloco com resposta, por exemplo, assim:

Para enviar uma mensagem para todas as cobranças malsucedidas, independentemente do motivo, você pode configurar da seguinte forma:

E para todos os callbacks em que esteja presente o texto Pagamento malsucedido, o usuário receberá uma mensagem com o texto que você definiu.
Como criar pagamentos por assinatura
Como criar uma assinatura
Para criar uma assinatura, é necessário criar um produto de assinatura. Instruções detalhadas de como fazer isso: https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski
Depois, copiamos o id do produto de assinatura; abaixo é mostrado onde encontrá-lo:
Para gerar o link de pagamento da assinatura, você precisa definir o valor da variável (id do produto de assinatura) prodamus_subscription, logo em seguida a variável prodamus_pay_url.

A variável prodamus_pay_url pode ser exibida na tela como um link ou colocada em um botão com o texto "Pagar". O link tem a seguinte aparência: https://payform.ru/7p3JR8/
O processamento do resultado ocorre da mesma forma que no pagamento avulso (leia acima).
Após a assinatura ser concluída com sucesso, será adicionada ao usuário a variável customer_phone com o número de telefone informado no pagamento. O número de telefone é necessário para gerenciar a assinatura.
customer_phone é necessário para gerenciar a assinatura, se customer_email não tiver sido informado
Como criar um link de assinatura com a função get_prodamus_subscription_url
Vamos ver outra forma de gerar o link de pagamento de um produto por assinatura.
Criamos um produto de assinatura na área do Prodamus. Instruções detalhadas de como fazer isso: https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski
Depois, copiamos o id do produto de assinatura; abaixo é mostrado onde encontrá-lo:
Para obter o link de pagamento do produto por assinatura no Calculador, indicamos a função
get_prodamus_subscription_url(subscription_id, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)
Exemplo 1: Link de pagamento de produto por assinatura

link = get_prodamus_subscription_url(subscription_id, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)
Parâmetros da função:
subscription_id
ID do produto por assinatura. É possível obter o ID copiando-o na área do Prodamus (parâmetro obrigatório)
product_name
Nome do produto. (parâmetro obrigatório)
expired
tempo de vida do link de pagamento, no formato dd.mm.aaaa (por exemplo 25.01.2021). Também é possível, no campo "Calculador" informar: expired = current_date + 2 (o link será válido por 2 dias até 00:00). expired também é possível informar a data com horário exato, separados por um espaço, no formato dd.mm.aaaa hh:mm (por exemplo: 25.01.2021 12:23). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos:
time = current_time + 30
expired = "#{current_date} #{time}"
Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples ou duplas, ou o valor None
customer_phone
número de telefone do comprador, não é obrigatório se o parâmetro customer_email Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
customer_email
email do comprador, não é obrigatório se o parâmetro customer_phone Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
discount
valor do desconto. Passamos o parâmetro como número ou número com ponto: 25 ou 63.5 Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
description
descrição do produto (se não for informada, será preenchido com 'Pagamento da fatura order_id') Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.
extra_params
parâmetros adicionais que não existem nesta função.
Os possíveis parâmetros adicionais podem ser vistos no link da documentação de integração com a API do sistema de pagamento https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov
Exemplo: extra_params = {"payments_limit": "3"}
Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples / um par de aspas duplas ou o valor None.
products_for_receipt
String de 50 a 4000 caracteres no formato "descrição do pedido - valor - link para o recurso adquirido”.
Por exemplo:
“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/".
Obrigatório, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.
extra_params = {"payments_limit": "3"}
products_for_receipt = "Curso ‘Pesca de Brema’, valor da assinatura mensal de 2000 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/"
link_prodamus_sub = get_prodamus_subscription_url(618988, 'Curso ‘Pesca de Brema’', '27.03.2023 17:02', '79167777771', '[email protected]', 20, 'Melhor curso do mercado', extra_params, products_for_receipt)
Se houver várias funções para obter o link no bloco e ocorrer um erro, o valor do erro será gravado na variável error_payment_func
O erro será gravado pela última função no Calculador
Como gerenciar o status da assinatura
O método funciona apenas em assinaturas reais; no modo de demonstração, não há vinculação com cartão
Para gerenciar a assinatura, deve ser informado um dos parâmetros obrigatórios customer_phone ou customer_email.
Para permitir o cancelamento da assinatura pelo usuário, é preciso criar um bloco e chamar a função: https://store.salebot.pro/function/delete_subscription_prodamus
Com os parâmetros:
{ "customer_phone": "#{customer_phone}", "id_subscription":"#{prodamus_subscription}", "url":"https://demo.payform.ru/", "secret_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66", "switcher":"0" "profile_id":"12345" }
url - URL do formulário de pagamento informada nas configurações do construtor secret_key - chave secreta das configurações id_subscription - id do produto de assinatura customer_phone - telefone do assinante switcher = 0 é a suspensão da assinatura; se for passado 1, a assinatura é ativada novamente. profile_id - ID do perfil no sistema Prodamus
Atenção!
Se vier um id de perfil, o valor será salvo na variável profile_id.
profile_id pode ser passado para a função delete_subscription_prodamus em vez de customer_phone ou customer_email para cancelar a assinatura.
Exemplo de configuração do bloco de assinatura:

Observe que a função retorna status, que salvamos e podemos tratar como desejarmos; na desativação\ativação bem-sucedida status é igual a ok
Função para gerenciar assinatura
prodamus_subscription_switch_status(subscription_id, switcher, customer_phone, customer_email, profile_id)
id_subscription - id do produto de assinatura
switcher = 0 é a suspensão da assinatura; se for passado 1, a assinatura é ativada novamente.
customer_phone - telefone do assinante - opcional, se customer_email tiver sido informado
customer_email - email do assinante - opcional, se customer_phone tiver sido informado
profile_id - ID do perfil no sistema Prodamus

Exemplo: parâmetro customer_phone, customer_email omitido
stat = prodamus_subscription_switch_status('618117', '0', '75431312321')
Exemplo 2: parâmetro informado customer_email, customer_phone omitido
stat = prodamus_subscription_switch_status('618117', '0', '', '[email protected]')
A função retornará ok se tudo ocorrer com sucesso ou a descrição do erro
Gerenciamento de descontos na assinatura
A função define o valor do desconto para os pagamentos subsequentes da assinatura. O desconto pode ser definido para um número limitado ou ilimitado de cobranças.
prodamus_subscription_discount(subscription_id, discount, customer_phone, num, profile_id) onde: subscription_id - ID da assinatura discount - número decimal com precisão de até dois dígitos após a vírgula, o valor deve ser maior que zero e não pode exceder o valor base da assinatura customer_phone - número de telefone do cliente no formato: +79999999999 (parâmetro opcional, se houver a variável customer_email (aparece após o primeiro pagamento, veja a descrição acima)) num - quantidade de pagamentos durante os quais o desconto será aplicado (parâmetro opcional; se não for informado, a quantidade de pagamentos com desconto será ilimitada)
profile_id - ID do perfil no sistema Prodamus Em caso de execução bem-sucedida, a função retornará 'ok'; se a solicitação resultar em erro, a função retornará sua descrição.
O valor do desconto e o intervalo são sobrescritos SOMENTE se a função for chamada novamente com novos valores!
Exemplos:
1. Configuração de desconto em todos os pagamentos automáticos subsequentes no valor de 1 rublo (o número de telefone não é informado, pois será obtido automaticamente da variável customer_phone, e a quantidade de cobranças com desconto, por padrão, é por todo o período da assinatura)
r = prodamus_subscription_discount('624034', '1')
2. Configuração de desconto de 2 rublos para as próximas 3 cobranças (o número de telefone foi substituído por aspas vazias, pois será obtido automaticamente da variável customer_phone)
r = prodamus_subscription_discount('624034', '2', '', '3')
3. Exemplo de configuração de desconto em forma de número com parte decimal até os centésimos (separador ponto), os dados numéricos são informados sem aspas, o número de telefone é passado por meio da variável

r = prodamus_subscription_discount(#{prodamus_subscription}, 10.25, #{customer_phone}, 3)
Como definir a data do próximo pagamento da assinatura
Com este método, é possível adiantar a data do próximo pagamento da assinatura. A data só pode ser adiantada "para o futuro" em relação à data atual definida do próximo pagamento. Assim, aumenta-se o tempo de permanência no clube.
Por exemplo, pode ser usado como bônus para assinantes.
Para isso, é preciso usar a função:
prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)
onde:
subscription_id - ID da assinatura date - data no formato dd.mm.aaaa hh:mm ou dd.mm.aaaa, nesse caso o horário será 00:00 customer_phone - não é obrigatório; se não for informado, será puxado da variável customer_phone; se não encontrar lá também, não funcionará profile_id - ID do perfil no sistema Prodamus
Como passar parâmetros para o Prodamus
Para passar para o Prodamus os parâmetros de que você precisa (por exemplo, data de início da assinatura, desativação de parcelamento etc.), no nome da variável adicione no início prodamus_
Então, ao gerar o link de pagamento, esses parâmetros serão enviados automaticamente ao sistema de pagamento.
Como testar o pagamento
Testamos somente o pagamento!
Para que não sejam debitados valores da sua conta ao testar a integração e a configuração dos funis de pagamento, você pode usar cartões de teste
Primeiro, coloque sua página de pagamento em modo DEMO ⤵
Não se esqueça de clicar no botão "Salvar"

Para realizar um pagamento de teste, você pode usar contas de teste
Cartões de teste do Sberbank:
MIR Número do cartão 2202 2050 0001 2424 Data de validade 05/35 Código de verificação no verso 669
MasterCard Número do cartão 5469 9801 0004 8525 Data de validade 05/26 Código de verificação no verso 041 Código de verificação 3-D Secure 111111
Visa Número do cartão 4006 8009 0096 2514 Data de validade 05/26 Código de verificação no verso 941 Código de verificação 3-D Secure 111111
! Ao pagar com contas de teste, todos os funis e integrações configurados serão acionados como em um pagamento normal !
Formulário testado
Para receber pagamentos com dinheiro real, é necessário colocar o formulário em modo de operação. Ou seja, mover o botão deslizante de alternância do modo demo para a posição em que ele fique vermelho-claro
Atualizado
