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

Instrução detalhada 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
Este endereço precisa ser informado nas configurações em dois lugares.
Na página principal de configurações, você pode escolher o modo de funcionamento do formulário: modo demo sem pagamentos ou modo de pagamentos:

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

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! Depois de inserir a URL, обязательно clique no botão «Salvar».
Para conectar o Prodamus, é necessário ir para a seção "Cobrança"

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

IMPORTANTE! a url do formulário de pagamento é informada SEM https://
Com isso, a conexão está concluída. Agora vamos entender como usar essa funcionalidade.
Como gerar um link de pagamento
Gerar um link de pagamento no bloco pode ser feito POR UM DOS métodos disponíveis:
Criação do link usando a variável payment_sum e parâmetros adicionais (versão funcional antiga)
Botão com a função Pagamento
Vamos considerar todos os parâmetros possíveis desse botão.
Parâmetros obrigatórios do botão Pagamento para Prodamus
Para gerar um link de pagamento nas configurações do botão, é necessário informar parâmetros obrigatórios "Valor", "Nome do produto", além do parâmetro "Conteúdo pago", se você não tiver uma caixa registradora online própria e quiser receber a nota fiscal do Prodamus.
Ao acessar a página de checkout, as informações do produto e do preço já estarão preenchidas antecipadamente, e o cliente só precisará informar seus contatos. Se nas configurações do botão você informar o e-mail e\ou telefone do usuário, na página de checkout serão exibidos os contatos do pagador e as informações do produto e do preço.

campo Texto. Este texto será exibido no botão com o link de pagamento na mensagem
campo Função. Para criar um botão para fornecer o link de pagamento, selecione a função Pagamento
campo Sistema de pagamento. Na lista são exibidos 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). Neste campo você deve informar o nome do produto. Quanto mais preciso for o nome do produto, melhor. Por exemplo: não "Telefone", mas "Smartphone Xiaomi modelo …"
NÃO É PERMITIDO usar aspas duplas no nome do produto: remova ou substitua por aspas simples.
campo Valor (obrigatório). Neste campo informamos o valor do produto.
menu Informações adicionais. Ao clicar neste botão, serão abertos campos adicionais para gerar o link
Descrição do pedido
Desconto em rublos
Variável com o e-mail do comprador
Variável com o número de telefone do comprador
Tempo de vida do link
ID do produto para assinatura (para criar cobranças recorrentes)
Conteúdo pago
caixa de seleção Notificar sobre clique. Para acompanhar o acesso ao link de pagamento, você pode marcar a caixa. Nesse caso, ao clicar no botão, uma notificação chegará ao diálogo com o cliente no Salebot informando que o acesso pelo link foi realizado

A partir dessa notificação, é possível configurar a lógica posterior de funcionamento do bot.
Muitos sistemas de pagamento oferecem suporte a caixas registradoras online em nuvem, elas são necessárias conforme a Lei 54-FZ. Leia as particularidades da emissão de recibos no site do sistema de pagamento escolhido para não passar por uma situação constrangedora com a Receita Federal.
E a página de pagamento que é aberta ao acessar o link no botão Pagamento tem esta aparência:

Parâmetros adicionais para gerar o link de pagamento

