> For the complete documentation index, see [llms.txt](https://docs.mavibot.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mavibot.ai/doc/pt/integrations/payment/prodamus-blr/prodamus.md).

# Prodamus (KZ)

## **Como conectar o Prodamus**

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

O URL do formulário de pagamento será fornecido após o cadastro; o exemplo é: `demo.payform.ru`.

A chave secreta pode ser obtida no painel pessoal; lá também é necessário informar o URL para o 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 na área pessoal do sistema de pagamento Prodamus</p></figcaption></figure></div>

[**Guia detalhado 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 precisa 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 aceitação de pagamentos.

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

O endereço para notificações precisa ser informado em dois lugares nas configurações do sistema de pagamento: **Aba “Configurar formulário”** — para pagamentos únicos (normais) e **“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 trabalho com pagamentos por assinatura **“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 o URL, não se esqueça de **“Salvar”** botão.
{% endhint %}

Para conectar o Prodamus **“Cobrança”** é necessário acessar a seção.

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

Depois, basta inserir os dados mencionados 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 o URL do formulário de pagamento **https\://** não inclua.
{% 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" %}
[Como criar esse tipo de botão é explicado neste artigo.](/doc/pt/chatbot/builder/botoes/botao-de-pagamento.md)
{% endhint %}

Agora vamos ver 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” e também o parâmetro “Conteúdo pago” — se você não tiver sua própria caixa registradora online e quiser receber o 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 só insere seus dados de contato.

Se o Email e/ou telefone do usuário forem 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”** — esse texto será exibido na mensagem no botão com o link de pagamento.

**Campo “Função”** — para criar um botão que gera um link de pagamento, selecionamos a função “Pagar”.

**Campo “Sistema de pagamento”** — os sistemas de pagamento conectados ao projeto são exibidos na lista.\
Se nenhum sistema de pagamento estiver conectado ao projeto, esse tipo de botão ficará indisponível.

**Campo “Nome do produto” (obrigatório)** — é necessário informar o nome exato do produto. Por exemplo: não “Telefone”, mas “Smartphone Xiaomi, modelo …”.\
Observação: não use 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 exibidos campos adicionais para criar o link:

* Descrição do pedido
* Desconto em rublos
* Variável de Email do comprador
* Variável do número de telefone do comprador
* Tempo de validade do link
* ID do produto para assinatura (para débito automático)
* Conteúdo pago

**Caixa de seleção “Notificação ao clicar”** — pode ser marcada para acompanhar o acesso ao link de pagamento. Nesse caso, ao clicar no botão, uma mensagem chegará ao diálogo do cliente no SaleBot informando que o acesso ao link foi realizado.

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

Com base nessa mensagem, você pode configurar a lógica posterior do bot.\
Muitos sistemas de pagamento oferecem suporte a caixas registradoras online em nuvem, necessárias de acordo com a Lei 54-FZ.

Leia no site do sistema de pagamento escolhido as particularidades de emissão de recibos para não ter problemas com a Receita.

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: no botão, apenas os parâmetros principais estão preenchidos</p></figcaption></figure></div>

### Configurações adicionais para criar o 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 serã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 **Valor a pagar** o campo será exibido com o desconto aplicado, e o preço original do produto ficará riscado.

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

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

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

**Campo “ID do produto para assinatura”** — informe o valor do ID do produto para o débito automático. Para criar uma assinatura, é necessário criar um produto de assinatura.\
Guia completo: [Criação e configuração de assinaturas no Prodamus](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Se o ID do produto para assinatura for informado, o valor do pagamento não é considerado. Os dados do produto são obtidos 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 o ID do produto para assinatura for informado, no callback após pagamento bem-sucedido será enviado o ID desse produto.

**Campo “Conteúdo pago”** (condicionalmente obrigatório) — esses dados são necessários para fiscalizar o pagamento via Prodamus, se você não tiver sua própria caixa registradora online. Neste campo são informadas a descrição da compra, o preço e o link para o conteúdo.\
Por exemplo: curso “Trançando cabelos”, 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 tempo 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 estiver no diálogo, não será possível efetuar o pagamento, e a seguinte mensagem será exibida para ele:

<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 poderá 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"` a variável aparecerá, 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 possa efetuar o pagamento corretamente, recomenda-se tratar essa situação separadamente.
{% endhint %}

Crie um bloco condicional assim:\
Se chegar a seguinte mensagem:\
`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 efetuar o pagamento a tempo; o link de pagamento ficou inválido"**.

<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 de 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”, são criadas automaticamente variáveis para o cliente:

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

{% hint style="danger" %}
Variável de cliente de serviço `__payments`-não pode ser desativado ou alterado!
{% endhint %}

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

{% hint style="warning" %}
Os valores das variáveis ficarão válidos quando o próximo bloco for acessado.
{% endhint %}

## Como tratar o resultado

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

Exemplo: `ovg58keefc_success 44`, onde:

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

{% hint style="info" %}
O usuário NÃO VÊ os **callbacks (mensagens) do sistema de pagamento**. Eles só **“Clientes”** aba e ficam visíveis para o operador.
{% endhint %}

**Exemplo de uso:**\
**Passo 1.** Adicionamos botões com a função “Pagar” ao bloco “Botão com pagamento”.\
**Passo 2.** O callback **Condição de ligação** é indicado no campo.\
Da mesma forma, se você indicar o callback de pagamento bem-sucedido na condição do bloco “Condição inicial”, o funcionamento ocorrerá de forma análoga.

{% hint style="warning" %}
**Importante:** Selecionar “Correspondência exata” ou “Contém palavras-chave”.
{% endhint %}

❗️Se você decidir verificar o pagamento exatamente na seta indicada pela condição, pense cuidadosamente na lógica do seu fluxo. Se o cliente sair do bloco que passa pela condição com o callback, a transição para o bloco não acontecerá. Esse método de verificação é mais adequado apenas quando o cliente não muda de posição no funil.

Em esquemas onde o cliente se move entre blocos, é mais eficaz usar o callback **“Condição inicial”** no bloco.<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 **CALLBACK AUTOMATICAMENTE** que consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_success` e do ID do produto da assinatura.

Exemplo: `214009eefc_success 618117`, onde:

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

Exemplo: `ovg58keefc_fail 44`, onde:

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

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

Se o valor informado nas configurações do botão for diferente do valor pago pelo cliente, o bot recebe **CALLBACK AUTOMATICAMENTE** que consiste nos 10 primeiros caracteres da chave secreta do sistema de pagamento, `_different_amounts` e do identificador único do pagamento.

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` — identificador único do pagamento

## Na calculadora `get_prodamus_payment_url` função

Para criar um link de pagamento **No bloco Calculadora `get_prodamus_payment_url` função** pode ser usada.\
**No campo da Calculadora** atribuímos à variável o valor desta 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 nomes de variáveis.
{% endhint %}

Nessa variável será gravado o link de pagamento. A variável pode ser exibida na mensagem como 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 separador decimal. 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>Tempo 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 você pode informar assim:<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 você quiser omitir esse parâmetro, pode usar em vez disso uma aspa simples, aspas duplas ou <code>None</code> valor.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Número de telefone do comprador</strong> — opcional, se <code>customer_email</code> o parâmetro for informado.<br>Se você quiser omitir esse parâmetro, pode usar em vez disso uma aspa simples ou aspas duplas.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Endereço de Email do comprador</strong> — opcional, se <code>customer_phone</code> o parâmetro for informado.<br>Se você quiser omitir esse parâmetro, pode usar em vez disso uma aspa simples ou aspas duplas.</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 você quiser omitir esse parâmetro, pode usar em vez disso uma aspa simples ou aspas duplas.</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 com <code>'Pagamento da fatura order_id'</code> ).<br>Se você quiser omitir esse parâmetro, pode usar em vez disso uma aspa simples ou aspas duplas.</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 vistos na documentação de trabalho com a API do sistema de pagamento: <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">API REST do Prodamus</a></p><p>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 você quiser omitir esse parâmetro, use em vez disso uma aspa simples/aspas duplas ou <code>None</code> 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 peixe-louco’, preço 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; ele é 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 peixe-louco’, preço 4999 rublos, 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 peixe-louco’', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'O melhor curso do mercado', extra\_params, products\_for\_receipt

Neste exemplo:

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

{% hint style="warning" %}
Se houver várias funções de obtenção de links no bloco e ocorrer um erro, o valor do erro será gravado na variável **`error_payment_func`** .

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

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

{% hint style="info" %}
**Atenção:** `payment_sum` o valor da variável é recebido da última variável, ou seja, após as variáveis não obrigatórias: `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 link ou colocada em um botão com o texto “Pagar”.

`payment_sum` Antes de declarar a variável, podem ser informadas as seguintes 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 com "Pagar fatura order\_id") – na captura de tela abaixo é mostrado onde isso é exibido.                                                                                                                                                                                                                                                                                                 |
| **payment\_description**   | **Descrição do produto** (se não for informado, será preenchido automaticamente com `'Pagamento da fatura order_id'` será preenchido) – na captura de tela abaixo é mostrado 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>Tempo 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 você pode informar assim:<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 seguinte texto:<br>“<strong>Pagar 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> é exibido no formato etc. Valor padrão – <code>ru-RU</code>.<br>A lista completa pode ser consultada no link a seguir</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 breme’, 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 pagamentos via Prodamus, caso você não tenha 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>

Na próxima etapa, onde for necessário **`prodamus_pay_url`** exibimos o link:

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

**`prodamus_available_payment_methods`** variável **`payment_sum`** é definido antes da publicação.\
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 dos países da CEI, exceto a Rússia</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Pagamento com cartões EUR de todos os países, exceto Rússia e Belarus</td></tr><tr><td><strong>SBP</strong></td><td>Pagamento rápido, sem inserir dados do cartão. Para cartões russos</td></tr><tr><td><strong>QW</strong> </td><td>Carteira Qiwi </td></tr><tr><td><strong>PC</strong></td><td>YooMoney</td></tr><tr><td><strong>GP</strong></td><td>Terminal de pagamento</td></tr><tr><td><strong>sbol</strong></td><td>Sberbank 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 em 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>crédito</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 “ВсегдаДа”</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 “ВсегдаДа”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>Parcelamento em 10 meses via “ВсегдаДа”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>Parcelamento em 12 meses via “ВсегдаДа”</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>Parcelamento em 24 meses via “ВсегдаДа”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>Parcelamento em 36 meses via “ВсегдаДа”</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 o Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Parcelamento em 10 meses via o Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Parcelamento em 12 meses via o Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Parcelamento em 24 meses via o Banco OTP</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Parcelamento em 36 meses via o Banco OTP</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Parcelamento em 6 meses via o Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Parcelamento em 10 meses via o Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Parcelamento em 12 meses via o Banco MTS</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Parcelamento em 24 meses via o Banco MTS</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Parcelamento em 36 meses via o Banco MTS</td></tr><tr><td><strong>monetaworld</strong></td><td>Cartões de bancos do mundo todo, exceto Rússia</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Parcelamento via Sber</td></tr></tbody></table>

Múltiplos valores **com barra vertical** é permitido dividir.\
Exemplo:

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

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

Moedas possíveis:

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

Assim, o valor exibido no link será na moeda selecionada.

**Callback `payment_callback` ao receber** `currency` e `currency_sum` é preciso prestar atenção aos parâmetros, nos quais a moeda e o valor são indicados.

{% hint style="warning" %}
Se não for especificado, você será levado para a página sem métodos de pagamento.\
Os métodos de pagamento podem ser adicionados com suporte. Os métodos adicionados podem ser vistos 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, callbacks chegam ao bot, com os quais você pode identificar se o pagamento foi concluído com sucesso.

Os callbacks aparecem no sistema como mensagens de usuário, mas não podem ser enviados pelo usuário. Eles vêm na forma de uma combinação de chave secreta e status. Exemplo:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

ou

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

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

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

> “Após realizar o pagamento, aguarde a confirmação de que o pagamento foi concluído com sucesso.”

***

**Estrutura do callback**

Para links criados pelo botão de pagamento ou pela função no Calculador, após o pagamento um callback chega automaticamente ao bot. Ele consiste em:

```
<secret_key>_success <valor_do_pagamento>
```

Exemplo:

```
ovg58keefc_success
```

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

***

**Aplicação prática**

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

<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ó então **payment\_sum** você pode atribuir um novo valor à variável
{% endhint %}

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

Além disso, no sistema Prodamus há notificações sobre a ativação ou suspensão da assinatura:

<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 suspensa manualmente (por exemplo, em caso de cancelamento da assinatura).\
Essa mensagem pode chegar antes do fim do período atual já pago. A ação depende da sua decisão: ignorar, monitorar 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 atual já pago. A ação depende da sua decisão: ignorar ou remover da lista de monitoramento.

**«Desativação da assinatura»** – em caso de suspensão da assinatura após várias tentativas de pagamento malsucedidas.

### Salvando valores do callback

Após o recebimento da 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 de plástico Visa, MasterCard, MИР",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Acesso aos materiais didáticos",
  "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 especificar variáveis. Nesse caso, quando o callback chegar, 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 **das variáveis opcionais** vem depois: **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 mensagens que o usuário não vê no chat são as seguintes:

<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)
* Notificação 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 vencido.**
* **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;
* **Notificação de cobrança futura - dd.mm.aaaa hh:mm**
* **Solicitação de parcelamento aprovada**
* **Solicitação de parcelamento cancelada**
* **Solicitação de parcelamento recusada**

</details>

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

Você pode configurar blocos de resposta para a mensagem de falha de pagamento com um motivo específico 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 **«Pagamento malsucedido»** a mensagem com o texto que você definiu será enviada ao usuário.

## **Como realizar um pagamento por assinatura**

### **Como criar uma assinatura**

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

Depois, do produto por assinatura, **o ID** copiamos. Por exemplo, abaixo mostra onde obter:

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

Para gerar o link de pagamento de um produto por assinatura, **prodamus\_subscription** na variável do produto por assinatura **o ID** é necessário definir. 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 formal):

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

O processamento do resultado é feito da mesma forma que no pagamento único (como você leu acima).

Após uma assinatura bem-sucedida, ao usuário é adicionado o **customer\_phone** variável inserida no pagamento. 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 a assinatura com a função**

Vamos ver outra forma de criar um link de pagamento da assinatura para um produto.

1. Um produto por assinatura é criado no painel do Prodamus.\
   O guia completo pode ser visto no link a seguir:\
   [Como criar e configurar uma assinatura](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Depois, do produto por assinatura, **o ID** copiamos. Por exemplo, abaixo mostra onde obter:

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

Para obter o link de pagamento de um 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 do produto por assinatura

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

{% tab title="Descrição do parâmetro" %}
`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> – 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>Tempo de validade do link de pagamento</strong> – no formato dd.mm.aaaa (por exemplo, 25.01.2021).</p><p>Também pode ser especificado 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 podem ser usadas variáveis padrão, por exemplo, para definir a 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, use aspas simples ou duplas, ou <code>None</code> 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 <code>customer_email</code> parâmetro.</p><p>Se quiser omitir esse parâmetro, use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>E-mail do pagador</strong> — opcional, se <code>customer_phone</code> parâmetro.</p><p>Se quiser omitir esse parâmetro, 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, 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 informado, por padrão <code>'Pagamento da fatura order_id'</code> é preenchido.</p><p>Se quiser omitir esse parâmetro, use aspas simples ou duplas.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Parâmetros adicionais</strong>, são 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> valor.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>uma string de 50 a 4000 caracteres</strong>, formato: <code>"descrição do pedido - preço - link para o recurso adquirido"</code></p><p>Exemplo:<br>Curso «Pesca de breme», preço de 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 ‘Pesca de breme’, 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 ‘Pesca de breme’', '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 erro ao obter o link no bloco por meio de várias funções, **o valor do erro `error_payment_func` na variável** é gravado.

O erro é gravado no 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á vinculação de cartão.

Para gerenciar a assinatura, é obrigatório **`customer_phone`** ou **`customer_email`** um dos parâmetros deve ser fornecido.

Para retirar 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 das configurações no construtor
* `secret_key` – chave secreta obtida das 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á salvo na **`profile_id`** variável.\
`profile_id` à função **`customer_phone`** ou **`customer_email`** e a assinatura pode ser encerrada.

**Exemplo:** configuração dos 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, você pode salvá-lo e processá-lo como quiser. Ao encerrar ou reativar a assinatura com sucesso, **status = ok** será.

### Função para gerenciar a assinatura

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

subscription\_id – ID do produto de assinatura

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

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

customer\_email – endereço de e-mail 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 formal):

**Exemplo 1:** `customer_phone` o parâmetro é fornecido, `customer_email` omitido:

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

**Exemplo 2:** `customer_email` o parâmetro é fornecido, `customer_phone` omitido:

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

{% hint style="success" %}
A função retorna **`ok`** se todas as operações forem concluídas com sucesso, ou a descrição do erro em caso de falha.
{% 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** 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 custo base da assinatura
* `customer_phone` – número de telefone do cliente, formato: `+79999999999` (opcional, se `customer_email` variável estiver presente; ela aparece após o primeiro pagamento)
* `num` – número de pagamentos aos quais o desconto será aplicado (opcional; se não for especificado, 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 serão sobrescritos apenas se a função for chamada novamente com novos valores!**
{% endhint %}

**Exemplos:**

**1. Conceder um desconto de 1₽ em todos os próximos pagamentos automáticos** (o número de telefone não é informado, pois ele é obtido automaticamente `customer_phone` da variável; o valor do desconto é aplicado por padrão 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₽ nos próximos 3 pagamentos** (o número de telefone é informado com aspas vazias, pois ele é obtido automaticamente `customer_phone` da variável):

```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 casas decimais** (o separador é um ponto, os valores são informados sem aspas), o número de telefone pode ser passado por uma 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, você pode adiar a data do próximo pagamento da assinatura. A data só pode ser movida **para o "futuro"** em relação à data do próximo pagamento atualmente definida, aumentando assim o período de participação no clube.

Por exemplo, isso pode ser usado como bônus para os 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 apenas dd.mm.aaaa for informado, a hora 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, a data de início da assinatura, desativar o parcelamento etc.) ao sistema Prodamus, adicione o prefixo **`prodamus_`** ao nome da variável.

Depois, ao gerar 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" %}
Estamos testando apenas o pagamento!
{% endhint %}

Para que não sejam cobrados valores da sua conta ao configurar a integração e os funis de pagamento, **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 realizar um pagamento de teste, você pode usar contas de teste.

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

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

**MasterCard**\
Número do cartão: 5469 9801 0004 8525\
Validade: 05/26\
Código de segurança 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 segurança 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 **funcionam como em um pagamento normal**❗️
{% endhint %}

Formulário verificado

{% hint style="danger" %}
Para aceitar pagamentos reais, o formulário **modo de operação** precisa ser alterado. Ou seja, o alternador do modo demo deve ser colocado na **posição vermelho claro** deve ficar.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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