> 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/robokassa-kz.md).

# Robokassa (KZ)

## Como configurar a Robokassa

Vamos ver como implementar o recebimento de pagamentos no bot por meio do serviço Robokassa.

1. Crie uma loja virtual na área pessoal do serviço Robokassa e informe as configurações técnicas:

\- Algoritmo de cálculo do hash: MD5\
\- Result Url: <https://chatter.mavibot.ai/robokassa\\_callback/result\\>
\- Método de envio de dados por Result Url: GET\
\- Success Url: <https://chatter.mavibot.ai/robokassa\\_callback/success\\>
\- Método de envio de dados por Success Url: GET\
\- Fail Url: <https://chatter.mavibot.ai/robokassa\\_callback/fail\\>
\- Método de envio de dados por Fail Url: GET

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

{% hint style="warning" %}
Crie senhas de teste e faça a configuração inicial no modo de teste.
{% endhint %}

## Como conectar a Robokassa ao MaviBot?

Vá para a seção "Adquirência" e clique em "Conectar" no cartão da Robokassa:

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

e preencha o formulário na janela que se abrir:

1. **O campo Identificador da loja —** Shop ID, que você pode encontrar nas configurações da loja na área pessoal da Robokassa.
2. Senhas #1 e senha #2 — sequências únicas geradas de números + letras.&#x20;
3. **campo Alíquota de IVA.** É necessário indicar o código apropriado para transmitir o valor do IVA. Este campo define a alíquota de imposto na caixa registradora online. É determinado separadamente para cada tipo de produto, mas para todas as unidades de um produto específico juntas.

É usado com os valores:

* Sem IVA.
* IVA à alíquota de 0%.
* IVA à alíquota de 5%
* IVA do comprovante à alíquota de cálculo de 12%.
* IVA do comprovante à alíquota de cálculo de 16%.

## Como gerar um link de pagamento

{% hint style="success" %}
Gerar um link de pagamento no bloco pode ser feito **UM DOS** dos métodos disponíveis:

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

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

O link de pagamento pode ser criado no botão com a função "Pagamento".&#x20;

{% hint style="info" %}
Como criar um botão com a função "Pagamento" foi explicado aqui
{% endhint %}

Vamos ver todos os parâmetros possíveis desse botão. Sobre como criar um botão com a função Pagamento é explicado neste artigo:

### **Parâmetros obrigatórios do botão Pagamento**

Para gerar um link de pagamento nas configurações do botão, é necessário informar  <mark style="color:verde;">**os parâmetros obrigatórios: Valor e Nome do produto.**</mark>

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

**campo Valor.**  Neste campo informamos o preço do produto em rublos

**campo Nome do produto.**  Neste campo, você pode usar apenas caracteres do alfabeto inglês ou russo, números e sinais de pontuação. O comprimento máximo é de 100 caracteres. Essas informações são exibidas na interface da Robokassa e no Recibo Eletrônico que o cliente recebe após o pagamento bem-sucedido.&#x20;

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

**a caixa de seleção Pagamento recorrente.** Para ativar o pagamento recorrente&#x20;

**a caixa de seleção Com notificação de clique.** Para acompanhar o acesso pelo link de pagamento, você pode marcar a opção. Nesse caso, ao clicar no botão, será enviada ao diálogo com o cliente no SaleBot uma notificação de que houve acesso ao link

A partir dessa notificação, é possível configurar a lógica de funcionamento posterior do bot.

{% hint style="info" %}
Muitos sistemas de pagamento suportam caixas registradoras online em nuvem, elas são necessárias de acordo com a Lei 54-FZ.\
Leia as particularidades da emissão de recibos no site do sistema de pagamento escolhido para não passar por uma situação constrangedora com a Receita Federal.
{% endhint %}

### **Para gerar o recibo**

**menu Dados para geração do recibo.** Ao clicar, abrirá um menu suspenso com os parâmetros para geração do recibo:

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

**campo Nome do produto**. <mark style="color:vermelho;">**Obrigatório para gerar o recibo.**</mark>&#x20;

{% hint style="danger" %}
**NÃO É POSSÍVEL** usar **aspas duplas** no Nome do produto: remova ou substitua por aspas simples.&#x20;
{% endhint %}

**campo Valor total em rublos.** Neste campo, é necessário informar o valor a pagar levando em conta a quantidade de produtos. Se a quantidade for 1, então o Valor total em rublos é igual ao valor no campo Valor no campo obrigatório das configurações do botão

**campo Quantidade.** Quantidade ou peso do produto. Pode ser enviado um número inteiro ou decimal com ponto. Exemplo: 5 ou 10.3

### Variáveis do cliente que serão criadas automaticamente ao usar o botão com a função Pagamento

Assim que o usuário receber o bloco com o botão "Pagamento", as variáveis do cliente serão criadas automaticamente:

<div data-with-frame="true"><figure><img src="/files/7c0043edfac942aaff5f2090837914472b879f07" alt="" width="563"><figcaption><p>Fig. 9. variável payments</p></figcaption></figure></div>

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

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

Variável do cliente **`error_payment_button`** é criada se ocorrer um erro ao gerar o botão.

No valor da variável error\_payment\_button será gravado o texto do erro ou a resposta com erro do sistema de pagamento.

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

### Como processar o resultado

{% hint style="warning" %}
Atenção!

A Robokassa envia notificação apenas para transações bem-sucedidas pelo parâmetro Result URL. <mark style="color:vermelho;">**Não há callbacks sobre pagamentos malsucedidos no serviço Robokassa.**</mark>&#x20;

Fail URL é apenas a página de pagamento malsucedido, para a qual o pagador será redirecionado em caso de ocorrer um erro de código na página de pagamento.&#x20;
{% endhint %}

**Pagamento bem-sucedido.**

Depois de configurar corretamente o pagamento e gerar o link para realizar o pagamento, teste as configurações criadas. Se o pagamento for concluído com sucesso, no diálogo do cliente (seção "Clientes") <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> chegará um CALLBACK, que consiste em 10 caracteres da chave secreta do sistema de pagamento, da palavra \_success e, após um espaço, o valor do pagamento. **O callback é gerado automaticamente**, não é necessário criá-lo manualmente nem solicitá-lo ao suporte do sistema de pagamento,

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

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

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

ovg58keefc : 10 caracteres da chave secreta do sistema de pagamento

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

2999 : valor do pagamento

Execução do bloco:

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

Callback:

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

{% hint style="info" %}
Os callbacks (notificações) do sistema de pagamento o usuário NÃO VÊ. Eles aparecem apenas na aba "Clientes" e ficam visíveis para o operador/administrador.
{% endhint %}

### Exemplo de configuração da reação ao callback

No bloco com condição (pode ser tanto o bloco "Condição inicial" quanto o bloco "Não estado com condição") é necessário informar o callback que chega no pagamento.&#x20;

{% hint style="warning" %}
Importante: escolha de correspondência Correspondência exata ou Por presença de palavras-chave
{% endhint %}

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

Em seguida, no pagamento, o cliente receberá a mensagem do bloco no qual a reação ao callback foi configurada:

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

**Pagamento com erro**

Se o valor informado nas configurações do botão <mark style="color:azul;">**for diferente do valor que o cliente pagou**</mark>, no bot <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> chegará um CALLBACK, que consiste em 10 caracteres da chave secreta do sistema de pagamento, da palavra \_different\_amounts e, após um espaço, o ID único do pagamento

Por exemplo: `ovg58keefc_different_amounts 123456` , onde:&#x20;

`ovg58keefc` : 10 caracteres da chave secreta do sistema de pagamento

`_different_amounts` : resultado do processamento da solicitação (o valor do pagamento difere do valor no link)

`123456` : ID único do pagamento

## Função get\_robokassa\_payment\_url na Calculadora

Para gerar um link de pagamento, você pode usar a função `get_robokassa_payment_url` no bloco Calculadora.

No campo Calculadora, atribuiremos à variável o valor da função `get_robokassa_payment_url`&#x20;

{% hint style="info" %}
O nome da variável é definido por você. Nos screenshots, há exemplos de nomes de variáveis.&#x20;
{% endhint %}

Nessa variável será gravado o link de pagamento. A variável pode ser exibida na tela como link em uma mensagem ou colocada em um botão com o texto "Pagar".&#x20;

**EXEMPLO de link de pagamento:**: `https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda`

{% hint style="info" %}
Muitos sistemas de pagamento suportam caixas registradoras online em nuvem, elas são necessárias de acordo com a Lei 54-FZ.\
Leia as particularidades da emissão de recibos no site do sistema de pagamento escolhido para não passar por uma situação constrangedora com a Receita Federal.
{% endhint %}

{% tabs %}
{% tab title="Calculadora" %}
Exemplo 1:&#x20;

<div data-with-frame="true"><figure><img src="/files/bfd8a52705a8260b35d7afd4b6b8af03b171720c" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Descrição dos parâmetros" %}
`get_robokassa_payment_url(amount, description, products_for_receipt, recurrent, currency)`

#### Parâmetros da função:

<table><thead><tr><th width="190">Parâmetro</th><th>Valor do parâmetro</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><p><mark style="background-color:blue;">Valor a pagar.</mark>  Neste campo informamos o preço do produto em rublos. </p><p><strong>(Parâmetro obrigatório)</strong></p></td></tr><tr><td><strong><code>description</code></strong></td><td><mark style="background-color:blue;">Nome do produto.</mark>  Neste campo, você pode usar apenas caracteres do alfabeto inglês ou russo, números e sinais de pontuação. O comprimento máximo é de 100 caracteres. Essas informações são exibidas na interface da Robokassa e no Recibo Eletrônico que o cliente recebe após o pagamento bem-sucedido. <br><strong>(Parâmetro obrigatório)</strong></td></tr><tr><td><p><strong><code>products_for_</code></strong></p><p><strong><code>receipt</code></strong></p></td><td><p><mark style="background-color:blue;">Parâmetros para geração de recibos.</mark> </p><p>Leia mais <a href="#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment">aqui.</a> </p></td></tr><tr><td><strong><code>recurrent</code></strong></td><td><mark style="background-color:blue;">Ativação do pagamento recorrente.</mark> Se o pagamento recorrente estiver ativado, transmita o valor 1; se estiver desativado, transmita o valor None</td></tr><tr><td><strong><code>currency</code></strong></td><td><p><mark style="background-color:blue;">Código de moeda de três letras.</mark></p><p>É necessário transmitir o valor estritamente de acordo com os parâmetros aceitos pelo serviço Robokassa.<br>USD - dólar;<br>EUR - euro;<br>KZT - tenge.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemplo de código para copiar" %} <mark style="color:verde;">Exemplo 1: Link de pagamento sem recibo</mark>\
\
`res = get_robokassa_payment_url(100, 'Compre-me')`

<mark style="color:verde;">Exemplo 2: Link de pagamento com recibo</mark>\
\
`receipt = [{"name":"DDDDDDDD","amount":"44","quantity":"1","vat_code":"5","method":"full_payment","object":"commodity"}]`

`res = get_robokassa_payment_url(100, 'Compre-me', receipt, '3', 1, 1)`
{% endtab %}
{% endtabs %}

{% hint style="info" %}
A variável pode ser exibida na tela como link em uma mensagem ou colocada em um botão com o texto, por exemplo, "Comprar".&#x20;
{% endhint %}

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

\
O erro será gravado na última função na Calculadora
{% endhint %}

Depois de configurar corretamente o pagamento e gerar o link para realizar o pagamento, teste as configurações criadas.&#x20;

## Como adicionar uma descrição ao pagamento

Você pode adicionar uma descrição ao pagamento definindo a variável **payment\_description**

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

Essa descrição será exibida no formulário de pagamento, bem como no recibo.

### Como processar o resultado

Se o pagamento for concluído com sucesso, no diálogo do cliente (seção "Clientes") <mark style="color:laranja;">**AUTOMATICAMENTE**</mark> chegará um CALLBACK, que consiste em 10 caracteres da chave secreta do sistema de pagamento, da palavra \_success e, após um espaço, o valor do pagamento. **O callback é gerado automaticamente**, não é necessário criá-lo manualmente nem solicitá-lo ao suporte do sistema de pagamento,&#x20;

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

ovg58keefc : 10 caracteres da chave secreta do sistema de pagamento

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

1500 : valor do pagamento

{% hint style="success" %}
Atenção!&#x20;

O callback fica visível apenas para você no diálogo com o cliente.&#x20;

O callback não fica visível para o cliente, mas você pode configurar uma reação para o processamento bem-sucedido do pagamento.
{% endhint %}

### Exemplo

Configurações do bloco com a função `get_robokassa_payment_url:`

1. Se você exibe o link no texto:

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

{% hint style="warning" %}
Importante!&#x20;

O link de pagamento é único: não é possível copiá-lo e depois enviá-lo para outros clientes!&#x20;

Envie o link de pagamento por meio de uma variável no bot (veja fig. 17).&#x20;
{% endhint %}

Callback em caso de pagamento bem-sucedido:

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

2. Link no botão:

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

Execução do bloco:

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

Callback em caso de pagamento bem-sucedido:

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

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

Você também pode receber pagamentos gerando o link com a variável payment\_sum, na qual basta informar o valor do pagamento.&#x20;

{% hint style="info" %}
**Observe:** à variável **payment\_sum** é atribuído o último valor, após as variáveis opcionais **payment\_description, product\_name** etc.&#x20;
{% endhint %}

Para gerar o link de pagamento, você precisa definir o valor da variável **payment\_sum**, logo em seguida aparecerá a variável **robokassa\_pay\_url.** Essa variável pode ser exibida na tela como link ou colocada em um botão com o texto "Pagar".&#x20;

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

**EXEMPLO de execução do bloco (links de pagamento):**

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

{% hint style="warning" %}
Importante!&#x20;

O link de pagamento é único: não é possível copiá-lo e depois enviá-lo para outros clientes!&#x20;

Envie o link de pagamento por meio de uma variável no bot
{% endhint %}

Para enviar o link no botão, informe a variável no botão no campo url:

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

### Resultado do pagamento ao gerar o link de pagamento por meio de payment\_sum