campo Descrição do pedido. As informações informadas neste campo serão exibidas na página de pagamento no campo Dados adicionais
campo Desconto. Neste campo você pode informar o valor do desconto em rublos ou em rublos e centavos. Para informar um valor com centavos, usamos ponto como separador: 50.99 Na página de pagamento, o campo Valor a pagar será exibido já com o desconto, e o preço principal do produto ficará riscado.
Campo Variável com o e-mail do comprador (opcional, se o número de telefone foi informado) Neste campo é informado o e-mail do usuário (cliente). É possível indicar a variável em que o e-mail do usuário está armazenado.
Por exemplo, #{email}
Campo Variável com o número de telefone do comprador (opcional, se o e-mail foi informado). Neste campo você pode indicar a variável na qual o número de telefone do comprador está gravado no formato 79000000000 Por exemplo, #{phone}
O e-mail e/ou telefone devem estar obrigatoriamente presentes
campo Tempo de vida do link. Você pode informar uma data no formato dd.mm.aaaa hh:mm (por exemplo 25.01.2021 11:00) ou usar variáveis para definir o prazo de validade do link.
Exemplo de uso da variável: #{link_expired}
campo ID do produto por assinatura. Para executar uma cobrança recorrente, envie o valor do ID do produto. Para criar uma assinatura, é necessário criar um produto de assinatura.
Instrução detalhada 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 será 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 o gerenciamento da 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, se você não tiver uma caixa registradora online própria. Neste campo, você deve informar a descrição da compra, o valor e o link do recurso com o conteúdo.
Por exemplo: Curso ‘Trançado de cabelos’, valor de 3000 rublos, link para a página do curso: https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911.
Esses dados são necessários para envio à Receita Federal.
Botão com a função Pagamento
Se você informar o tempo de vida do link, então, no caso de
Quando o usuário solicitou o link de pagamento durante seu período ativo (ou seja, quando seu prazo de validade ainda não terminou) e ele está no diálogo, ele não conseguirá pagar e receberá uma notificação deste tipo:
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 uma condição na qual você informe que, se chegar uma notificação desse tipo, error_payment_button == "Erro: O prazo de validade do link deve ser posterior à data atual"
Com o texto: "Desculpe, você não chegou 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 serviço do cliente __payments , que armazena o valor, o identificador do link criado, necessário para identificar o webhook do sistema de pagamento.
A variável de serviço 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.
O valor da variável error_payment_button receberá o texto do erro ou a resposta com erro do sistema de pagamento.
Os valores das variáveis passam a ficar atualizados ao avançar para o próximo bloco
Como processar o resultado
Pagamento bem-sucedido.
Após o pagamento bem-sucedido, no bot AUTOMATICAMENTE chegará um CALLBACK, composto pelos primeiros 10 caracteres da chave secreta do sistema de pagamento, a palavra _success e, depois de um espaço, o valor do pagamento. Para usar nas configurações do esquema, basta copiá-lo.
Por exemplo: ovg58keefc_success 44, onde:
ovg58keefc : primeiros 10 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 NÃO SÃO VISÍVEIS para o usuário. 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 você informar o callback de pagamento bem-sucedido no campo Condição do bloco "Condição inicial".
Importante: escolha da correspondência Igualdade exata ou Por presença de palavras-chave
❗️Se você decidir verificar o pagamento exatamente na seta pela condição, pense na lógica do seu funil. Caso o cliente saia do bloco com a transição por condição com callback, a transição para o bloco não acontecerá. Esse método de verificação faz sentido apenas quando o cliente não muda sua posição no funil (posição no esquema). Em esquemas nos quais o cliente se move entre blocos, é melhor usar a opção com a indicação do callback no bloco "Condição inicial".

