# Prodamus (RU)

{% hint style="success" %}
Disponível apenas no plano "Infobiz".
{% endhint %}

## Como conectar o Prodamus

Para conectar o Prodamus, você vai precisar do URL do formulário de pagamento e da chave secreta.

<mark style="color:verde;">**URL do formulário de pagamento**</mark> você recebe após o cadastro, ele <mark style="color:verde;">**tem o formato: demo.payform.ru**</mark>

A chave secreta pode ser obtida na área do cliente; lá também é preciso informar o endereço URL para notificações.

<div data-with-frame="true"><figure><img src="/files/a4fd90309ec906bfc7859a16d29f700177954c1a" alt=""><figcaption><p>Chave secreta nas configurações do formulário da área do cliente do sistema de pagamento "Prodamus"</p></figcaption></figure></div>

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:

<div data-with-frame="true"><figure><img src="/files/4d3c2008339ebc05651ec8bd42d75f31233aa760" alt=""><figcaption></figcaption></figure></div>

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.&#x20;

<div data-with-frame="true"><figure><img src="/files/92ec01932f22e075235f28fdfa59769efaad34ab" alt=""><figcaption></figcaption></figure></div>

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>

<div data-with-frame="true"><figure><img src="/files/dd4fcd3083d2d8636136c0fad9ebe975b02f3b22" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Atenção! Após inserir a URL, обязательно clique no botão «Salvar».
{% endhint %}

Para conectar o Prodamus, é necessário acessar a seção "Adquirência"

<div data-with-frame="true"><figure><img src="/files/16a72b15f30d7c37d4c75070dc44701ff71e33e6" alt=""><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/5cc30801f20403024e87cf08293f28d1ec0ac51d" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**IMPORTANTE!** a URL do formulário de pagamento deve ser informada SEM https\://&#x20;
{% endhint %}

Com isso, a conexão está concluída. Agora vamos entender como usar essa funcionalidade.

## Как сформировать ссылку на оплату

{% hint style="success" %}
Gerar o link de pagamento no bloco pode ser feito **DE UMA DAS** maneiras disponíveis:

* [Botão com a função Pagamento ](#knopka-s-funkciei-oplata)ou
* [Função get\_prodamus\_payment\_url no Calculador](#funkciya-get_prodamus_payment_url-v-kalkulyatore) ou
* [Criação de link usando a variável payment\_sum e parâmetros adicionais](#sozdanie-ssylki-s-pomoshyu-peremennoi-payment_sum-i-dopolnitelnykh-parametrov) (versão antiga, ainda funcional)
  {% endhint %}

## Botão com a função Pagamento

{% hint style="info" %}
[O link de pagamento pode ser criado em um botão com a função "Pagamento". Neste artigo é explicado como criar esse tipo de botão](/doc/pt/chatbot/builder/botoes/botao-de-pagamento.md)
{% endhint %}

Vamos ver todos os parâmetros possíveis desse botão.&#x20;

### **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 <mark style="color:vermelho;">**parâmetros obrigatórios**</mark> "**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.&#x20;

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.

<div data-with-frame="true"><figure><img src="/files/ceb5e3449821ae07e499a981a98952c1413a003f" alt="" width="563"><figcaption><p>Janela de configurações do botão</p></figcaption></figure></div>

**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

{% hint style="warning" %}
Se não houver sistemas de pagamento conectados ao projeto, esse tipo de botão não estará disponível
{% endhint %}

**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 …"&#x20;

{% hint style="danger" %}
**NÃO É PERMITIDO** usar **aspas duplas** no nome do produto: remova-as ou substitua por aspas simples.&#x20;
{% endhint %}

**campo Valor (obrigatório).**  Nesse campo, informamos o preço do produto.&#x20;

**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&#x20;

**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

<div data-with-frame="true"><figure><img src="/files/cc4d6f3e68b3098f49ae2d191c01fccf72c9c62f" alt="" width="431"><figcaption><p>Callback após o cliente acessar o link</p></figcaption></figure></div>

Você pode configurar a lógica adicional do bot para essa notificação.&#x20;

{% hint style="info" %}
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.
{% endhint %}

E é assim que fica a página de pagamento que é aberta ao acessar o link no botão Pagamento:

<div data-with-frame="true"><figure><img src="/files/d526bcc4c2d2f7e73fbd5deab411afa5ed957398" alt="" width="563"><figcaption><p>Página de pagamento: apenas os parâmetros principais estão preenchidos no botão</p></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/3492fecd7ec2ae3802086f64c3b645b6f242dc11" alt="" width="563"><figcaption></figcaption></figure></div>

**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.&#x20;

**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.&#x20;

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}

{% hint style="danger" %}
O email e/ou telefone deve estar обязательно presente
{% endhint %}

**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.&#x20;

Instruções detalhadas de como criar um produto para assinatura: <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

{% hint style="danger" %}
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
{% endhint %}

O número de telefone informado no pagamento será necessário para gerenciar a assinatura.

{% hint style="warning" %}
Se você informar **ID do produto por assinatura**, então no callback, em caso de pagamento bem-sucedido, será enviado o ID desse produto
{% endhint %}

**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.&#x20;

*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*](https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911).&#x20;

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

1. 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:

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcA1KJHoyMF5WmLMZiJPJrQEGJs79zxoXK5U3E9k4mVus-Fg0tI-djr6QTagp5ulwposSxmJ-aq8trUQOslQyE0UeaREuM6-T5Ongn-E5tACdVmypFXBtgOJDmVvHRgOdATChhnBQ?key=OB7qKicH0kn-_i_EzQLdRA" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
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.&#x20;
{% endhint %}

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

{% hint style="success" %}
Para que o usuário consiga pagar corretamente, é recomendável tratar esse caso adicionalmente.&#x20;
{% endhint %}

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"&#x20;

Com a exibição do texto: "Desculpe, você não conseguiu a tempo e o link de pagamento não é mais válido":

<div data-with-frame="true"><figure><img src="/files/4bbd1139b441fed4b27094f23ac1095e2738d372" alt=""><figcaption><p>Diálogo na seção "Clientes"</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/03acf2022197365fac54ab7a7a4eefbd1a6cb8b2" alt=""><figcaption><p>Configuração do bloco "Condição inicial"</p></figcaption></figure></div>

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

{% hint style="danger" %}
A variável de sistema do cliente \_\_payments NÃO PODE ser excluída nem alterada!
{% endhint %}

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.

{% hint style="warning" %}
Os valores das variáveis tornam-se atuais ao passar para o próximo bloco&#x20;
{% endhint %}

### Как обработать результат

**Pagamento bem-sucedido.**

Após o pagamento ser concluído com sucesso, o bot <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> 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. \
\&#xNAN;*Para uso nas configurações do fluxo, basta copiá-lo.*&#x20;

Por exemplo: `ovg58keefc_success 44`, onde:&#x20;

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

{% hint style="info" %}
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.
{% endhint %}

Exemplo de uso:\
Passo 1. No bloco "com botão Pagamento", adicionamos botões com a função Pagamento.&#x20;

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

{% hint style="warning" %}
Importante: seleção da correspondência Igualdade exata ou Contém palavras-chave
{% endhint %}

❗️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". <br>

<div data-with-frame="true"><figure><img src="/files/698c7176f3adf676083ee13389875b7dc69b79ae" alt=""><figcaption><p>Callback de pagamento bem-sucedido no campo Condição do bloco.</p></figcaption></figure></div>

#### **Pagamento bem-sucedido para produtos com assinatura automática.**&#x20;

Após o pagamento ser concluído com sucesso, o bot <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> receberá um CALLBACK composto pelos 10 primeiros caracteres da chave secreta do sistema de pagamento, da palavra \_success e <mark style="color:verde;">**após um espaço, do ID do produto por assinatura**</mark>

Por exemplo: `214009eefc_success 618117`, onde:&#x20;

`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

<div data-with-frame="true"><figure><img src="/files/83305cf68fdc20e30ae1e90132fe2ff3e7d6b077" alt=""><figcaption><p>Exemplo de callback do Prodamus para produtos com assinatura automática</p></figcaption></figure></div>

**Pagamento com erro**

<mark style="color:azul;">**Em caso de erro no processamento do pagamento**</mark> o bot <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> 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.&#x20;

`44` : valor do pagamento

{% hint style="warning" %}
Depende do sistema de pagamento. Nem todos os sistemas de pagamento enviam callback de erro de pagamento.
{% endhint %}

Se o valor informado nas configurações do botão <mark style="color:azul;">**for diferente do valor pago pelo cliente**</mark>, então <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> 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:&#x20;

`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`&#x20;

{% hint style="info" %}
Você define o nome da variável por conta própria. Nos prints, há exemplos de nomes de variáveis.&#x20;
{% endhint %}

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".&#x20;

**EXEMPLO de link de pagamento:** <https://payform.ru/7p3JR8/>

{% tabs %}
{% tab title="Calculadora" %}
Exemplo 1:

<figure><img src="/files/e5bbed97365646330410838a83f38809c9c59f5e" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Descrição dos parâmetros" %}
`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:**

<table><thead><tr><th width="253">Parâmetro</th><th>Valor do parâmetro</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td>valor a pagar. Você pode passar um número inteiro ou um número com ponto. Por exemplo 25 ou 52.5  <mark style="color:verde;">(parâmetro obrigatório)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nome do produto. <mark style="color:verde;">(parâmetro obrigatório)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>tempo de vida do link de pagamento, no formato <strong>dd.mm.aaaa</strong> (por exemplo 25.01.2021). Também é possível, no campo "Calculador<em>"</em> informar: <em>expired = current_date + 2</em> (o link será válido por 2 dias até 00:00).  <code>expired</code> também é possível informar a data com horário exato, separados por um espaço, no formato <strong>dd.mm.aaaa hh:mm</strong> (por exemplo: <em>25.01.2021 12:23</em>). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos: </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples ou duplas, ou o valor None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>número de telefone do comprador, não é obrigatório se o parâmetro <code>customer_email</code> Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email do comprador, não é obrigatório se o parâmetro <code>customer_phone</code> Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.</td></tr><tr><td><strong><code>discount</code></strong></td><td>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.</td></tr><tr><td><strong><code>description</code></strong></td><td>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.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p>parâmetros adicionais que não existem nesta função.<br>Os possíveis parâmetros adicionais podem ser vistos no link da documentação de integração com a API do sistema de pagamento <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Exemplo: extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}<br></p><p><em>Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples / um par de aspas duplas ou o valor None.</em></p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>String de 50 a 4000 caracteres no formato</strong> "descrição do pedido - valor - link para o recurso adquirido”. </p><p>Por exemplo:</p><p>“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/". <strong>Obrigatório</strong>, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemplo de código para copiar" %}
**extra\_params** = {<mark style="color:vermelho;">"payments\_limit"</mark>: <mark style="color:vermelho;">"3"</mark>}&#x20;