Após o pagamento bem-sucedido, um callback chegará ao bot. Nesse sistema, você o vê como uma mensagem do usuário; para que ele não possa ser enviado pelo usuário, eles consistem na primeira senha do serviço Robokassa e de um sufixo com o status success, por exemplo: **qxgZ7zkNX4HHnG8UpZ61\_success.**

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

Além disso, após o pagamento bem-sucedido, a variável **robokassa\_payment\_completed** é definida como **True.**

Esse callback **NÃO VÊ** o usuário, eles são exibidos apenas para o operador

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

{% hint style="warning" %}
Para realizar um novo pagamento, é obrigatório zerar **payment\_sum**, o link gerado anteriormente e somente depois reatribuir a variável payment\_sum para obter um link novo\
\
Exemplo de zeramento de variáveis: \
robokassa\_pay\_url=''\
payment\_sum=0
{% endhint %}

Após a conclusão do pagamento, será adicionada ao cliente a variável **robokassa\_callback\_data**, contendo os dados da resposta do sistema de pagamento sobre a operação realizada. Do dicionário recebido, é possível extrair os dados necessários usando o método **get**.

## Como criar um fluxo de teste

Exemplo de fluxo que permitirá testar e começar a trabalhar rapidamente com o serviço Robokassa:

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

Na figura, é mostrado um exemplo do primeiro bloco, no qual se pergunta ao usuário quanto ele quer paga&#x72;**.**

Na figura abaixo, as configurações da seta: nela o alternador "Usuário insere dados" deve estar ativado e, no campo, deve estar escrita a variável **payment\_sum:**

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

Em seguida, no próximo bloco de pagamento, adicione um botão e defina a variável na linha url **robokassa\_pay\_url:**

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

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

O fluxo funcionará da seguinte forma:

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

Ao clicar no botão, o valor informado pelo cliente estará disponível para pagamento.

Após o pagamento, chegará um callback, para o qual também é possível configurar uma reação.&#x20;

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

{% hint style="info" %}
Importante!&#x20;

Não existe callback de pagamento malsucedido na Robokassa.
{% endhint %}

Para isso, adicione mais um bloco com condição e, na linha da condição, escreva um callback do tipo "**qxgZ7zkNX4HHnG8UpZ61\_success":**

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

{% hint style="info" %}
Defina obrigatoriamente o tipo de verificação como "Correspondência exata"
{% endhint %}

O fluxo funcionará da seguinte forma:

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

## Como gerar uma solicitação de fiscalização

### No botão com a função “Pagamento”

Ao criar o botão no menu suspenso “Dados para geração do recibo”, preencha os campos “Nome do produto”, “Valor total em rublos”, “Quantidade”, “Alíquota de IVA”, “Sistema de tributação”.

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

Mais detalhes na seção "[Para gerar o recibo](#dlya-formirovaniya-cheka)".

### Usando a variável payment\_sum

Como a geração do link ocorre no momento em que você define o valor da variável payment\_sum, é necessário definir as variáveis products\_for\_receipt e robokassa\_sno.

{% hint style="warning" %}
Importante:&#x20;

* ao gerar o link pela variável payment\_sum, o sistema de tributação é definido na variável robokassa\_sno.
* payment\_sum deve ser igual ao valor total de todos os produtos (soma de todos os parâmetros sum).
  {% endhint %}

Exemplo:

session\_timeout = 7200

product\_name = Primeiro pagamento

robokassa\_sno = osn

products\_for\_receipt = \[{"name": "Nome do produto", "quantity": 2, "sum": 2, "tax": "none"}, {"name": "Nome do produto 2", "quantity": 1, "sum": 6, "tax": "none"}]

payment\_sum = 10

### Para as funções get\_robokassa\_payment\_url e robokassa\_recurrent\_payment

Ao chamar as funções **get\_robokassa\_payment\_url** ou a função **robokassa\_recurrent\_payment** passe as variáveis como argumentos **taxation** e **products\_for\_receipt** conforme a descrição abaix&#x6F;**.**

As funções prepararão o link levando em conta a nomenclatura dos produtos e gerarão a solicitação de fiscalização.

{% hint style="warning" %}
Importante:

Variáveis **taxation** e **products\_for\_receipt** devem ser definidas para cada pagamento individual.

O serviço Robokassa não armazena esses parâmetros e não conseguirá realizar a fiscalização dos pagamentos para os quais a nomenclatura não foi enviada.
{% endhint %}

1. **products\_for\_receipt** - um array contendo a nomenclatura dos produtos.&#x20;

Cada item do produto deve ser representado na forma de um dicionário contendo os parâmetros **name, quantity, sum, tax, payment\_method, payment\_object e nomenclature\_code**.

\
&#x20;<mark style="color:vermelho;">**!**</mark>**&#x20;products\_for\_receipt** devem ser informados no seguinte formato:

\[

{"name": "Nome do produto", "quantity": "Quantidade do produto", "sum": "Preço do produto", "tax": "Alíquota de IVA"},

{"name": "Nome do produto 2", "quantity": "Quantidade do produto 2", "sum": "Preço do produto", "tax": "Alíquota de IVA"}

]

onde,&#x20;

1\) **name** - nome do produto. Se você usar caracteres especiais no nome do produto, por exemplo aspas, é obrigatório escapá-los.

2\) **quantity** - quantidade ou peso do produto (número inteiro ou decimal com ponto)

3\) **sum** ou **amount** (*obrigatório, duas variações de nome*) - valor total em rublos para toda a quantidade desse produto, considerando todos os possíveis descontos, bônus e preços especiais.

4\) **tax** ou **vat\_code** - (obrigatório, duas variações de nome; o valor depende do nome) - alíquota de IVA. Esse parâmetro define a alíquota de imposto na caixa registradora online.

{% tabs %}
{% tab title="Valores para tax:   " %}

<table data-full-width="true"><thead><tr><th width="272"> Valor</th><th>Descrição</th></tr></thead><tbody><tr><td>none</td><td>sem IVA</td></tr><tr><td>vat0</td><td>IVA à alíquota de 0%</td></tr><tr><td>vat5</td><td>IVA à alíquota de 5%</td></tr><tr><td>vat12</td><td>IVA à alíquota de 12%</td></tr><tr><td>vat16</td><td>IVA à alíquota de 16%</td></tr></tbody></table>
{% endtab %}

{% tab title="Valor para vat\_code:" %}

<table><thead><tr><th width="209">Valores</th><th> Descrição</th></tr></thead><tbody><tr><td>'1' </td><td>Sem IVA</td></tr><tr><td>'2' </td><td>IVA à alíquota de 0%</td></tr><tr><td>'8'</td><td>IVA à alíquota de 5%</td></tr><tr><td>'15'</td><td>IVA à alíquota de 12%</td></tr><tr><td>'14'</td><td>IVA à alíquota de 16%</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

5\) **method** ou **payment\_method** - (duas variações de nome, parâmetro opcional) indicativo do método de pagamento.&#x20;

<table><thead><tr><th width="345" align="center">Valores possíveis do parâmetro:</th><th>O que o valor significa: </th></tr></thead><tbody><tr><td align="center">full_prepayment</td><td>pré-pagamento de 100%. Pagamento antecipado integral antes da entrega do item do cálculo</td></tr><tr><td align="center">prepayment</td><td>pré-pagamento. Pagamento antecipado parcial antes da entrega do item do cálculo</td></tr><tr><td align="center">advance</td><td>adiantamento</td></tr><tr><td align="center">full_payment </td><td>pagamento integral. Pagamento total, incluindo o adiantamento (pré-pagamento) no momento da entrega do item do cálculo;</td></tr><tr><td align="center">partial_payment </td><td>pagamento parcial e crédito. Pagamento parcial do item do cálculo no momento da entrega, com pagamento posterior a crédito;</td></tr><tr><td align="center">credit </td><td>entrega a crédito. Entrega do item do cálculo sem pagamento no momento da entrega, com pagamento posterior a crédito;</td></tr><tr><td align="center">credit_payment</td><td>pagamento do crédito. Pagamento do item do cálculo após sua entrega com pagamento a crédito (quitação do crédito).</td></tr></tbody></table>

6\) **object** ou **payment\_object** - (duas variantes de nome, parâmetro opcional) item do cálculo (se não for informado, será commodity (mercadoria))