Pagamento bem-sucedido para produtos com assinatura automática.
Após o pagamento bem-sucedido, no bot AUTOMATICAMENTE chegará um CALLBACK composto pelos 10 primeiros caracteres da chave secreta do sistema de pagamento, a palavra _success e depois de um espaço, o 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 no bot AUTOMATICAMENTE chegará um CALLBACK composto pelos 10 caracteres da chave secreta do sistema de pagamento, a palavra _fail e, depois de um espaço, o 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 concluído ou ocorreu um erro.
44 : valor do pagamento
Depende do sistema de pagamento. Nem todos os sistemas enviam callback de erro de pagamento.
Se o valor informado nas configurações do botão for diferente do valor que o cliente pagou, então AUTOMATICAMENTE chegará um CALLBACK composto por 10 caracteres da chave secreta do sistema de pagamento, a palavra _different_amounts e, depois de um espaço, o ID exclusivo 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 exclusivo do pagamento
Função get_prodamus_payment_url na Calculadora
Para gerar o link de pagamento, você pode usar a função get_prodamus_payment_url no bloco Calculadora.
No campo Calculadora, atribuímos um valor à variável usando a função get_prodamus_payment_url
O nome da variável é definido por você. Nas capturas de tela 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. É possível informar um número inteiro e 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 "Calculadora" 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, separado por 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 pular esse parâmetro, envie 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 pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
customer_email
e-mail do comprador, não é obrigatório se o parâmetro customer_phone Para pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
discount
valor do desconto. Envie um número ou um número com ponto: 25 ou 63.5 Para pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
description
descrição do produto (se não for informada, é preenchido com 'Pagamento da fatura order_id') Para pular esse parâmetro, envie 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 trabalho 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 pular esse parâmetro, envie no lugar dele um par de aspas simples/um par de aspas duplas ou o valor None.
products_for_receipt
Linha 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 rublos, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/". Obrigatório, se você não tiver uma caixa registradora online própria, para a fiscalização dos pagamentos via Prodamus.
extra_params = {"payments_limit": "3"}
products_for_receipt = "Curso ‘Pesca de brema’, valor de 4999 rublos, 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', 'mail@mail.com', 20, 'Melhor curso do mercado', extra_params, products_for_receipt)
Se houver várias funções no bloco para obter o link e ocorrer um erro, o valor do erro será gravado na variável error_payment_func
O erro será registrado na última função na Calculadora
Criação do link usando a variável payment_sum e parâmetros adicionais
Atenção: à variável payment_sum é atribuído o último valor, após as variáveis opcionais payment_description, product_name etc.
Para gerar o link de pagamento, basta definir na campo Calculadora o valor da variável payment_sum. Logo em seguida aparecerá 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 também é possível informar as seguintes variáveis opcionais:
product_name
nome do produto (se não for informado, é preenchido com 'Pagamento da fatura order_id') - na captura abaixo é mostrado onde isso aparece
payment_description
descrição do produto (se não for informada, é preenchido com 'Pagamento da fatura order_id', veja a captura abaixo) - na captura abaixo é mostrado onde isso aparece
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
e-mail 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 "Calculadora" 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, separado por 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 Este parâmetro deve ser informado 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 curta 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
Linha 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 rublos, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/".
Obrigatório, se você não tiver uma caixa registradora online própria, para a fiscalização dos 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 é declarado antes de payment_sum.
Possíveis valores:
AC
pagamento com cartão emitido na Rússia
ACkz
pagamento com cartão do Cazaquistão
ACf
pagamento com cartões de países da CEI, exceto a Rússia
ACEURNMBX
Pagamento com cartão em EUR de todos os países, exceto RF e RB
SBP
Pagamento rápido, sem inserir os dados do cartão. Para cartões da RF
QW
Carteira Qiwi
PC
Юmoney
GP
terminal de pagamento
sbol
Sberbank Online fatura - Pagamento por fatura parcelamento - Em parcelas da Prodamus
installment_5_21
Em parcelas da Prodamus por 3 meses
installment_6_28
Em parcelas da Prodamus por 6 meses
installment_10_28
Em parcelas da Prodamus por 10 meses
installment_12_28
Em parcelas da Prodamus por 12 meses installment_0_0_3 - Parcelamento da Tinkoff por 3 meses
installment_0_0_4
Parcelamento da Tinkoff por 4 meses
installment_0_0_6
Parcelamento da Tinkoff por 6 meses
installment_0_0_10
Parcelamento da Tinkoff por 10 meses
installment_0_0_12
Parcelamento da Tinkoff por 12 meses
installment_0_0_24
Parcelamento da Tinkoff por 24 meses
installment_0_0_36
Parcelamento da Tinkoff por 36 meses
crédito
Crédito da Tinkoff
vsegdada_installment_0_0_4
Parcelamento SempreSim por 4 meses (não funciona com available_payment_methods)
vsegdada_installment_0_0_6
Parcelamento da SempreSim por 6 meses
vsegdada_installment_0_0_10
Parcelamento da SempreSim por 10 meses
vsegdada_installment_0_0_12
Parcelamento da SempreSim por 12 meses sem juros
vsegdada_installment_0_0_24
Parcelamento da SempreSim por 24 meses
vsegdada_installment_0_0_36
Parcelamento da SempreSim por 36 meses
sbrf_installment_0_0_6
Parcelamento do SberBank por 6 meses
sbrf_installment_0_0_10
Parcelamento do SberBank por 10 meses
sbrf_installment_0_0_12
Parcelamento do SberBank por 12 meses
sbrf_installment_0_0_24
Parcelamento do SberBank por 24 meses
sbrf_installment_0_0_36
Parcelamento do SberBank por 36 meses
otp_installment_0_0_6
Parcelamento do Banco OTP por 6 meses
otp_installment_0_0_10
Parcelamento do Banco OTP por 10 meses
otp_installment_0_0_12
Parcelamento do Banco OTP por 12 meses
otp_installment_0_0_24
Parcelamento do Banco OTP por 24 meses
otp_installment_0_0_36
Parcelamento do Banco OTP por 36 meses
mts_installment_0_0_6
Parcelamento do Banco MTS por 6 meses
mts_installment_0_0_10
Parcelamento do Banco MTS por 10 meses
mts_installment_0_0_12
Parcelamento do Banco MTS por 12 meses
mts_installment_0_0_24
Parcelamento do Banco MTS por 24 meses
mts_installment_0_0_36
Parcelamento do Banco MTS por 36 meses
monetaworld
Cartões de bancos do mundo, exceto RF
sbrf_bnpl
Parcelado do Sber
É permitido enviar vários valores, separados por uma barra vertical. 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 de moeda: kzt - para tenge eur - para euro usd - para dólar
Então o valor indicado no link estará na moeda especificada.
Ao receber o callback payment_callback é preciso se orientar pelo parâmetro currency e currency_sum, nos quais haverá a moeda e o valor na moeda.
Importante! Verifique se há na sua página um método de pagamento na moeda necessária, pois, se ele estiver ausente, haverá redirecionamento para uma página sem métodos de pagamento. Os métodos são conectados via suporte. Você pode ver os que estão ativos nas configurações da página ou gerando o link de pagamento


