# Paypal

* [Como configurar o Paypal ](#kak-nastroit-paypal)link How to set up Paypal
* [Como criar um link de pagamento ](#sozdanie-ssylki-na-oplatu) link How to create a payment link
* [Como criar um pagamento recorrente](#kak-sozdat-rekkurentnyi-platezh) link How to create a recurring payment
* [Как обработать результат](#obrabotka-rezultata) link  How to process the result

## How to set up Paypal

Para trabalhar com o Paypal, você precisa obter duas chaves: **client\_id** e **secret**

Vá para a página <https://developer.paypal.com/developer/applications/>

E escolha da lista ou crie uma nova aplicação:

![](https://lh4.googleusercontent.com/i7wtKw-RzPSHarXCkIVIqPvAvn_39t1r4CPL9lSmxzFc1mNiz24zHj4PJIUUhCzL-YXaNrQbK5edCP9bYHGXkIij59shZ6XPj3YZiVp4uRlDllvWRetnF1Y3GSbQXRZt03OOiGxs)

Na parte superior, mude para o modo Live e selecione a aplicação desejada. A página de configurações será aberta, onde estão os dados de que precisamos:<br>

![](https://lh4.googleusercontent.com/DEKr4nWXl27UVUoT4Ycl_nOx0Aj-M7KrLcgxWR-uTaUFV82416Wwd2ib4ghxQ3jiW5P53KfMwkqvB_ZS3KjLxNNdn8bzbpvVgfeV5HKsL_iFcv6bc1y_0yntseRKzwPUGz37bpnn)

Copie os dados e cole-os nos campos correspondentes nas configurações do Mavibot: vá para a seção "Acquiring" e encontre o serviço Paypal:

<figure><img src="/files/bbc0a0237818b0afee2227b63c26f760e6b3ea13" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "Connect" e preencha os campos com a chave secreta e o Client ID recebidos anteriormente:

<figure><img src="/files/c014a8af0a8dc3f8944281a06cda9d22db23b607" alt=""><figcaption></figcaption></figure>

Em seguida, clique em "Save settings". Isso conclui a conexão.

## Como criar um link de pagamento

### Usando a variável payment\_sum

Para gerar um link de pagamento, você precisa definir o valor da **payment\_sum** variável e imediatamente depois disso a **paypal\_pay\_url** variável aparecerá.

| Parâmetros da função     | Descrição do parâmetro                                                                          | Observação                                                                                                                                |
| ------------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **payment\_title**       | <p>(variável opcional)<br>isso é o nome do produto.</p>                                         | Se não for especificado, ele é preenchido com o texto: **“Invoice payment order\_id"** (order\_id é o identificador do pedido no mavibot) |
| **payment\_description** | descrição do produto, campo opcional                                                            |                                                                                                                                           |
| **company\_name**        | o nome da sua empresa é exibido no topo da página de pagamento (o exemplo está abaixo, company) |                                                                                                                                           |

![](https://lh4.googleusercontent.com/sVxsMZdMlVcetXrFFXEWC9lV6dNB3dzDTBWv05Cl5GiilrRWDHlAy69a_ntlX2jY3esyzOPv8TGDm-YHQwnkz1nVMlMtWL6M7rOqeJMNRs0KY22g_d50EksFL8U7y7pF2BZH6FqJ)

Além disso, antes de especificar o payment\_sum, você pode indicar em qual idioma a página de pagamento estará.

Para isso, defina a variável locale. O idioma padrão é <mark style="color:vermelho;">**Russo (ru-RU).**</mark> Opções possíveis: da-DK, he-IL, id-ID, ja-JP, no-NO, pt-BR, ru-RU, sv-SE, th-TH, zh-CN, zh-HK, zh-TW, etc. (o conjunto de idiomas disponíveis varia, baseie-se na fonte original) сысылка [fonte original](https://developer.paypal.com/api/rest/reference/locale-codes/))

Você também pode especificar a moeda na qual o pagamento é aceito. Para isso, especifique a **currency** variável, o <mark style="color:vermelho;">**rublo (RUB)**</mark> é definido por padrão; para o dólar, defina seu valor como USD (currency = USD). As opções de moeda possíveis podem ser encontradas no link. ссылка  [link](https://developer.paypal.com/docs/api/reference/currency-codes/).&#x20;

E o terceiro parâmetro adicional é **company\_name** - o nome da sua empresa, exibido no topo da página de pagamento (o exemplo está abaixo, company)

O **paypal\_pay\_url** variável pode ser exibida com um link ou colocada em um botão com o texto "Pay".

O link se parece com: [https://www.paypal.com/checkoutnow?token=07N53571YM296381N](https://www.sandbox.paypal.com/checkoutnow?token=07N53571YM296381N)

Um exemplo da implementação.

Definindo o valor do pagamento e o nome da empresa

<figure><img src="/files/2f7d905895da41692b039c62575e7a3c3578365e" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
&#x20;**Observe:** o **payment\_sum** variável recebe o valor por último, depois das variáveis opcionais **payment\_title, company\_name,** etc.
{% endhint %}

Em seguida, especifique a variável #**{paypal\_pay\_url}** no segundo bloco "Status":

1. A variável pode ser especificada no campo de mensagem:

<figure><img src="/files/72578682b9ca9e27a1538a54f3a7267747e84d30" alt=""><figcaption></figcaption></figure>

2. A variável pode ser especificada no campo url nas configurações do anexo:

<figure><img src="/files/10f96e57384d4901a1a1927490956ef4354189cd" alt=""><figcaption></figcaption></figure>

3. A variável pode ser especificada no campo url nas configurações do botão:

<figure><img src="/files/589d327f5dc6660b272e9b2a72438faafa709ce4" alt=""><figcaption></figcaption></figure>

Ao abrir o link de pagamento

![](https://lh3.googleusercontent.com/GvWy17AiTcE0apTWzoPjoADq9h9bXWMRjS61DC00iwnVfSojYKvGS6Puhr6Eg0KfBtBnUza1rY_Mlh0351ka2ikbmNkC6-9zjc2CP-LdUYOQjX4fMaB3V-AT9IRTrMbqRxD-KzW2)

### Usando a função de calculadora paypal\_payment\_url

Crie um bloco do construtor de funil e use a **paypal\_payment\_url** função na calculadora, passando os parâmetros necessários para ela:

<table><thead><tr><th width="264">Parâmetros da função</th><th>Descrição do parâmetro</th></tr></thead><tbody><tr><td><mark style="color:vermelho;"><strong>!</strong></mark> <strong>payment_sum</strong></td><td>o parâmetro obrigatório é o valor do pagamento.</td></tr><tr><td><strong>currency</strong></td><td> A moeda de pagamento padrão é ‘USD'. A lista completa está disponível no link <a href="https://developer.paypal.com/docs/api/reference/currency-codes/">https://developer.paypal.com/docs/api/reference/currency-codes/</a></td></tr><tr><td><strong>payment_title</strong></td><td>o cabeçalho do pagamento (até 127 caracteres). (Se omitido, ele é preenchido com o texto: “Invoice payment payment_id”, onde payment_id é o ID do pedido no Mavibot)</td></tr><tr><td><strong>payment_description</strong></td><td>descrição curta do pagamento<br>(<em>até 127 caracteres</em>)</td></tr><tr><td>company_name</td><td>parâmetro opcional, nome da organização/empresa, etc.</td></tr><tr><td><strong>locale</strong></td><td>O idioma da página de pagamento é especificado como en-US, fr-XC, etc.<br>Por padrão, é ‘ru-Ru’.<br>A lista completa está disponível no link https://developer.paypal.com/api/rest/reference/locale-codes/</td></tr></tbody></table>

Quando a condição do bloco é atendida, o cliente receberá um link de pagamento, e a **paypal\_payment\_completed** variável do cliente será criada com o valor <mark style="color:vermelho;">**False.**</mark>

<figure><img src="/files/6160a10b1f07ad9e2d3cc107638b18e57c6d7f8e" alt="" width="563"><figcaption></figcaption></figure>

`url = paypal_payment_url(2500,`` `<mark style="color:vermelho;">`'RUB'`</mark>`, 'Invoice payment payment_id','payment description', 'organization name', 'ru-Ru')`

## Como criar um pagamento recorrente

Para criar e receber um link para pagar com pagamentos recorrentes, você precisa criar um **plano de assinatura** na sua conta pessoal.&#x20;

<figure><img src="/files/3cbcacad3ae4b385ff418d3cf7c7f315fca7baec" alt="" width="548"><figcaption></figcaption></figure>

<figure><img src="/files/3ebb6b06cafd836055cd4b4cde5c9b2628016cf0" alt="" width="563"><figcaption></figcaption></figure>

Selecionando uma oferta já criada:

<figure><img src="/files/ee785a5e4122eec2827b7117ce2f02a461c78aa3" alt="" width="563"><figcaption></figcaption></figure>

Como alternativa, digite o nome da oferta na barra de pesquisa e clique em "Create".

<figure><img src="/files/fcf6be96a4f7f55d330eca2e65379001d7bef9ef" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/b44afebaae7714b4870a22e8742f489eb5f7fb75" alt="" width="563"><figcaption><p>Criando uma oferta de assinatura no paypal</p></figcaption></figure>

Selecione o tipo de débito automático Fixed:

<figure><img src="/files/6d0c2633be9d7422be7f30401c1f94b668ec12c6" alt="" width="563"><figcaption></figcaption></figure>

Criar assinatura

<figure><img src="/files/e703f3f4dae1d2913200af068c3fe11f88858848" alt="" width="563"><figcaption></figcaption></figure>

Escolhendo a moeda da assinatura e os termos de débito:

{% hint style="danger" %} <mark style="color:vermelho;">**Atenção!!**</mark>&#x20;

No Mavibot, a moeda padrão é em euros; se o débito for em dólares ou em outra moeda, então ao criar uma assinatura, especifique a moeda de que você precisa e, no Mavibot, a mesma moeda da assinatura do Paypal.
{% endhint %}

<figure><img src="/files/fc0a986e4a7bccd3ac8a70746542181c77c453fd" alt="" width="563"><figcaption></figcaption></figure>

Em seguida, ative a assinatura:

<figure><img src="/files/d80df50eb95f92d67ff52918aa9b3d4a76ab5a19" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/f639ea55f864dde65483b63f77d209cc4c5e9508" alt="" width="563"><figcaption></figcaption></figure>

Após a criação, o ID dela estará disponível, que usaremos no futuro para criar uma assinatura e receber um link de pagamento.

<figure><img src="/files/ecb6a97fc1539985f7d27abcf4d7b4f28129d817" alt="" width="563"><figcaption></figcaption></figure>

O link de pagamento é gerado e retornado pela função:\
**paypal\_subscription\_url(plan\_id, shipping\_currency, shipping\_payment\_sum, start\_time)**&#x20;

| Parâmetros da função                                              | Descrição do parâmetro                                                                                                                                                                                                                                                |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:vermelho;">**!**</mark> **plan\_id**           | ID do plano de assinatura                                                                                                                                                                                                                                             |
| <mark style="color:vermelho;">**!**</mark> **shipping\_currency** | se o pagamento para o plano especificado for em dólares, você não precisa transferir nada; caso contrário, transferimos o código da moeda que você especificou no plano. A moeda na qual a entrega é paga é transmitida aqui (mesmo para custo zero). Por padrão, USD |
| **shipping\_payment\_sum**                                        | Este é um parâmetro opcional que especifica o custo de entrega. Por padrão, o valor é definido como zero.                                                                                                                                                             |
| **start\_time**                                                   | <p>parâmetro opcional, data e hora do início da assinatura. Se você não transferir nada, então a data de início da assinatura = a data do pagamento.<br> Formatos: %d.%m.%Y ou %d.%m.%Y %H:%M. </p>                                                                   |

<figure><img src="/files/6f1a0064a377ed18ec56717ee7dc4a5087a64ecd" alt="" width="563"><figcaption></figcaption></figure>

Ao criar o link, a **paypal\_subscription\_id** variável também aparecerá, que conterá o ID da assinatura.

Durante o pagamento, você receberá um callback, que é semelhante ao pagamento de um pagamento comum.

**paypal\_subscription\_data(paypal\_subscription\_id)** - obtenção de informações sobre a assinatura

| Parâmetros da função         | Descrição dos parâmetros |
| ---------------------------- | ------------------------ |
| **paypal\_subscription\_id** | o ID da assinatura.      |

O **resultado** da execução da função - é um array que contém todas as informações sobre a assinatura, incluindo o número de pagamentos, o número de tentativas de cobrança malsucedidas, o status e muito mais.

### Como cancelar a assinatura

A função paypal\_remove\_subscription(paypal\_subscription\_id) ajudará os clientes a cancelar suas assinaturas dos seus serviços.

Parâmetros:

| Parâmetros da função     | Descrição                                                              |
| ------------------------ | ---------------------------------------------------------------------- |
| paypal\_subscription\_id | o ID da assinatura que é salvo na variável do cliente ao se inscrever. |

<figure><img src="/files/e7c5a2e019082a8ec9c161bf2746128db3633dbc" alt=""><figcaption></figcaption></figure>

## Como processar o resultado

{% hint style="info" %}
Após um pagamento bem-sucedido, callbacks serão enviados ao bot, o que informará que o pagamento foi bem-sucedido.
{% endhint %}

{% hint style="success" %}
No sistema, você vê callbacks como mensagens do usuário, mas o próprio usuário NÃO AS VÊ: elas são exibidas apenas para o operador.
{% endhint %}

{% hint style="danger" %}
Para processar o callback no bloco e enviar mensagens ao usuário sobre o status do pagamento, use o tipo de comparação "Correspondência exata".
{% endhint %}

{% hint style="warning" %}
Os callbacks podem atrasar, então depois de exibir o link de pagamento ao usuário, é recomendável enviar uma mensagem como: “Depois de realizar o pagamento, aguarde uma mensagem de confirmação indicando que o pagamento foi bem-sucedido.”
{% endhint %}

### Para pagamento direto

O callback de pagamento bem-sucedido consiste nos primeiros 10 caracteres do secret e na assinatura com o status. Por exemplo: EHsWHYOoWV\_success

Exemplo 1: reação a um pagamento bem-sucedido usando o bloco "Start condition":

<figure><img src="/files/309b7cefec2d2f6f33ebb23e73cd20f5183a49a6" alt=""><figcaption></figcaption></figure>

Exemplo 2: reação a um pagamento bem-sucedido usando o bloco "Start condition":

<figure><img src="/files/3e1e76c04b2f2556c837e99e9ca734605cd3609b" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Se você não quiser tirar o usuário do fluxo principal do chatbot, use o bloco “No-state with condition” — os usuários não podem ser redirecionados diretamente para esse bloco, então, após um pagamento bem-sucedido, eles ainda permanecerão no funil principal, ao mesmo tempo em que receberão uma notificação sobre o pagamento bem-sucedido.

Mas se você quiser continuar o funil com base no evento de pagamento bem-sucedido, use o bloco “Start condition”. Nesse caso, após concluir o bloco de pagamento, o usuário será redirecionado para o bloco “Start condition”, a partir do qual você pode continuar construindo seu funil.
{% endhint %}

{% hint style="info" %}
Mais informações sobre blocos condicionais são fornecidas no artigo de mesmo nome. [blocks with condition told](broken://pages/9e3be42889ce2d0dcab0abacde702001b37f7a3f) ссылка
{% endhint %}

Após o pagamento bem-sucedido, a variável paypal\_payment\_completed é definida como True.

Após a conclusão do pagamento, a variável paypal\_callback\_data é adicionada ao cliente, contendo dados atualizados do sistema de pagamento sobre o status da transação. Você pode extrair os dados necessários do dicionário recebido usando o método get.

{% hint style="danger" %}
Para fazer um pagamento повторизado, você precisa redefinir a variável payment\_sum, a variável com o link gerado anteriormente, e então reatribuir a variável payment\_sum ou chamar a função para obter um novo link.
{% endhint %}

### Para pagamentos de assinatura

{% hint style="danger" %}
A função de configuração de callback para operações relacionadas a assinatura foi adicionada em 09/01/2024. Para que os callbacks desta categoria funcionem corretamente, você precisa desativar e conectar a integração do sistema de pagamento Paypal no seu projeto.
{% endhint %}

Ao realizar um pagamento de assinatura, o bot receberá uma das seguintes mensagens:

* sobre ativação da assinatura. Por exemplo, subscription\_I-PTV5H4MRC1H3\_activated;
* Notificação de um pagamento recorrente de assinatura bem-sucedido. Por exemplo, subscription\_I-PTV5H4MRC1H3\_paid;
* ou sobre um erro no pagamento da assinatura. Por exemplo, subscription\_I-PTV5H4MRC1H3\_not\_paid;

Nos exemplos acima, “I-PTV5H4MRC1H3” é o ID da assinatura do cliente, que pode ser acessado usando a variável paypal\_subscription\_id.

O callback adicionará a variável paypal\_subscription\_callback\_data ao cliente, que contém dados atuais do sistema de pagamento sobre o status da transação. Você pode extrair os dados necessários do dicionário recebido usando o método get.

Exemplo 1: reação à ativação da assinatura usando o bloco "Start condition":

<figure><img src="/files/053c650f2aa28b4cf72c850294df6a1b5bcfbfc9" alt=""><figcaption></figcaption></figure>

Exemplo 1: Reação à ativação da assinatura usando o bloco "Not state with condition":

<figure><img src="/files/ed17175ed3242b6b01016507211f35437e4f708e" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.mavibot.ai/doc/pt/pagamento/paypal.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.
