# Prodamus (KZ)

## **Como conectar o Prodamus**

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

A URL do formulário de pagamento é fornecida após o cadastro; o formato dela é: `demo.payform.ru`.

A chave secreta pode ser obtida no painel do usuário; lá também é necessário informar a URL para a qual as notificações (notification) serão enviadas.

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

[**Instrução completa sobre 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.mavibot.ai/prodamus\\_callback/result>

Esse endereço deve ser informado em dois lugares nas configurações.

Na página principal das configurações, você pode escolher o modo de funcionamento do formulário de pagamento: modo demo sem pagamento ou modo de recebimento de pagamentos.

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

O endereço para notificações deve ser informado em dois lugares nas configurações do sistema de pagamento: **na aba «Configuração do formulário»** — para pagamentos únicos (normais) e **na aba «Assinaturas»** — para pagamentos por assinatura.

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

**Endereço para notificações:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Para configurar o funcionamento com pagamentos por assinatura, **na aba «Assinaturas»** vá para a aba 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!** Depois de inserir a URL, обязательно **clique no botão «Salvar».** түймесін басыңыз.
{% endhint %}

Para conectar o Prodamus, **é necessário ir para a seção** «Cobrança».

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

Depois, basta inserir os dados acima no formulário:

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

{% hint style="warning" %}
**Importante!** Ao informar a URL do formulário de pagamento, **https\://** não adicione.
{% endhint %}

Assim, a conexão está concluída. Agora vamos ver como usar essa funcionalidade.

## Como criar um link de pagamento

### Botão com a função «Pagar»

**É possível criar um link de pagamento em um botão com a função «Pagar».**

{% hint style="info" %}
[Neste artigo é explicado como criar esse botão.](/doc/pt/chatbot/builder/botoes/botao-de-pagamento.md)
{% endhint %}

Agora vamos analisar todos os parâmetros possíveis desse botão.

### Parâmetros obrigatórios do botão «Pagar» para Prodamus

**Para criar um link de pagamento, é necessário informar os parâmetros obrigatórios nas configurações do botão:**\
«Valor», «Nome do produto», assim como o parâmetro «Conteúdo pago» — se você não tiver sua própria caixa registradora online e quiser receber um recibo do Prodamus.

Ao acessar a página do pedido, as informações sobre o produto e seu preço são exibidas antecipadamente, e o cliente apenas insere seus dados de contato.

Se o Email e/ou telefone do usuário estiverem informados nas configurações do botão, na página do pedido serão exibidos os dados de contato do pagador e as informações sobre o produto e seu preço.

<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»** — este texto será exibido na mensagem do botão com o link de pagamento.

**Campo «Função»** — para criar um botão que gere um link de pagamento, selecionamos a função «Pagar».

**Campo «Sistema de pagamento»** — os sistemas de pagamento conectados ao projeto serão exibidos na lista.\
Se nenhum sistema de pagamento estiver conectado ao projeto, esse tipo de botão não estará disponível.

**Campo «Nome do produto» (obrigatório)** — é necessário informar o nome exato do produto. Por exemplo: não «Telefone», mas sim «Smartphone Xiaomi, modelo …».\
Observação: não é permitido usar aspas duplas no nome do produto; remova-as ou substitua-as por aspas simples.

**Campo «Valor» (obrigatório)** — informamos o preço do produto.

**Menu «Informações adicionais»** — ao clicar nesse botão, são abertos campos adicionais para criar o link:

* Descrição do pedido
* Desconto em rublos
* Variável do email do comprador
* Variável do número de telefone do comprador
* Prazo de validade do link
* ID do produto para assinatura (para criar pagamento recorrente)
* Conteúdo pago

**Caixa de seleção «Notificação ao clicar»** — pode ser marcada para monitorar a abertura do link de pagamento. Nesse caso, ao clicar no botão, uma mensagem será enviada ao diálogo do cliente no Salebot informando que o link foi acessado.

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

Com essa mensagem, é possível configurar a lógica de trabalho subsequente do bot.\
Muitos sistemas de pagamento suportam caixas registradoras online em nuvem, que são exigidas conforme a lei 54-FZ.

Leia no site do sistema de pagamento escolhido as particularidades da emissão de recibos para não ter problemas com a fiscalização tributária.

Veja como fica a página de pagamento que se abre ao acessar o link no botão «Pagar»:

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

### Configurações adicionais para criar um 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 inseridas neste campo são exibidas na página de pagamento **Dados adicionais** campo.

**Campo «Desconto»** — aqui você pode informar o valor do desconto em rublos ou em rublos e centavos. Para centavos, use ponto como separador: 50.99\
Na página de pagamento, no campo **Valor a pagar** o desconto será considerado, e o preço principal do produto será riscado.

**Campo «Variável do Email do comprador»** (opcional, se o número de telefone for informado) — aqui é exibido o Email do usuário (cliente). Também é possível usar uma variável em que o Email esteja salvo, por exemplo: `#{email}`

**Campo «Variável do número de telefone do comprador»** (opcional, se o Email for informado) — aqui você pode usar uma variável com o número de telefone do comprador, formato: 79000000000, por exemplo: `#{phone}`\
É obrigatório informar Email e/ou telefone.

**Campo «Prazo de validade do link»** — a data `dd.mm.aaaa hh:mm` pode ser informada nesse formato (por exemplo, 25.01.2021 11:00) ou o prazo de expiração do link pode ser definido por uma variável. Por exemplo: `#{link_expired}`

**Campo «ID do produto para assinatura»** — informe o ID do produto para criar o pagamento recorrente. Para criar uma assinatura, é necessário criar um produto de assinatura.\
Instrução completa: [Criação e configuração de assinaturas no Prodamus](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Se um ID de produto for informado para a assinatura, o valor do pagamento não será considerado. As informações do produto são obtidas do cartão do produto no painel do Prodamus.\
O número de telefone informado no pagamento será necessário para gerenciar a assinatura.\
Se um ID de produto for informado para a assinatura, em caso de pagamento bem-sucedido, o callback retornará o ID desse produto.

**Campo «Conteúdo pago»** (condicionalmente obrigatório) — esses dados são necessários para a fiscalização do pagamento via Prodamus, se você não tiver sua própria caixa registradora online. Neste campo, são informados a descrição da compra, o preço e o link para o conteúdo.\
Por exemplo: Curso ‘Trança de cabelo’, preço de 3000 rublos, link para a página do curso: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### Botão com a função «Pagar»

Se você informar o prazo de validade do link, ocorrerá o seguinte:\
Se o usuário solicitar o link de pagamento dentro do prazo de validade dele (ou seja, enquanto o tempo do link ainda não tiver expirado) e ele estiver no diálogo, o pagamento não poderá ser realizado, e a seguinte mensagem será exibida:

<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="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
O prazo de validade do link deve ser posterior à data atual, caso contrário o cliente não conseguirá pagar com esse link.
{% endhint %}

**2. Quando o usuário solicitar o link, se ele não estiver ativo no momento**\
Nesse caso, o botão simplesmente não será exibido. Nas variáveis do cliente `"error_payment_button"` aparecerá a variável, cujo valor será o seguinte:\
\&#xNAN;**"Erro: o prazo de validade do link deve ser posterior à data atual"**.

{% hint style="success" %}
Para que o usuário consiga pagar corretamente, recomenda-se tratar esse caso separadamente.
{% endhint %}

Crie o seguinte bloco condicional:\
Se a seguinte mensagem chegar:\
`error_payment_button == "Erro: o prazo de validade do link deve ser posterior à data atual"`

Então exiba o seguinte texto:\
\&#xNAN;**"Desculpe, você não conseguiu pagar a tempo; o link de pagamento expirou"**.

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

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

### Variáveis do cliente criadas automaticamente ao usar o botão com a função «Pagar»

No momento em que o usuário recebe o bloco com o botão «Pagar», variáveis são criadas automaticamente para o cliente:

**Variável de cliente de serviço `__payments`** — essa variável armazena o valor e o ID do link criado e é necessária para identificar o hook que vem do sistema de pagamento.

{% hint style="danger" %}
Variável de cliente de serviço `__payments`não pode ser apagada nem alterada!
{% endhint %}

**`error_payment_button` variável do cliente** é criada automaticamente se ocorrer um erro ao criar o botão.\
Nessa variável será gravado o texto do erro ou a resposta de erro recebida do sistema de pagamento.

{% hint style="warning" %}
Os valores das variáveis ficam válidos ao passar para o próximo bloco.
{% endhint %}

## Como tratar o resultado

**Pagamento bem-sucedido**\
Após um pagamento bem-sucedido, o bot recebe **um CALLBACK AUTOMÁTICO** que consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_success` e o valor do pagamento.\
Para usar na configuração do esquema, basta copiar isso.

Por exemplo: `ovg58keefc_success 44`onde:

* `ovg58keefc` — os 10 primeiros caracteres da chave secreta do sistema de pagamento
* `_success` — o resultado do processamento da solicitação (pagamento bem-sucedido)
* `44` — o valor do pagamento

{% hint style="info" %}
O usuário **NÃO VÊ os callbacks**(mensagens) que vêm do sistema de pagamento. Eles aparecem apenas na aba **«Clientes»** e ficam visíveis para o operador.
{% endhint %}

**Exemplo de uso:**\
**Passo 1.** Adicionamos ao bloco «Com botão de pagamento» os botões com a função «Pagar».\
**Passo 2.** Desse bloco, no campo **Condição de conexão** que leva ao bloco «Pagamento bem-sucedido», indicamos o callback.\
Da mesma forma, se na condição do bloco «Condição inicial» você indicar o callback de pagamento bem-sucedido, o funcionamento será semelhante.

{% hint style="warning" %}
**Importante:** escolher a opção «Correspondência exata» ou «Por presença de palavras-chave».
{% endhint %}

❗️Se você decidir verificar o pagamento pelo exato caminho indicado na condição, pense cuidadosamente na lógica do seu esquema. Se o cliente sair do bloco no qual a condição é validada pelo callback, a passagem para o bloco não ocorrerá. Esse método de verificação é melhor usado apenas quando o cliente não muda de posição no funil.

Em esquemas em que o cliente se move entre blocos, é mais eficiente usar a opção de indicar 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

Após um pagamento bem-sucedido, o bot recebe **um CALLBACK AUTOMÁTICO** que consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_success` e pelo ID do produto da assinatura.

Por exemplo: `214009eefc_success 618117`onde:

* `009eefc` — os 10 primeiros caracteres da chave secreta do sistema de pagamento
* `_success` — o resultado do processamento da solicitação (pagamento bem-sucedido)
* `618117` — ID do produto de 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**\
Em caso de erro na realização do pagamento, o bot recebe **um CALLBACK AUTOMÁTICO** que consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_fail` e o valor do pagamento.

Por exemplo: `ovg58keefc_fail 44`onde:

* `ovg58keefc` — os 10 primeiros caracteres da chave secreta do sistema de pagamento
* `_fail` — resultado do processamento da solicitação (o pagamento não foi concluído ou houve erro)
* `44` — o valor do pagamento

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

Se o valor informado nas configurações do botão diferir do valor pago pelo cliente, o bot receberá **um CALLBACK AUTOMÁTICO** chega. Ele consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_different_amounts` e o ID único do pagamento.

Por exemplo: `ovg58keefc_different_amounts 123456`onde:

* `ovg58keefc` — os 10 primeiros caracteres da chave secreta do sistema de pagamento
* `_different_amounts` — resultado do processamento da solicitação (o valor do pagamento é diferente do valor no link)
* `123456` — ID único do pagamento

## Na calculadora `get_prodamus_payment_url` função

Para criar um link de pagamento, **no bloco da Calculadora `get_prodamus_payment_url` a função** pode ser usada.\
**No campo da Calculadora** atribuímos à variável o valor dessa função: `get_prodamus_payment_url`.&#x20;

{% hint style="info" %}
Você escolhe o nome da variável. Nas capturas de tela são mostrados exemplos de nomeação de variáveis.
{% endhint %}

Nesse caso, o link de pagamento será escrito nessa variável. A variável pode ser exibida na mensagem como um link ou colocada em um botão com o texto «Pagar».

**Exemplo de link de pagamento:** [https://payform.kz/7p3JR8/](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" %}
&#x20;`your_variable =`` `**`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><strong>Valor do pagamento</strong> — pode ser informado como número inteiro ou número com ponto. Por exemplo: <code>25</code> ou <code>52.5</code>. (parâmetro obrigatório)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nome do produto</strong> (parâmetro obrigatório)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Prazo de validade do link de pagamento</strong> — <code>dd.mm.aaaa</code> no formato (por exemplo, 25.01.2021).<br>Além disso, <strong>Calculadora</strong> no campo<br><code>expired = current_date + 2</code> (o link será válido por 2 dias até 00:00).</p><p>Também é possível informar um horário exato: <code>dd.mm.aaaa hh:mm</code> (por exemplo, 25.01.2021 12:23).</p><p>Também é possível usar variáveis padrão, por exemplo, definir a validade do link por 30 minutos:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Se quiser omitir esse parâmetro, pode informar aspas simples, aspas duplas ou <code>None</code> como valor.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Número de telefone do comprador</strong> — opcional, se o parâmetro <code>customer_email</code> for informado.<br>Se quiser omitir esse parâmetro, pode informar aspas simples ou aspas duplas no lugar.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Endereço de email do comprador</strong> — opcional, se o parâmetro <code>customer_phone</code> for informado.<br>Se quiser omitir esse parâmetro, pode informar aspas simples ou aspas duplas no lugar.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Valor do desconto</strong> — o parâmetro pode ser informado como número inteiro ou número com ponto: <code>25</code> ou <code>63.5</code>.<br>Se quiser omitir esse parâmetro, pode informar aspas simples ou aspas duplas no lugar.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Descrição do produto</strong> (se não for informado, será preenchido automaticamente como <code>'Pagamento da fatura order_id'</code> ).<br>Se quiser omitir esse parâmetro, pode informar aspas simples ou aspas duplas no lugar.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Parâmetros adicionais</strong>, parâmetros que não existem nesta função.<br>Os parâmetros adicionais disponíveis podem ser consultados na 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">Prodamus REST API</a></p><p>Por exemplo:</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Se quiser omitir esse parâmetro, pode informar aspas simples/duplas ou <code>None</code> como valor.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>string de 50 a 4000 caracteres</strong> no formato <code>"descrição do pedido - preço - link para o recurso adquirido"</code>.<br>Por exemplo:<br><code>“Curso ‘Pesca de brema’, preço de 4999 rublos, link para a página do curso: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Este parâmetro é obrigatório se você não tiver sua própria caixa registradora online, sendo necessário para fiscalizar o pagamento via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemplo" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Curso ‘Pesca de brema’, preço de 4999 tenge, link para a página do curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, 'Curso ‘Pesca de brema’', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'Curso mais top do mercado', extra\_params, products\_for\_receipt

Neste exemplo:

* `extra_params` — parâmetros adicionais (por exemplo, limite de pagamento).
* `products_for_receipt` — informações do produto que serão exibidas no recibo.
* `get_prodamus_payment_url` o link de pagamento é criado pela função.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Se houver várias funções para obter links no bloco e for enviada uma mensagem de erro, o valor do erro será записано na variável **`error_payment_func`** .

O erro é gravado na Calculadora pela última função.
{% endhint %}

## `payment_sum` variável e criação do link por meio de parâmetros adicionais

{% hint style="info" %}
**Atenção:** `payment_sum` o valor da variável é definido a partir da última variável, ou seja, após as variáveis opcionais: `payment_description`, `product_name` etc.
{% endhint %}

Para criar um link de pagamento, **No campo da Calculadora `payment_sum` basta definir o valor da variável**.\
Depois disso, automaticamente **`prodamus_pay_url`** a variável aparecerá.

**Exemplo de link de pagamento:** `https://payform.ru/7p3JR8/`

Essa variável pode ser exibida na mensagem como um link ou colocada em um botão com o texto «Pagar».

`payment_sum` Antes de declarar a variável, você pode informar estas variáveis opcionais:

| Parâmetros da função       | Descrição do parâmetro                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **product\_name**          | **Nome do produto** (se não for informado, será preenchido automaticamente como "Pagamento da fatura order\_id") – abaixo a captura de tela mostra onde isso é exibido.                                                                                                                                                                                                                                                                                            |
| **payment\_description**   | **Descrição do produto** (se não for informado, será preenchido automaticamente como `'Pagamento da fatura order_id'` será preenchido) – abaixo a captura de tela mostra onde isso é exibido.                                                                                                                                                                                                                                                                      |
| **discount\_value**        | **Valor do desconto** (por exemplo, `discount_value = 25` ou `discount_value = 50.25`)                                                                                                                                                                                                                                                                                                                                                                             |
| **customer\_phone**        | **Número de telefone do comprador** — opcional, se outro parâmetro for informado.                                                                                                                                                                                                                                                                                                                                                                                  |
| **customer\_email**        | Endereço de email do comprador                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **link\_expired**          | <p><strong>Prazo de validade do link de pagamento</strong> — <code>dd.mm.aaaa</code> no formato (por exemplo, 25.01.2021).<br>Além disso, <strong>Calculadora</strong> no campo<br><code>link\_expired = current\_date + 2</code> (o link será válido por 2 dias até 00:00).</p>                                                                                                                                                                                   |
| **link\_expired**          | <p>Além disso, é possível informar um horário exato, formato: <code>dd.mm.aaaa hh:mm</code> (por exemplo, <code>25.01.2021 12:23</code>).<br>Também é possível usar variáveis padrão, por exemplo, definir a validade do link por 30 minutos:<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                                                          |
| **currency**               | <p><strong>Moeda do pagamento</strong>, por padrão <code>"rub"</code>.<br>Lista completa de argumentos:</p><ul><li><code>rub</code></li><li><code>usd</code></li><li><code>eur</code></li><li><code>kzt</code></li></ul><p>Esse parâmetro deve ser informado em letras minúsculas.</p>                                                                                                                                                                             |
| **payment\_title**         | <p><strong>Título do pagamento</strong> (até 127 caracteres). Se não for informado, será preenchido automaticamente com o texto:<br>“<strong>Pagamento da fatura payment\_id</strong>” (<code>payment\_id</code> — identificador do pedido no MaviBot).</p>                                                                                                                                                                                                        |
| **payment\_description**   | **Breve descrição do pagamento** (até 127 caracteres)                                                                                                                                                                                                                                                                                                                                                                                                              |
| **locale**                 | <p><strong>Idioma da página de pagamento</strong> — <code>en-US</code>, <code>fr-XC</code> etc. O valor padrão é <code>ru-RU</code>.<br>A lista completa pode ser consultada neste link</p>                                                                                                                                                                                                                                                                        |
| **products\_for\_receipt** | <p><strong>string de 50 a 4000 caracteres</strong> no formato <code>"descrição do pedido - preço - link para o recurso adquirido"</code>.<br>Por exemplo:<br><code>“Curso ‘Pesca de brema’, preço de 4999 tenge, link para a página do curso: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Este é um parâmetro obrigatório, necessário para fiscalizar o pagamento via Prodamus se você não tiver sua própria caixa registradora online.</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="" width="563"></div>

{% hint style="success" %}
`discount_value`, `customer_phone`, `customer_email` e `link_expired` as variáveis também são relevantes 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>

No próximo passo, no local necessário, exibimos o **`prodamus_pay_url`** link:

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

**`prodamus_available_payment_methods`** variável **`payment_sum`** é determinada antes de ser declarada.\
Valores possíveis:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>Pagamento com cartão emitido na Rússia</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 a Rússia</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Pagamento com cartão EUR de todos os países, exceto Rússia e Belarus</td></tr><tr><td><strong>SBP</strong></td><td>Pagamento instantâneo, sem inserir os dados do cartão. Para cartões russos</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 </td></tr><tr><td><strong>invoice</strong> </td><td>pagamento por fatura</td></tr><tr><td><strong>installment</strong> </td><td>parcelamento via Prodamus</td></tr><tr><td><strong>installment_5_21</strong></td><td>parcelamento em 3 meses via Prodamus</td></tr><tr><td><strong>installment_6_28</strong></td><td>parcelamento em 6 meses via Prodamus</td></tr><tr><td><strong>installment_10_28</strong></td><td>parcelamento em 10 meses via Prodamus</td></tr><tr><td><strong>installment_12_28</strong> </td><td>parcelamento em 12 meses via Prodamus</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>parcelamento por 3 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>parcelamento em 4 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>parcelamento em 6 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>parcelamento em 10 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>parcelamento em 12 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>parcelamento em 24 meses via Tinkoff</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>parcelamento em 36 meses via Tinkoff</td></tr><tr><td><strong>credit</strong> </td><td>crédito via Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>parcelamento em 4 meses via «SempreSim»</strong> (não funciona com available_payment_methods)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>parcelamento em 6 meses via «SempreSim»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>parcelamento em 10 meses via «SempreSim»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>parcelamento em 12 meses via «SempreSim»</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>parcelamento em 24 meses via «SempreSim»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>parcelamento em 36 meses via «SempreSim»</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>parcelamento em 6 meses via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>parcelamento em 10 meses via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>parcelamento em 12 meses via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>parcelamento em 24 meses via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>parcelamento em 36 meses via Sberbank</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>parcelamento em 6 meses via Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>parcelamento em 10 meses via Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>parcelamento em 12 meses via Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>parcelamento em 24 meses via Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>parcelamento em 36 meses via Banco OTP</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>parcelamento em 6 meses via Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>parcelamento em 10 meses via Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>parcelamento em 12 meses via Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>parcelamento por 24 meses via «MTS Bank»</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>parcelamento por 36 meses via «MTS Bank»</td></tr><tr><td><strong>monetaworld</strong></td><td>cartões de bancos internacionais, exceto Rússia</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>parcelamento via Sber</td></tr></tbody></table>

com vários valores **por barra vertical** é permitido dividir.\
Exemplo:

```python
prodamus_available_payment_methods = "AC|PC|QW"
```

`prodamus_currency` – é outro parâmetro adicional que permite exibir o valor em uma moeda específica.

Moedas possíveis:

* `kzt` – para o tenge
* `eur` – para o euro
* `usd` – para o dólar

Assim, o valor indicado no link estará na moeda selecionada.

**Callback `payment_callback` ao receber** `currency` e `currency_sum` os parâmetros devem ser observados, pois neles a moeda e o valor são indicados.

{% hint style="warning" %}
Se não for especificado, a página sem métodos de pagamento será aberta.\
Os métodos de pagamento podem ser adicionados com suporte. Os métodos adicionados podem ser verificados nas configurações da página ou por meio de um link de pagamento.
{% endhint %}

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

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

### Como tratar o resultado

**Pagamento bem-sucedido**

**Importante:** após um pagamento bem-sucedido ou malsucedido, chegam callbacks ao bot, com os quais você pode determinar se o pagamento foi concluído com sucesso.

Os callbacks aparecem no sistema como mensagens vindas do usuário, mas o usuário não pode enviá-las. Eles vêm na forma de uma combinação de chave secreta e status. Por exemplo:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

ou

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Após um pagamento bem-sucedido **prodamus\_payment\_completed** a variável `True` assume automaticamente o valor.

**Observação:** Os callbacks chegam com algum atraso, então é melhor enviar a mensagem ao usuário depois de enviar o link:

> “Após efetuar o pagamento, aguarde a conclusão bem-sucedida do pagamento.”

***

**Estrutura do callback**

Para links criados pelo botão Pagamento ou pela função no Calculador, após o pagamento um callback é enviado automaticamente ao bot. Ele contém:

```
<chave_secreta>_success <valor_do_pagamento>
```

Por exemplo:

```
ovg58keefc_success
```

* `ovg58keefc` – chave secreta completa do sistema de pagamento
* `_success` — o resultado do processamento da solicitação (pagamento bem-sucedido)

***

**Aplicação prática**

É possível processar um pagamento bem-sucedido por meio de um bloco condicional e exibir ao usuário a mensagem correspondente.

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

{% hint style="danger" %}
O tipo de comparação deve ser "Full match" / "Correspondência exata"

Para fazer um novo pagamento, é obrigatório **payment\_sum** zerar a variável e excluir o link criado anteriormente. Só depois disso **payment\_sum** você poderá atribuir um novo valor à variável e obter o link atualizado.
{% endhint %}

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

Além disso, no sistema Prodamus há notificações sobre assinatura ativada ou suspensa:

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

**«A assinatura foi desativada pelo usuário»** – se a assinatura for interrompida manualmente (por exemplo, em caso de cancelamento da assinatura).\
Essa mensagem pode chegar antes do fim do período já pago. A ação depende da sua decisão: ignorar, colocar sob monitoramento ou tentar recuperar o usuário.

**«A assinatura foi reativada pelo usuário»** – a assinatura foi restaurada.\
Essa mensagem pode chegar se o usuário restaurar a assinatura antes do fim do período já pago atual. A ação depende da sua decisão: ignorar ou remover da lista de monitoramento.

**«Desativação da assinatura»** – quando a assinatura é encerrada após várias tentativas de pagamento malsucedidas.

### Salvar valores do callback

Após receber uma mensagem sobre pagamento bem-sucedido **payment\_callback** a variável receberá um callback do Prodamus, contendo todos os dados do pagamento. Esses dados podem ser salvos e usados da forma que você precisar.

Exemplo de callback:

```json
{
  "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": "Produto",
  "payment_type": "Cartão plástico Visa, MasterCard, MИR",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Acesso a materiais de treinamento",
  "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 criar o link **product\_name** e **payment\_description** é possível indicar variáveis. Nesse caso, ao receber o callback, elas podem ser obtidas assim:

```python
product = get(payment_callback,'products[0][name]')
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: **payment\_sum** a variável recebe o último valor, que vem **das variáveis opcionais** a seguir: **payment\_description**, **product\_name**.
{% endhint %}

O valor pode ser obtido assim:

```python
summa = get(payment_callback, 'sum')
```

### **Callbacks disponíveis**

Além dos principais callbacks de pagamento bem-sucedido, as seguintes mensagens que o usuário não vê no chat são:

<details>

<summary>callbacks</summary>

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

</details>

<details>

<summary><strong>Exemplos de callbacks no diálogo com o cliente</strong></summary>

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

</details>

Se desejar, você pode configurar o envio de qualquer mensagem ao usuário. Por exemplo, enviar uma mensagem em caso de falha no pagamento automático.

Para pagamentos malsucedidos por um motivo específico, você pode configurar os blocos de resposta à mensagem da seguinte forma:

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

Para enviar uma mensagem para todos os pagamentos malsucedidos, independentemente do motivo, você pode configurar assim:

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

Em todos os callbacks, se no texto houver **«Pagamento malsucedido»** a mensagem será enviada ao usuário com o texto que você definir.

## **Como fazer um pagamento por assinatura**

### **Como criar uma assinatura**

Para criar uma assinatura, primeiro é necessário **criar um produto por assinatura** .\
Instrução completa: [Como criar e configurar uma assinatura](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Depois, copiamos o **ID** do produto por assinatura. Por exemplo, abaixo é mostrado de onde obtê-lo:

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

Para criar o link de pagamento da assinatura, **prodamus\_subscription** na variável, o **ID** do produto por assinatura deve ser definido. Depois disso, automaticamente **prodamus\_pay\_url** a variável aparecerá.

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

Tradução para o cazaque (estilo empresarial):

`prodamus_pay_url` a variável pode ser exibida na tela como link ou colocada em um botão com o texto «Pagar». Exemplo de link: <https://payform.kz/7p3JR8/>

O processamento do resultado ocorre da mesma forma que em um pagamento único (como você leu acima).

Após uma assinatura bem-sucedida, o usuário terá o **customer\_phone** que foi inserido no pagamento adicionado. O número de telefone é necessário para gerenciar a assinatura.

Se **customer\_email** não for fornecido, para gerenciar a assinatura **customer\_phone** é obrigatório.

### **`get_prodamus_subscription_url` como criar um link para assinatura com a função**

Vamos considerar outra forma de criar um link de pagamento por assinatura para o produto.

1. No painel do Prodamus, é criado um produto por assinatura.\
   A instrução completa pode ser vista no link:\
   [Como criar e configurar uma assinatura](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Depois, copiamos o **ID** do produto por assinatura. Por exemplo, abaixo é mostrado de onde obtê-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 para 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 de assinatura</strong> – pode ser copiado do painel do Prodamus (parâmetro obrigatório).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nome do produto</strong> (parâmetro obrigatório).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Prazo de validade do link de pagamento</strong> – no formato dd.mm.aaaa (por exemplo, 25.01.2021).</p><p>Também pode ser definido no campo «Calculador»:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # o link será válido por 2 dias, até 00:00
</code></pre><p><code>expired</code> o parâmetro também pode ser especificado com hora exata, formato: dd.mm.aaaa hh:mm (por exemplo, 25.01.2021 12:23).</p><p>Também é possível usar variáveis padrão, por exemplo, definir o prazo de validade do link para 30 minutos:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Se quiser omitir esse parâmetro, em vez disso use aspas simples ou duplas, ou <code>None</code> como valor.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Número de telefone do pagador</strong> — opcional, se o parâmetro <code>customer_email</code> se o parâmetro</p><p>Se quiser omitir esse parâmetro, em vez disso use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>Email do pagador</strong> — opcional, se o parâmetro <code>customer_phone</code> se o parâmetro</p><p>Se quiser omitir esse parâmetro, em vez disso use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Valor do desconto</strong> – o parâmetro pode ser informado como número inteiro ou decimal: 25 ou 63.5.</p><p>Se quiser omitir esse parâmetro, em vez disso use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Descrição do produto</strong> – se não for especificado, por padrão <code>'Pagamento da fatura order_id'</code> será preenchido.</p><p>Se quiser omitir esse parâmetro, em vez disso use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Parâmetros adicionais</strong>, parâmetros que não existem nesta função.<br>Os possíveis parâmetros adicionais podem ser consultados na documentação da API do sistema de pagamento:<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Guia da API REST do Prodamus</a></p><p><strong>Exemplo:</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Se quiser omitir esse parâmetro, use aspas simples/duplas ou <code>None</code> como valor.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>string de 50–4000 caracteres</strong>, formato: <code>"descrição do pedido - preço - link para o recurso adquirido"</code></p><p>Exemplo:<br>Curso «Pescando sargo», preço 4999 tenge, link para a página do curso: <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Este parâmetro <strong>é obrigatório</strong>, necessário para fiscalizar pagamentos via Prodamus, caso você não tenha sua própria caixa registradora online.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemplo de código para copiar" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Curso ‘Pescando sargo’, preço da assinatura mensal 2000 tenge, link para a página do curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Curso ‘Pescando sargo’', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'O melhor curso do mercado', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Se houver um erro ao obter o link por meio de várias funções no bloco, **o valor do erro `error_payment_func` na variável** será gravado.

O erro é gravado na Calculadora pela última função.
{% endhint %}

### **Como gerenciar o status da assinatura**

Este método é destinado apenas a assinaturas reais; no modo de demonstração não há vínculo de cartão.

Para gerenciar a assinatura, obrigatoriamente **`customer_phone`** ou **`customer_email`** um dos parâmetros

deve ser fornecido. Para remover o usuário da assinatura, é necessário criar um bloco e chamar a seguinte função:\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Exemplo de parâmetros:**

```json
{
  "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, obtida nas configurações do construtor
* `secret_key` – chave secreta obtida nas configurações
* `id_subscription` – ID do produto de assinatura
* `customer_phone` – telefone do titular da assinatura
* `switcher` – gerenciamento da assinatura: `0` – encerrar a assinatura, `1` – reativar a assinatura
* `profile_id` – ID do perfil no sistema Prodamus

**Observação:**\
Se o ID do perfil vier, ele será **`profile_id`** salvo na variável.\
`profile_id` da função **`customer_phone`** ou **`customer_email`** pode ser passado em seu lugar e a assinatura pode ser encerrada.

**Exemplo:** configurar blocos de assinatura

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

Observe que a função **status** retorna, que pode ser salvo e processado como você desejar. Ao encerrar ou reativar a assinatura com sucesso, **status = ok** ficará.

### Função para gerenciar assinatura

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id) Parâmetros:

subscription\_id – ID do produto por assinatura

switcher – gerenciamento da assinatura: 0 – encerrar assinatura, 1 – reativar assinatura

customer\_phone – telefone do titular da assinatura; opcional, se customer\_email for informado

customer\_email – email do titular da assinatura; opcional, se customer\_phone for 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>

Tradução para o cazaque (estilo empresarial):

**Exemplo 1:** `customer_phone` é informado, `customer_email` foi omitido:

```python
stat = prodamus_subscription_switch_status('618117', '0', '75431312321')
```

**Exemplo 2:** `customer_email` é informado, `customer_phone` foi omitido:

```python
stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')
```

{% hint style="success" %}
Se a função concluir com sucesso todas as operações **`ok`** ou retorna a descrição do erro, caso ocorra um erro.
{% endhint %}

## Gerenciamento de descontos na assinatura

Esta função define o valor do desconto para os próximos pagamentos da assinatura. O desconto **limitado ou ilimitado** pode ser aplicado ao número de pagamentos.

```python
prodamus_subscription_discount(subscription_id, discount, customer_phone, num, profile_id)
```

Parâmetros:

* `subscription_id` – ID da assinatura
* `discount` – número decimal com precisão de duas casas após o ponto; 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, formato: `+79999999999` (opcional, se houver `customer_email` variável; ela aparece após o primeiro pagamento)
* `num` – número de pagamentos aos quais o desconto será aplicado (opcional; se não for informado, o desconto será aplicado a todos os pagamentos)
* `profile_id` – ID do perfil no sistema Prodamus

Se a solicitação for concluída com sucesso, a função `'ok'` retorna; se ocorrer um erro, a função retorna a descrição do erro.

{% 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. Conceder desconto de 1₽ para todos os próximos pagamentos automáticos** (o número de telefone não é informado, pois é obtido automaticamente a partir da variável `customer_phone` ; o valor do desconto, por padrão, é aplicado a todo o período da assinatura):

```python
r = prodamus_subscription_discount('624034', '1')
```

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

**2. Exemplo de concessão de desconto de 2₽ para os próximos 3 pagamentos** (o número de telefone é informado como string vazia, pois é obtido automaticamente a partir da variável `customer_phone` ):

```python
r = prodamus_subscription_discount('624034', '2', '', '3')
```

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

**3. Exemplo de indicação de desconto com parte decimal** (o separador é o ponto, os valores são indicados sem aspas), o número de telefone pode ser passado por 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="" width="563"></div>

## **Como definir a data do próximo pagamento da assinatura**

Com este método, é possível adiar a data do próximo pagamento da assinatura. A data só pode ser deslocada da data atual do próximo pagamento para **«o futuro»** a fim de aumentar o período de participação no clube.

Por exemplo, isso pode ser usado como bônus para assinantes.

Para isso, é necessário usar a seguinte função:

```python
prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)
```

Parâmetros:

* `subscription_id` – identificador da assinatura
* `date` – data no formato dd.mm.aaaa hh:mm ou dd.mm.aaaa; se for informado apenas dd.mm.aaaa, o horário será 00:00
* `customer_phone` – opcional; se não for informado, `customer_phone` será obtido da variável; se não for encontrado, a função não funcionará
* `profile_id` – ID do perfil no sistema Prodamus

### Como enviar parâmetros para o Prodamus

Para enviar os parâmetros necessários (por exemplo, data de início da assinatura, desativação de parcelamento etc.) ao sistema Prodamus, adicione **`prodamus_`** prefixo ao nome da variável.

Depois, ao criar o link de pagamento, os parâmetros dessa variável serão enviados automaticamente ao sistema de pagamento.

## Como testar o pagamento

{% hint style="info" %}
Vamos testar apenas o pagamento!
{% endhint %}

Ao configurar a integração e os funis de pagamento, para que nenhum dinheiro seja debitado da sua conta **você pode usar cartões de teste**.

{% hint style="warning" %}
Primeiro, altere sua página de pagamento para o **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 fazer um pagamento de teste, você pode usar contas de teste.

**Cartões de teste do Sberbank:**

**MIR**\
Número do cartão: 2202 2050 0001 2424\
Validade: 05/35\
Código de verificação no verso (CVV): 669

**MasterCard**\
Número do cartão: 5469 9801 0004 8525\
Validade: 05/26\
Código de verificação no verso (CVV): 041\
Código de verificação 3-D Secure: 111111

**Visa**\
Número do cartão: 4006 8009 0096 2514\
Validade: 05/26\
Código de verificação no verso (CVV): 941\
Código de verificação 3-D Secure: 111111

{% hint style="success" %}
❗️Ao fazer pagamentos com contas de teste, todos os funis e integrações configurados **funcionarão como em um pagamento normal**❗️
{% endhint %}

Formulário verificado

{% hint style="danger" %}
Para aceitar pagamentos reais, o formulário **deve ser colocado em modo** de operação. **vermelho-claro** deve ser definido.
{% 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.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.