**products\_for\_receipt** = "<mark style="color:vermelho;">Curso ‘Pesca de Brema’</mark>, <mark style="color:vermelho;">valor da assinatura mensal de 4999 reais</mark>, <mark style="color:vermelho;">link para a página do curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/>"</mark>&#x20;

**link\_prodamus\_url** = get\_prodamus\_payment\_url(<mark style="color:azul;">4999</mark>, <mark style="color:vermelho;">'Curso ‘Pesca de Brema’'</mark>, <mark style="color:vermelho;">'27.03.2023 17:00', '79167777771'</mark>, <mark style="color:vermelho;">'<mail@mail.com>'</mark>, <mark style="color:azul;">20</mark>, <mark style="color:vermelho;">'Melhor curso do mercado'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
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
{% endhint %}

## Criação de link usando a variável payment\_sum e parâmetros adicionais

{% hint style="info" %}
Atenção: à variável **payment\_sum** é atribuído o valor da última, depois das variáveis opcionais **payment\_description, product\_name** etc.&#x20;
{% endhint %}

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**.&#x20;

**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".&#x20;

Antes da declaração da variável **payment\_sum** você também pode informar as seguintes variáveis opcionais:&#x20;

| Parâmetros da função       | Descrição do parâmetro                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **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**          | <p>também é possível informar a data com horário exato, separados por um espaço, no formato <strong>dd.mm.aaaa hh:mm</strong> (por exemplo: <em>25.01.2021 12:23</em>). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos: </p><p>time = current\_time + 30<br>link\_expired = "#{current\_date} #{time}"</p>                                                                                        |
| **currency**               | <p>moeda do pagamento, por padrão "rub". <br>Lista completa de argumentos: </p><p>rub</p><p>usd</p><p>eur</p><p>kzt<br>Esse parâmetro deve ser passado em letras minúsculas.</p>                                                                                                                                                                                                                                                                                   |
| **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** | <p><strong>String de 50 a 4000 caracteres no formato</strong> "descrição do pedido - valor - link para o recurso adquirido”. </p><p>Por exemplo:</p><p>“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: <https://www.lovilescha.ru/courses/poimai_kilogram/>". </p><p><mark style="color:vermelho;"><strong>Obrigatório</strong></mark>, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.</p> |
| **payment\_sum**           | (obrigatório) valor do pagamento                                                                                                                                                                                                                                                                                                                                                                                                                                   |

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/3FazAmQkph5i0_iKy4G_HNerzVQP9Bg3_PRB_5rHZQ6vAZB_1Hxv1imi3gJCl7pU_GY7eAiiwZExJA-i4Ps5PgSJt7OXKbSL-GT27gWca_u7rFM8YEsNJ7Z-VVXTAR-jSw_-p2I0" alt=""></div>

{% hint style="success" %}
Variáveis **discount\_value**, **customer\_phone**, **customer\_email** e **link\_expired** também são válidas para assinaturas.
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/339c0cb780b8f06c91c01c8b96bfa67ba7c04f37" alt="" width="524"><figcaption></figcaption></figure></div>

Exemplo de implementação.

No primeiro bloco, definimos o valor do pagamento:

<div data-with-frame="true"><figure><img src="/files/8e03f16f5b621106f4ddef7f9dce35b9f0e3b50d" alt=""><figcaption></figcaption></figure></div>

Depois, exibimos no local desejado a URL, o link prodamus\_pay\_url:

<div data-with-frame="true"><figure><img src="/files/0384f77ec4823989bb015d8defd0066d7f72bb96" alt=""><figcaption></figcaption></figure></div>

**prodamus\_available\_payment\_methods** é declarada antes da declaração de payment\_sum.

Valores possíveis: &#x20;

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>pagamento com cartão emitido no Brasil </td></tr><tr><td><strong>ACkz</strong> </td><td>pagamento com cartão do Cazaquistão </td></tr><tr><td><strong>ACf</strong></td><td>pagamento com cartões de países da CEI, exceto o Brasil</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Pagamento em EUR com cartão de todos os países, exceto Brasil e Bielorrússia </td></tr><tr><td><strong>SBP</strong></td><td>Pagamento rápido, sem inserir os dados do cartão. Para cartões do Brasil </td></tr><tr><td><strong>QW</strong> </td><td>Qiwi wallet </td></tr><tr><td><strong>PC</strong></td><td>Юmoney </td></tr><tr><td><strong>GP</strong></td><td>terminal de pagamento </td></tr><tr><td><strong>sbol</strong></td><td>Sberбанк online <strong>invoice</strong> - Pagamento por boleto <strong>installment</strong> - Parcelamento pelo Prodamus </td></tr><tr><td><strong>installment_5_21</strong></td><td>Parcelamento pelo Prodamus em 3 meses </td></tr><tr><td><strong>installment_6_28</strong></td><td>Parcelamento pelo Prodamus em 6 meses </td></tr><tr><td><strong>installment_10_28</strong></td><td>Parcelamento pelo Prodamus em 10 meses </td></tr><tr><td><strong>installment_12_28</strong> </td><td>Parcelamento pelo Prodamus em 12 meses <strong>installment_0_0_3</strong> - Parcelamento pelo Tinkoff em 3 meses</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Parcelamento pelo Tinkoff em 4 meses </td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Parcelamento pelo Tinkoff em 6 meses </td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Parcelamento pelo Tinkoff em 10 meses</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Parcelamento pelo Tinkoff em 12 meses</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Parcelamento pelo Tinkoff em 24 meses</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Parcelamento pelo Tinkoff em 36 meses </td></tr><tr><td><strong>credit</strong> </td><td>Crédito pelo Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td>Parcelamento pela VsegdaDa em 4 meses (não funciona com available_payment_methods) </td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td>Parcelamento pela VsegdaDa em 6 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td>Parcelamento pela VsegdaDa em 10 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td>Parcelamento pela VsegdaDa em 12 meses sem juros</td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td>Parcelamento pela VsegdaDa em 24 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td>Parcelamento pela VsegdaDa em 36 meses</td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Parcelamento pelo SberBank em 6 meses </td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Parcelamento pelo SberBank em 10 meses</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Parcelamento pelo SberBank em 12 meses</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Parcelamento pelo SberBank em 24 meses</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Parcelamento pelo SberBank em 36 meses</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>Parcelamento pelo OTP Bank em 6 meses</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Parcelamento pelo OTP Bank em 10 meses</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Parcelamento pelo OTP Bank em 12 meses</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Parcelamento pelo OTP Bank em 24 meses</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Parcelamento pelo OTP Bank em 36 meses</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Parcelamento pelo MTS Bank em 6 meses</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Parcelamento pelo MTS Bank em 10 meses</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Parcelamento pelo MTS Bank em 12 meses</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Parcelamento pelo MTS Bank em 24 meses</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Parcelamento pelo MTS Bank em 36 meses</td></tr><tr><td><strong>monetaworld</strong></td><td>Cartões de bancos do mundo, exceto o Brasil </td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Parcelamento pelo Sber</td></tr></tbody></table>

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

{% hint style="warning" %} <mark style="color:vermelho;">**Importante!**</mark> 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
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/68e2ef1852fe80bd35122e256d4ddc0ab51a3649" alt=""><figcaption><p>Configurações da página de pagamento do sistema de pagamento "Prodamus"</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/4bcef8faad2e309826c84b6d6cabfede0973a32f" alt=""><figcaption><p>Opções de pagamento conectadas à sua página</p></figcaption></figure></div>

## Как обработать результат

### 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: 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_success** ou 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_fail**. Além disso, após o pagamento bem-sucedido, a variável **prodamus\_payment\_completed** é definida como **True**.

{% hint style="warning" %}
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”
{% endhint %}

{% hint style="warning" %}
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 <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> 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. \
\&#xNAN;*Para uso nas configurações do fluxo, basta copiá-lo.*&#x20;

Por exemplo: `ovg58keefc_success`, onde:&#x20;

ovg58keefc: chave secreta **por completo**

\_success: resultado do processamento da solicitação (pagamento bem-sucedido)
{% endhint %}

Por exemplo, você pode tratar o pagamento bem-sucedido com um bloco de condição e exibir a mensagem correspondente ao usuário:

<div data-with-frame="true"><figure><img src="/files/beebae07e9102b3fe5a74ce0d6c783060b86d83b" alt=""><figcaption></figcaption></figure></div>

{% hint style="danger" %}
O tipo de comparação deve ser "**Igualdade exata**"
{% endhint %}

{% hint style="warning" %}
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&#x20;
{% endhint %}

### Desativação/reactivação da assinatura

No Prodamus também existem notificações sobre ativação/desativação da assinatura:

<div data-with-frame="true"><figure><img src="/files/948376459fcace28c7769468f0783e8126b14e73" alt=""><figcaption></figcaption></figure></div>

1. "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.

2. "Assinante reativou a assinatura" - restauração da assinatura.&#x20;

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.

3. "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&#x20;

`product = get(payment_callback,'products[0][name]')`&#x20;

`description = get(payment_callback,'customer_extra')`

<div data-with-frame="true"><figure><img src="/files/d9e1d503e43251e5aebbb1e09c6a2f931b2e1708" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Atenção: à variável **payment\_sum** é atribuído o valor da última, depois das variáveis opcionais **payment\_description, product\_name**
{% endhint %}

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:

1. O assinante desativou a assinatura ([mais detalhes aqui](#deaktivaciya-reaktivaciya-podpiski))
2. O assinante reativou a assinatura ([mais detalhes aqui](#deaktivaciya-reaktivaciya-podpiski))
3. Assinatura concluída
4. Pagamento malsucedido - observação com explicação (na captura de tela acima)
5. Aviso de cobrança futura - data e hora da próxima cobrança
6. Pedido de parcelamento com status

Exemplos de callbacks no diálogo com o cliente:&#x20;

* **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**&#x20;
* **Pagamento malsucedido - operação recusada. Entre em contato com o banco emissor do cartão.**&#x20;
* **Pagamento malsucedido - operação recusada pelo banco emissor.**
* **Pagamento malsucedido - operação recusada pelo banco.**&#x20;
* **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:

{% embed url="<https://help.prodamus.ru/payform/integracii/tekhnicheskaya-dokumentaciya-po-avtoplatezham/kody-oshibok>" %}
Prodamus: códigos de erro
{% endembed %}

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:

<div data-with-frame="true"><figure><img src="/files/6ccddda4dcd427d1584ebe2a69b548cea480790b" alt=""><figcaption><p>exemplo de bloco para notificações de Pagamento malsucedido com motivo específico</p></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/d6cc2385ebc55242b5bb1428fdde03621b4bfc68" alt=""><figcaption><p>exemplo de bloco para notificações de Pagamento malsucedido com qualquer explicação de motivo</p></figcaption></figure></div>

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:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Criação de produto por assinatura"></div>

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**.&#x20;

<div data-with-frame="true"><figure><img src="/files/fa2d051fa3ff4ea750825518837ffee88c9667da" alt="" width="563"><figcaption></figcaption></figure></div>

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/><br>

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

{% hint style="warning" %}
customer\_phone é necessário para gerenciar a assinatura, se customer\_email não tiver sido informado
{% endhint %}

### 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.&#x20;

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:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Criação de produto por assinatura"></div>

Para obter o link de pagamento do produto por assinatura no Calculador, indicamos a função&#x20;

`get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

{% tabs %}
{% tab title="Calculadora" %}
Exemplo 1: Link de pagamento de produto por assinatura

<figure><img src="/files/744f2b8a7738f4df4c5a09489604692e94433e4c" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Descrição dos parâmetros" %}
`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:**

<table><thead><tr><th width="253">Parâmetro</th><th>Valor do parâmetro</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>ID do produto por assinatura</strong>. É possível obter o ID copiando-o na área do Prodamus  <mark style="color:verde;">(parâmetro obrigatório)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nome do produto. <mark style="color:verde;">(parâmetro obrigatório)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>tempo de vida do link de pagamento, no formato <strong>dd.mm.aaaa</strong> (por exemplo 25.01.2021). Também é possível, no campo "Calculador<em>"</em> informar: <em>expired = current_date + 2</em> (o link será válido por 2 dias até 00:00).  <code>expired</code> também é possível informar a data com horário exato, separados por um espaço, no formato <strong>dd.mm.aaaa hh:mm</strong> (por exemplo: <em>25.01.2021 12:23</em>). Também é possível usar variáveis padrão; por exemplo, vamos definir o tempo de validade do link para 30 minutos: </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples ou duplas, ou o valor None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>número de telefone do comprador, não é obrigatório se o parâmetro <code>customer_email</code> Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email do comprador, não é obrigatório se o parâmetro <code>customer_phone</code> Para ignorar esse parâmetro, passe no lugar dele aspas simples ou duplas.</td></tr><tr><td><strong><code>discount</code></strong></td><td>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.</td></tr><tr><td><strong><code>description</code></strong></td><td>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.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td>parâmetros adicionais que não existem nesta função.<br>Os possíveis parâmetros adicionais podem ser vistos no link da documentação de integração com a API do sistema de pagamento <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Exemplo: <code>extra_params = {"payments_limit": "3"}</code><br><br><em>Para ignorar esse parâmetro, passe no lugar dele um par de aspas simples / um par de aspas duplas ou o valor None.</em></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>String de 50 a 4000 caracteres no formato</strong> "descrição do pedido - valor - link para o recurso adquirido”. </p><p>Por exemplo:</p><p>“Curso ‘Pesca de Brema’, valor de 4999 reais, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/". </p><p><strong>Obrigatório</strong>, se você não tiver sua própria caixa online, para a fiscalização de pagamentos via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemplo de código para copiar" %}
**extra\_params** = {<mark style="color:vermelho;">"payments\_limit"</mark>: <mark style="color:vermelho;">"3"</mark>}&#x20;

**products\_for\_receipt** = <mark style="color:vermelho;">"Curso ‘Pesca de Brema’</mark>, <mark style="color:vermelho;">valor da assinatura mensal de 2000 reais</mark>, <mark style="color:vermelho;">link para a página do curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/>"</mark>&#x20;

**link\_prodamus\_sub** = get\_prodamus\_subscription\_url(<mark style="color:azul;">618988</mark>, <mark style="color:vermelho;">'Curso ‘Pesca de Brema’</mark>', <mark style="color:vermelho;">'27.03.2023 17:02', '79167777771', '<mail@mail.com>'</mark>, <mark style="color:vermelho;">20</mark>, <mark style="color:vermelho;">'Melhor curso do mercado'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
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
{% endhint %}

### Como gerenciar o status da assinatura

{% hint style="info" %}
O método funciona apenas em assinaturas reais; no modo de demonstração, não há vinculação com cartão
{% endhint %}

{% hint style="warning" %}
Para gerenciar a assinatura, deve ser informado um dos parâmetros obrigatórios customer\_phone ou customer\_email.
{% endhint %}

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

{% hint style="danger" %}
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.
{% endhint %}

Exemplo de configuração do bloco de assinatura:

<div data-with-frame="true"><figure><img src="/files/1058159561b1e69782a76c9fad55bdbf29e76537" alt=""><figcaption></figcaption></figure></div>

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)

&#x20;**id\_subscription** - id do produto de assinatura&#x20;

**switcher** = 0 é a suspensão da assinatura; se for passado 1, a assinatura é ativada novamente.&#x20;

**customer\_phone** - telefone do assinante - opcional, se customer\_email tiver sido informado&#x20;

**customer\_email** - email do assinante - opcional, se customer\_phone tiver sido informado

profile\_id - ID do perfil no sistema Prodamus

<div data-with-frame="true"><figure><img src="/files/4b7a567af5145846e2f7981cf5a27b3f261f772e" alt=""><figcaption><p>Exemplo de uso da função prodamus_subscription_switch_status</p></figcaption></figure></div>

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', '', 'examp@mail.com')`

{% hint style="success" %}
A função retornará ok se tudo ocorrer com sucesso ou a descrição do erro
{% endhint %}

### 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.**

{% hint style="warning" %}
O valor do desconto e o intervalo são sobrescritos SOMENTE se a função for chamada novamente com novos valores!
{% endhint %}

#### **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)&#x20;

r = prodamus\_subscription\_discount('624034', '1')

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/_4i_sKKn39tHVdnb47xgj8fxfP_x9UGMWLaierBnpup9LCZMdVT0G9AmIOa8S_uMrVXWQIH6rvZnujCYPGcphkYvwFbCXEh819tWIjGIM4mHvd3afSlPzhZfcWk6D1z1tyBwFrZV" alt="Exemplo 1" width="563"></div>

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)&#x20;

r = prodamus\_subscription\_discount('624034', '2', '', '3')

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/IgutVRIqTFbaof9A14qdQRLCB6oop4mSAIew5s3lz62Kb4YVHdHJEt6GuC7AACStDgRiR1d_XEG1k5Dj7c2M-VNtci16JbklMTEla8_RNWD7wBNeG649g0lnFiMZilhri3phwKr-" alt="Exemplo 2" width="563"></div>

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

<div data-with-frame="true"><figure><img src="/files/d52766dea22ca13b932b56aae3d05c87e13a42b3" alt="" width="563"><figcaption></figcaption></figure></div>

r = prodamus\_subscription\_discount(#{prodamus\_subscription}, 10.25, #{customer\_phone}, 3)

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/xJVbZ3Q5f6LzCsYtuX-JqaKYPc69lS6Wi4yA0ui2vBxmFkXXGIHSqgO2VoK0rzDPdNG-HxVpAnpRcmbZXQ_oSrtT7ijJcQA6ZOwjXLbKP8WsCFBip-4DwRnVHpz-fIPRt_Wldo0h" alt="Exemplo 3" width="563"></div>

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

{% hint style="success" %}
Por exemplo, pode ser usado como bônus para assinantes.
{% endhint %}

Para isso, é preciso usar a função:

**prodamus\_subscription\_payment\_date(subscription\_id, date, customer\_phone, profile\_id)**&#x20;

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\_&#x20;

Então, ao gerar o link de pagamento, esses parâmetros serão enviados automaticamente ao sistema de pagamento.

## Como testar o pagamento

{% hint style="info" %}
Testamos somente o pagamento!
{% endhint %}

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&#x20;

{% hint style="warning" %}
Primeiro, coloque sua página de pagamento em modo DEMO ⤵

Não se esqueça de clicar no botão "Salvar"
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/bc497ac61b2754ae12b0fb5a34b9308259226b0c" alt=""><figcaption></figcaption></figure></div>

#### Para realizar um pagamento de teste, você pode usar contas de teste

Cartões de teste do Sberbank:&#x20;

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

{% hint style="success" %}
! Ao pagar com contas de teste, todos os funis e integrações configurados serão acionados como em um pagamento normal !&#x20;
{% endhint %}

Formulário testado

{% hint style="danger" %}
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
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/pt/integrations/payment/prodamus/prodamus-ru.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