Como processar o resultado
Pagamento bem-sucedido
Importante! Após um pagamento bem-sucedido ou malsucedido, o bot receberá callbacks, pelos quais você poderá entender que houve um pagamento bem-sucedido. Esses callbacks no sistema são vistos por você como mensagens do usuário; para que o usuário não possa enviá-los, eles consistem em uma chave secreta e um sufixo com o status, por exemplo: 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success ou 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail. Além disso, após um 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 conclusão bem-sucedida do pagamento”
IMPORTANTE! Para links criados com o botão com a função Pagamento ou com a função no Calculador, após o pagamento no bot AUTOMATICAMENTE chegará um CALLBACK, que consiste em caracteres da chave secreta do sistema de pagamento, da palavra _success e, após um espaço, o valor do pagamento. Para usar nas configurações do esquema, basta copiá-lo.
Por exemplo: ovg58keefc_success, onde:
ovg58keefc : chave secreta inteiramente
_success : resultado do processamento da solicitação (pagamento bem-sucedido)
Por exemplo, é possível tratar o pagamento bem-sucedido com um bloco com condição e exibir a mensagem correspondente ao usuário:

O tipo de comparação deve ser "Correspondência 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
Também no Prodamus existem notificações sobre ativação/desativação de assinatura:

"O assinante desativou a assinatura" - se a assinatura foi cancelada manualmente (por exemplo, desistiu da assinatura).
Pode chegar antes do fim do período pago atual. Implica uma ação a seu critério - ignorar ou colocar em monitoramento, tentando recuperar o assinante.
"O assinante reativou a assinatura" - restauração da assinatura.
Pode chegar se o assinante reativou a assinatura antes do fim do período pago atual. Implica uma ação a seu critério - ignorar ou remover da lista de monitoramento para recuperação.
"Desativação da assinatura" - se a assinatura for desativada após várias cobranças malsucedidas
Como salvar valores do callback
Após receber a notificação de pagamento bem-sucedido, será gravado na solicitação do cliente (variável payment_callback) 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 quiser. 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 está a descrição do produto", "payment_type": "Cartão de plástico Visa, MasterCard, МИР", "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 obtê-las assim
product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')

Atenção: à variável payment_sum é atribuído o último valor, após as 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, também é exibida no chat com o usuário uma mensagem que ele não vê, com os seguintes textos:
O assinante desativou a assinatura (mais detalhes aqui)
O assinante reativou a assinatura (mais detalhes aqui)
Assinatura encerrada
Pagamento malsucedido - acréscimo com explicação (na captura de tela acima)
Notificação de próxima cobrança - data e hora da próxima cobrança
Solicitação de parcelamento com status
Exemplos de callbacks no diálogo com o cliente:
O assinante desativou a assinatura
O assinante reativou a assinatura
Assinatura encerrada
Pagamento malsucedido - Saldo insuficiente.
Pagamento malsucedido - O cartão expirou.
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 - Recusa da operação pelo banco emissor.
Pagamento malsucedido - Recusa da operação pelo banco.
Notificação de próxima cobrança - dd.mm.aaaa hh:mm
Solicitação de parcelamento aprovada
Solicitação de parcelamento cancelada
Solicitação de parcelamento rejeitada
Você pode ler mais detalhes sobre a descrição dos erros aqui:
Opcionalmente, é possível configurar o envio de alguma mensagem ao usuário. Como exemplo, enviaremos a mensagem de que a cobrança automática falhou. Na notificação de pagamento malsucedido com uma causa específica, é possível configurar um bloco com resposta, por exemplo, assim:

Para enviar uma mensagem para todas as cobranças malsucedidas, independentemente do motivo, é possível configurar da seguinte forma:

E para todos os callbacks nos quais esteja presente o texto Pagamento malsucedido, o usuário receberá uma mensagem com o texto que você especificou.
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
Em seguida, 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 (id do produto de assinatura) da variável prodamus_subscription, logo em seguida aparecerá 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 forma: https://payform.ru/7p3JR8/
O processamento do resultado acontece da mesma forma que no pagamento único (ler acima).
Após a assinatura bem-sucedida, será adicionada ao usuário uma variável com o número de telefone informado no pagamento, customer_phone. O número de telefone é necessário para gerenciar a assinatura.
customer_phone é necessário para gerenciar a assinatura, se customer_email não for informado
Como criar um link de assinatura com a função get_prodamus_subscription_url
Vamos considerar outro modo de gerar o link de pagamento do 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
Em seguida, copiamos o ID do produto de assinatura; abaixo é mostrado onde encontrá-lo:
Para obter o link de pagamento do produto por assinatura na Calculadora, 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 do 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. O ID pode ser copiado 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 "Calculadora" 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, separado por 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 pular esse parâmetro, envie 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 pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
customer_email
e-mail do comprador, não é obrigatório se o parâmetro customer_phone Para pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
discount
valor do desconto. Envie um número ou um número com ponto: 25 ou 63.5 Para pular esse parâmetro, envie no lugar dele aspas simples ou duplas.
description
descrição do produto (se não for informada, é preenchido com 'Pagamento da fatura order_id') Para pular esse parâmetro, envie 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 trabalho 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 pular esse parâmetro, envie no lugar dele um par de aspas simples/um par de aspas duplas ou o valor None.
products_for_receipt
Linha 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 rublos, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/".
Obrigatório, se você não tiver uma caixa registradora online própria, para a fiscalização dos pagamentos via Prodamus.
extra_params = {"payments_limit": "3"}
products_for_receipt = "Curso ‘Pesca de brema’, valor da assinatura mensal de 2000 rublos, 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', 'mail@mail.com', 20, 'Melhor curso do mercado', extra_params, products_for_receipt)
Se houver várias funções no bloco para obter o link e ocorrer um erro, o valor do erro será gravado na variável error_payment_func
O erro será registrado na última função na Calculadora
Como gerenciar o status da assinatura
O método funciona apenas em assinaturas reais; no modo demo 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, é necessário 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 especificada 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 significa interromper a assinatura; se você passar 1, a assinatura será ativada novamente. profile_id - ID do perfil no sistema Prodamus
Atenção!
Se o ID do perfil chegar, o valor será salvo na variável profile_id.
profile_id pode ser passada 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 quisermos, em caso de desativação\reativaçã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 significa interromper a assinatura; se você passar 1, a assinatura será ativada novamente.
customer_phone - telefone do assinante - opcional, se customer_email for informado
customer_email - email do assinante - opcional, se customer_phone for 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 customer_email, customer_phone omitido
stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')
A função retornará ok se tudo tiver ocorrido com sucesso ou a descrição do erro
Gerenciamento de descontos na assinatura
A função define o valor do desconto para os pagamentos seguintes da assinatura. O desconto pode ser definido para uma quantidade limitada ou ilimitada 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é duas casas após o ponto, o valor deve ser maior que zero e não pode exceder o custo base da assinatura customer_phone - número de telefone do cliente no formato: +79999999999 (parâmetro opcional, se existir a variável customer_email (aparece após o primeiro pagamento, descrição acima)) num - quantidade de pagamentos aos 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 Se a solicitação for executada com sucesso, a função retornará 'ok'; se a solicitação falhar, a função retornará a descrição do erro.
O valor do desconto e o intervalo são regravados SOMENTE se a função for chamada novamente com novos valores!
Exemplos:
1. Concessão de desconto de 1 rublo em todos os pagamentos automáticos subsequentes (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. Concessão de desconto de 2 rublos nas próximas 3 cobranças (o número de telefone é substituído por aspas vazias, pois será obtido automaticamente da variável customer_phone)
r = prodamus_subscription_discount('624034', '2', '', '3')
3. Exemplo de concessão de desconto como número com parte fracionária até centésimos (separador ponto), os dados numéricos são informados sem aspas, o número de telefone é passado por 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 deslocar a data do próximo pagamento da assinatura. A data só pode ser deslocada "para o futuro" em relação à data atual já definida para o 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, é necessário 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á obtido da variável customer_phone; se também não for encontrado ali, não funcionará profile_id - ID do perfil no sistema Prodamus
Como enviar parâmetros para o Prodamus
Para enviar ao Prodamus os parâmetros que você precisa (por exemplo, data de início da assinatura, desativação do parcelamento etc.), acrescente no início do nome da variável 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 apenas o pagamento!
Para que não sejam debitados valores da sua conta durante os testes de integração e configuração dos funis de pagamento, você pode usar cartões de teste
Primeiro, coloque sua página de pagamento no 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:
МИР 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 funcionarão como em um pagamento normal !
Formulário testado
Para receber pagamentos com dinheiro real, é necessário colocar o formulário em modo de produção. Ou seja, mover o controle deslizante do modo demo para a posição em que ele fique em vermelho-claro
Atualizado