<table><thead><tr><th width="328" align="center">Valores possíveis do parâmetro</th><th>O que o valor significa</th></tr></thead><tbody><tr><td align="center"><strong>commodity</strong></td><td>Produto. Sobre o produto vendido, exceto produto sujeito a imposto especial (nome e outras informações que descrevem o produto)</td></tr><tr><td align="center"><strong>excise</strong> </td><td>Produto sujeito a imposto especial. Sobre o produto sujeito a imposto especial vendido (nome e outras informações que descrevem o produto)</td></tr><tr><td align="center"><strong>job</strong></td><td>Trabalho. Sobre o trabalho executado (nome e outras informações que descrevem o trabalho)</td></tr><tr><td align="center"><strong>service</strong></td><td>Serviço. Sobre o serviço prestado (nome e outras informações que descrevem o serviço)</td></tr><tr><td align="center"><strong>gambling_bet</strong></td><td>Aposta de jogo de azar. Sobre o recebimento de apostas no exercício de atividades de jogos de azar</td></tr><tr><td align="center"><strong>gambling_prize</strong></td><td>prêmio de jogo de azar. Sobre o pagamento de valores na forma de prêmio no exercício de atividades de jogos de azar</td></tr><tr><td align="center"><strong>lottery</strong></td><td>bilhete de loteria. Sobre o recebimento de valores na venda de bilhetes de loteria, bilhetes eletrônicos de loteria, recebimento de apostas de loteria no exercício de atividades de loteria</td></tr><tr><td align="center"><strong>lottery_prize</strong></td><td>prêmio de loteria. Sobre o pagamento de valores na forma de prêmio no exercício de atividades de loteria</td></tr><tr><td align="center"><strong>atividade intelectual</strong> </td><td>fornecimento de resultados de atividade intelectual. Sobre a concessão de direitos de uso de resultados de atividade intelectual ou meios de individualização</td></tr><tr><td align="center"><strong>pagamento</strong></td><td>pagamento. Sobre adiantamento, arras, pré-pagamento, crédito, contribuição para pagamento, multa por atraso, multa, remuneração, bônus e outro item de liquidação semelhante</td></tr><tr><td align="center"><strong>comissão de agente</strong> </td><td>remuneração de agente. Sobre a remuneração do usuário que seja agente de pagamento (subagente), agente bancário de pagamento (subagente), comissionista, mandatário ou outro agente;</td></tr><tr><td align="center"><strong>composto</strong></td><td>item composto de cálculo. Sobre o item de cálculo composto por itens, a cada um dos quais pode ser atribuído o valor dos sinais acima listados</td></tr><tr><td align="center"><strong>outro</strong></td><td>outro item de cálculo. Sobre o item de cálculo que não se refere aos itens de cálculo listados acima</td></tr><tr><td align="center"><strong>direito patrimonial</strong></td><td>direito patrimonial</td></tr><tr><td align="center"><strong>receita não operacional</strong></td><td>receita não operacional</td></tr><tr><td align="center"><strong>contribuições de seguro</strong></td><td>contribuições de seguro</td></tr><tr><td align="center"><strong>taxa comercial</strong></td><td>taxa comercial</td></tr><tr><td align="center"><strong>taxa de resort</strong></td><td>taxa de resort</td></tr></tbody></table>

7\) **código da nomenclatura** - (condicionalmente obrigatório) marcação do produto: é transmitida exatamente como está impressa na embalagem do produto.&#x20;

{% hint style="warning" %}
O parâmetro é obrigatório apenas para as lojas que vendem produtos sujeitos à marcação obrigatória.&#x20;

O código de marcação fica na embalagem do produto, ao lado do código de barras ou como código QR.
{% endhint %}

{% hint style="warning" %}
Importante! Para a fiscalização, é importante informar os parâmetros do recibo.&#x20;

O formato correto do recibo é transmitido assim:

rec = \[{"name": "Pacote 1 mês", "quantity": 1, "sum": 4800, "tax": "none"}]

response = robokassa\_recurrent\_payment(4800, 'Treinamento na escola de voo Aviator', 'ru', rec, 'osn')

onde é necessário inserir seus dados.&#x20;
{% endhint %}

## Emissão do recibo ao receber pagamento nos Cursos na página do curso

É preciso selecionar, na seção "Pagamento" das configurações do curso, o sistema de pagamento Robokassa:

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

Preencha, na seção "Adquirência" nas configurações do sistema de pagamento (se ainda não fez isso), o campo "Alíquota de ICMS".

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

## Quais podem ser os erros

#### Código de erro 40

«Não é possível repetir o pagamento da fatura com o mesmo número».

Após o pagamento bem-sucedido, é necessário mover o diálogo para o bloco "Fim da coleta de dados", para que um novo número de pagamento seja gerado.

#### Código de erro 34

«O serviço de pagamentos recorrentes não é permitido para a loja».

#### Código de erro 31

«Valor de pagamento inválido».

Tal erro pode ocorrer ao redirecionar o cliente para a página de pagamento para emissão da fatura. Isso significa que você não está nos informando o valor sobre o qual o pagamento deve ser processado, ou está informando um valor igual a zero.

#### Código de erro 29

«Parâmetro Signature inválido»

Aqui podem haver vários motivos, mas todos estão relacionados ao script responsável pela inicialização do pagamento (especificamente, a parte dele que forma o parâmetro Signature pela fórmula composta por variáveis). Esse erro ocorre com bastante frequência, e aqui estão 3 possíveis motivos:

* **Primeiro:** Identificador da loja incorreto (MerchantLogin);
* **Segundo:** Senha 1 incorreta (MerchantPass1);
* **Terceiro:** você usa parâmetros adicionais (sh&#x70;**\_**), que foram adicionados ao código do caixa, mas não foram incluídos na fórmula de cálculo — ou vice-versa, na fórmula de cálculo eles estão indicados, mas no código não. Se forem usados, passe-os em ordem alfabética — tanto nos parâmetros de pagamento quanto na fórmula de cálculo do Signature.

Ponto importante! Se você estiver trabalhando em modo de teste, passando o parâmetro IsTest=1 ou ativando-o com uma caixa de seleção nas configurações do módulo/bot, use apenas o par de senhas técnicas de teste (aba «Configurações técnicas» do cartão da sua loja).

#### Código de erro 23

«O pagamento de teste não pode ser criado. A loja não possui configurações de parâmetros de teste».

Isso significa que, antes de realizar um pagamento de teste, você não preencheu todos os dados necessários no bloco «Parâmetros para realização de pagamentos de teste» da aba «Configurações técnicas».

#### Código de erro 25

«A loja não foi ativada».

Esse erro ocorre com frequência, e aqui podem haver 2 motivos.

* **Primeiro:** isso é realmente assim – e é necessário ativar a loja e só depois emitir a fatura.
* **Segundo:** você indicou incorretamente o Identificador da loja nas configurações técnicas do site. O correto pode ser visto na seção «Minhas lojas» da Área Pessoal. Vá para a aba «Configurações técnicas» e encontre o campo «Identificador da loja». Copie o identificador e insira-o nas configurações do site.

## **Como realizar pagamentos automáticos do serviço Robokassa**

Instruções passo a passo para conectar pagamentos automáticos ao serviço **Robokassa**

**Passo 1. Ativar pagamentos automáticos no botão de pagamento**

Vá para as configurações do bloco no qual você fornece o link de pagamento e vá para as configurações do botão:

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

Depois, nas configurações do botão, encontre a caixa de seleção "Pagamentos automáticos" e ative-a:

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

Se você quiser aceitar pagamentos automáticos em todos os botões de pagamento, ative os pagamentos automáticos nas configurações de conexão do sistema de pagamento:

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

**Passo 2. Realizar um pagamento normal.**\
\
Em seguida, é preciso fazer um pagamento normal (obter o link de pagamento e fazer com que o cliente o pague), como descrito acima. Após o pagamento bem-sucedido, o cliente terá a variável **robokassa\_previous\_invoice\_id** com o identificador do pagamento.

{% hint style="warning" %}
A variável **robokassa\_previous\_invoice\_id** é obrigatória para os pagamentos seguintes.\
\
Se ela for excluída, o próximo pagamento automático NÃO poderá ser realizado.
{% endhint %}

{% hint style="danger" %}
Atenção!&#x20;

<mark style="color:vermelho;">**Desative**</mark> a caixa de seleção "**Pagamentos em modo de teste**" (se ela estiver ativa), caso contrário a variável robokassa\_previous\_invoice\_id com o identificador do pagamento não será gerada!&#x20;

![](/files/8859133615fe2a50a92dd51676ef106595ed3883)
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/db33037f8fcc322c2a1b3d93ad55b79c50c99dd5" alt=""><figcaption><p>Exemplo de geração do link para um pagamento normal</p></figcaption></figure></div>

<div data-with-frame="true"><img src="https://lh4.googleusercontent.com/FGVcl0wzMK3_ldq7OxHe3653Q3buEgR29657HixPQ6xUrqoa2E2TpG3yCRdF5oDgj69VhnQRlZJZG_wjnnwQyIjkHRTQ8nr-Jzwyo99CtaiOT5JUuiMLuE2Jm3MDTBxKXJoD02gr=s0" alt=""></div>

**Passo 3. Programar a cobrança automática**

Do bloco Pagamento bem-sucedido, planejamos uma seta com temporizador para o bloco de pagamento automático. Por exemplo, vamos agendar o próximo pagamento para daqui a 30 dias.&#x20;

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

Para que o pagamento automático aconteça no bloco desejado, no campo Calculadora, é preciso adicionar a chamada da função **robokassa\_recurrent\_payment**, passando a ela os parâmetros na ordem indicada:&#x20;

1. **payment\_amount** - valor a pagar (custo do produto em rublos)
2. **description** - nome do produto. Neste campo, você pode usar apenas caracteres do alfabeto inglês ou russo, números e sinais de pontuação. O comprimento máximo é de 100 caracteres. Essas informações são exibidas na interface da Robokassa e no Recibo Eletrônico que o cliente recebe após o pagamento bem-sucedido.&#x20;
3. **country** - zona do domínio (‘ru’ ou ‘kz’)
4. **products\_for\_receipt** - parâmetros para geração de recibos.

{% hint style="info" %}
Mais detalhes na seção "Como gerar uma solicitação de fiscalização -> [Para as funções get\_robokassa\_payment\_url e robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

5. **taxation** - sistema tributário.&#x20;

{% hint style="info" %}
Mais detalhes na seção "Como gerar uma solicitação de fiscalização -> [Para as funções get\_robokassa\_payment\_url e robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

Exemplo de solicitação de pagamento automático:

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

{% hint style="warning" %}
Na execução do pagamento automático, não deve haver link de pagamento da Robokassa nem a variável **payment\_sum**!
{% endhint %}

*<mark style="color:azul;">Passo 4. Programar cobranças recorrentes e configurar a possibilidade de cancelar os pagamentos automáticos.</mark>*\
\
Para a repetição regular dos pagamentos, programamos um loop - uma seta com atraso, por exemplo, de 30 dias.

<div data-with-frame="true"><figure><img src="/files/c61f5cf878511e0dab1d72908675c192cfc7b9c4" alt=""><figcaption><p>Loop - transição repetida para o bloco Pagamento automático</p></figcaption></figure></div>

Se você tiver a opção de cancelar os pagamentos automáticos, para que o próximo pagamento não seja realizado, é necessário excluir do cliente a variável `robokassa_previous_invoice_id`\
\
Para isso, no campo Calculadora, excluímos a variável:\
\
`robokassa_previous_invoice_id = ""`

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

### Pagamento normal com pagamentos automáticos ativados

Se os pagamentos automáticos estiverem ativados, mas for necessário um link sem assinatura (sem pagamentos automáticos), então, antes de gerar o link, é preciso definir a variável robokassa\_manual\_recurrent\_disable com o valor 1\
\
No campo Calculadora, declaramos a variável:\
`robokassa_manual_recurrent_disable = 1`

<div data-with-frame="true"><figure><img src="/files/bc41dd7742efe7ecfaf827a13d84a151be639b25" alt=""><figcaption><p>Configurações do bloco para gerar o link de um pagamento normal com Pagamentos Automáticos ativados</p></figcaption></figure></div>

{% hint style="info" %}
Atenção!&#x20;

O callback em pagamentos automáticos é idêntico ao callback que chega nos pagamentos bem-sucedidos.&#x20;

Como configurar a reação ao callback, explicamos na seção "[Como processar o resultado](#kak-obrabotat-rezultat)"
{% endhint %}

## Quais são os requisitos do serviço Robokassa para chatbots

Resposta oficial do serviço Robokassa:

> Você pode publicar o produto no marketplace com descrição e preço e aceitar pagamento no bot, pode criar uma página simples com descrição, preço, dados de contato e indicação de que a entrega do produto/prestação do serviço é eletrônica. Precisamos de um vínculo com o produto no marketplace ou com o site, porque não podemos saber o que você vende no seu bot nem em qual bot estamos.
>
> Não incluímos o link para o canal do Telegram como URL. Também exigimos que o site tenha o seguinte conteúdo: "O site deve estar funcionando, com conteúdo preenchido e links internos operando.
>
> Os produtos e serviços no seu site devem ser descritos em detalhes: a descrição deve incluir as características dos bens e serviços oferecidos, suas propriedades de consumo e o preço atual.
>
> No seu site deve obrigatoriamente haver informações atualizadas: telefone, e-mail, regras de realização e prazos de execução do pedido, condições de pagamento, entrega e devolução.
>
> Cada site é analisado individualmente.

## Robokassa no Telegram

### Conexão do bot de teste RobokassaPaymentTestBot.

1. Ao selecionar Connect Robokassa Test, o usuário vai para o bot RobokassaPaymentTestBot.
2. O usuário pressiona o botão /iniciar.
3. O usuário recebe a resposta do bot: "Digite o ID da loja".
4. É necessário inserir o id da loja no serviço Robokassa.
5. O bot pedirá uma confirmação que comprove a posse da loja por meio do envio de um SMS para o número indicado na loja: «SMS enviada para o número \*%%%%», onde %%%% são os últimos 4 dígitos do telefone
6. O usuário insere o código de 6 dígitos.
7. Se tudo ocorrer com sucesso, a mensagem será exibida ao usuário: “Você conectou com sucesso o bot @BotName à Robokassa. @BotFather informará a você um novo token.”
8. Depois disso, no BotFather aparece o token de pagamento ao qual os pagamentos são conectados.

### Conexão do bot ao vivo RobokassaPaymentBot.

1. Ao selecionar Connect Robokassa Live, o usuário vai para o bot RobokassaPaymentBot,
2. O usuário pressiona o botão /iniciar.
3. O usuário recebe a resposta do bot: "Digite o ID da loja".
4. É necessário inserir o id da loja no serviço Robokassa.
5. O bot pedirá uma confirmação que comprove a posse da loja por meio do envio de um SMS para o número indicado na loja: «SMS enviada para o número \*%%%%», onde %%%% são os últimos 4 dígitos do telefone
6. O usuário insere o código de 6 dígitos.
7. Se tudo ocorrer com sucesso, a mensagem será exibida ao usuário: “Você conectou com sucesso o bot @BotName à Robokassa. @BotFather informará a você um novo token.”
8. Depois disso, no BotFather aparece o token de pagamento ao qual os pagamentos são conectados.

O processamento dos resultados do pagamento é semelhante ao descrito [aqui](#kak-poluchit-uvedomlenie-o-rezultate-oplaty)


---

# 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/robokassa-kz.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.
