# Paypal

* [Cómo configurar Paypal ](#kak-nastroit-paypal)enlace Cómo configurar Paypal
* [Cómo crear un enlace de pago ](#sozdanie-ssylki-na-oplatu) enlace Cómo crear un enlace de pago
* [Cómo crear un pago recurrente](#kak-sozdat-rekkurentnyi-platezh) enlace Cómo crear un pago recurrente
* [Cómo procesar el resultado](#obrabotka-rezultata) enlace  Cómo procesar el resultado

## Cómo configurar Paypal

Para trabajar con Paypal, necesitas obtener dos claves: **client\_id** y **secreto**

Ve a la página <https://developer.paypal.com/developer/applications/>

Y elige de la lista o crea una nueva aplicación:

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

En la parte superior, cambia al modo Live y selecciona la aplicación deseada. Se abre la página de configuración, donde se encuentran los datos que necesitamos:<br>

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

Copia los datos y pégalos en los campos correspondientes en la configuración de Mavibot: ve a la sección "Acquiring" y encuentra el servicio Paypal:

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

A continuación, haz clic en "Connect" y rellena los campos con la clave secreta y el Client ID recibidos anteriormente:

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

A continuación, haz clic en "Save settings". Con esto se completa la conexión.

## Cómo crear un enlace de pago

### Usando la variable payment\_sum

Para generar un enlace de pago, debes establecer el valor de la **payment\_sum** variable y justo después la **paypal\_pay\_url** variable aparecerá.

| Parámetros de la función | Descripción del parámetro                                                                                     | Nota                                                                                                                                |
| ------------------------ | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **payment\_title**       | <p>(variable opcional)<br>este es el nombre del producto.</p>                                                 | Si no se especifica, se rellena con el texto: **“Invoice payment order\_id"** (order\_id es el identificador del pedido en mavibot) |
| **payment\_description** | descripción del producto, campo opcional                                                                      |                                                                                                                                     |
| **company\_name**        | el nombre de tu empresa se muestra en la parte superior de la página de pago (el ejemplo está abajo, company) |                                                                                                                                     |

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

Además, antes de especificar payment\_sum, puedes indicar en qué idioma estará la página de pago.

Para ello, establece la variable locale. El idioma predeterminado es <mark style="color:rojo;">**Ruso (ru-RU).**</mark> Opciones posibles: 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. (el conjunto de idiomas disponibles varía, toma como referencia la fuente original) ссылка [fuente original](https://developer.paypal.com/api/rest/reference/locale-codes/))

También puedes especificar la moneda en la que se aceptará el pago. Para ello, especifica la **currency** variable, la <mark style="color:rojo;">**rublos (RUB)**</mark> se establece por defecto; para dólares, establece su valor en USD (currency = USD). Las opciones de moneda posibles se pueden encontrar en el enlace. ссылка  [enlace](https://developer.paypal.com/docs/api/reference/currency-codes/).&#x20;

Y el tercer parámetro adicional es **company\_name** - el nombre de tu empresa, que se muestra en la parte superior de la página de pago (el ejemplo está abajo, company)

El **paypal\_pay\_url** la variable puede mostrarse con un enlace o colocarse en un botón con el texto "Pay".

El enlace se ve así: [https://www.paypal.com/checkoutnow?token=07N53571YM296381N](https://www.sandbox.paypal.com/checkoutnow?token=07N53571YM296381N)

Un ejemplo de la implementación.

Configuración del importe del pago y del nombre de la empresa

<figure><img src="/files/7cba16ca81a608ff2d3f7b004c88aa80782de3ad" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
&#x20;**Tenga en cuenta:** el **payment\_sum** la variable se asigna en último lugar, después de las variables opcionales **payment\_title, company\_name,** etc.
{% endhint %}

A continuación, especifica la variable #**{paypal\_pay\_url}** en el segundo bloque "Status":

1. La variable puede especificarse en el campo message:

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

2. La variable puede especificarse en el campo url en la configuración del adjunto:

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

3. La variable puede especificarse en el campo url en la configuración del botón:

<figure><img src="/files/9c7ad8d6ce23fa856f6e522ccc13e6de0d703102" alt=""><figcaption></figcaption></figure>

Al abrir el enlace de pago

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

### Usando la función de calculadora paypal\_payment\_url

Crea un bloque del constructor de embudos y usa la **paypal\_payment\_url** función en la calculadora, pasándole los parámetros necesarios:

<table><thead><tr><th width="264">Parámetros de la función</th><th>Descripción del parámetro</th></tr></thead><tbody><tr><td><mark style="color:rojo;"><strong>!</strong></mark> <strong>payment_sum</strong></td><td>el parámetro requerido es el importe del pago.</td></tr><tr><td><strong>currency</strong></td><td> La moneda de pago predeterminada es ‘USD'. La lista completa está disponible en el enlace <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>el encabezado del pago (hasta 127 caracteres). (Si se omite, se rellena con el texto: “Invoice payment payment_id”, donde payment_id es el ID del pedido en Mavibot)</td></tr><tr><td><strong>payment_description</strong></td><td>breve descripción del pago<br>(<em>hasta 127 caracteres</em>)</td></tr><tr><td>company_name</td><td>parámetro opcional, nombre de la organización/empresa, etc.</td></tr><tr><td><strong>locale</strong></td><td>El idioma de la página de pago se especifica como en-US, fr-XC, etc.<br>Por defecto, es ‘ru-Ru’.<br>La lista completa está disponible en el enlace https://developer.paypal.com/api/rest/reference/locale-codes/</td></tr></tbody></table>

Cuando se cumpla la condición del bloque, el cliente recibirá un enlace de pago, y la **paypal\_payment\_completed** variable del cliente se creará con el valor <mark style="color:rojo;">**False.**</mark>

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

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

## Cómo crear un pago recurrente

Para crear y recibir un enlace para pagar con pagos recurrentes, debes crear un **plan de suscripción** en tu cuenta personal.&#x20;

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

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

Seleccionando una oferta ya creada:

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

Alternativamente, escribe el nombre de la oferta en la barra de búsqueda y haz clic en "Create".

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

<figure><img src="/files/938127ac9abb049182a14a562e0f019596c7dc99" alt="" width="563"><figcaption><p>Creación de una oferta de suscripción en paypal</p></figcaption></figure>

Selecciona el tipo de cargo automático Fixed:

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

Crear suscripción

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

Elección de la moneda de la suscripción y de las condiciones del cargo:

{% hint style="danger" %} <mark style="color:rojo;">**¡Atención!!**</mark>&#x20;

En Mavibot, la moneda predeterminada es el euro; si el cargo es en dólares o en otra moneda, al crear una suscripción especifica la moneda que necesites y en Mavibot la misma moneda de la suscripción de Paypal.
{% endhint %}

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

A continuación, activa la suscripción:

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

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

Después de crearla, estará disponible su ID, que utilizaremos en el futuro para crear una suscripción y recibir un enlace de pago.

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

El enlace de pago es generado y devuelto por la función:\
**paypal\_subscription\_url(plan\_id, shipping\_currency, shipping\_payment\_sum, start\_time)**&#x20;

| Parámetros de la función                                      | Descripción del parámetro                                                                                                                                                                                                                                         |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:rojo;">**!**</mark> **plan\_id**           | ID del plan de suscripción                                                                                                                                                                                                                                        |
| <mark style="color:rojo;">**!**</mark> **shipping\_currency** | si el pago del plan especificado es en dólares, no tienes que transferir nada; de lo contrario, transferimos el código de moneda que especificaste en el plan. Aquí se transmite la moneda en la que se paga el envío (incluso para coste cero). Por defecto, USD |
| **shipping\_payment\_sum**                                    | Este es un parámetro opcional que especifica el coste del envío. Por defecto, el valor se establece en cero.                                                                                                                                                      |
| **start\_time**                                               | <p>parámetro opcional, fecha y hora de inicio de la suscripción. Si no transfieres nada, la fecha de inicio de la suscripción = la fecha del pago.<br> Formatos: %d.%m.%Y o %d.%m.%Y %H:%M. </p>                                                                  |

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

Al crear el enlace, la **paypal\_subscription\_id** variable también aparecerá, y contendrá el ID de la suscripción.

Durante el pago, recibirás un callback, que es similar al pago de un pago normal.

**paypal\_subscription\_data(paypal\_subscription\_id)** - obtención de información sobre la suscripción

| Parámetros de la función     | Descripción de los parámetros |
| ---------------------------- | ----------------------------- |
| **paypal\_subscription\_id** | el ID de la suscripción.      |

El **resultado** de ejecutar la función - es un array que contiene toda la información sobre la suscripción, incluyendo el número de pagos, el número de intentos fallidos de cobro, el estado y más.

### Cómo cancelar la suscripción

La función paypal\_remove\_subscription(paypal\_subscription\_id) ayudará a los clientes a cancelar sus suscripciones a tus servicios.

Parámetros:

| Parámetros de la función | Descripción                                                                      |
| ------------------------ | -------------------------------------------------------------------------------- |
| paypal\_subscription\_id | el ID de la suscripción que se guarda en la variable del cliente al suscribirse. |

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

## Cómo procesar el resultado

{% hint style="info" %}
Después de un pago exitoso, se enviarán callbacks al bot, que te indicarán que el pago fue exitoso.
{% endhint %}

{% hint style="success" %}
En el sistema, ves los callbacks como mensajes del usuario, pero el propio usuario NO LOS VE: solo se muestran al operador.
{% endhint %}

{% hint style="danger" %}
Para procesar el callback en el bloque y enviar mensajes al usuario sobre el estado del pago, utiliza el tipo de comparación "Exact match".
{% endhint %}

{% hint style="warning" %}
Los callbacks pueden retrasarse, así que después de mostrar el enlace de pago al usuario, se recomienda enviar un mensaje como: “Después de realizar el pago, espera un mensaje de confirmación que indique que el pago fue exitoso.”
{% endhint %}

### Para pago directo

El callback de pago exitoso consiste en los primeros 10 caracteres del secreto y la firma con el estado. Por ejemplo: EHsWHYOoWV\_success

Ejemplo 1: reacción a un pago exitoso usando el bloque "Start condition":

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

Ejemplo 2: reacción a un pago exitoso usando el bloque "Start condition":

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

{% hint style="info" %}
Si no quieres sacar al usuario del flujo principal del chatbot, utiliza el bloque “No-state with condition” — los usuarios no pueden ser redirigidos directamente a este bloque, así que después de un pago exitoso seguirán en el embudo principal, al mismo tiempo que recibirán una notificación sobre el pago exitoso.

Pero si sí quieres continuar el embudo basándote en el evento de pago exitoso, usa el bloque “Start condition”. En este caso, después de completar el bloque de pago, el usuario será redirigido al bloque “Start condition”, desde el cual podrás seguir construyendo tu embudo.
{% endhint %}

{% hint style="info" %}
Más información sobre los bloques condicionales se proporciona en el artículo del mismo nombre. [блоках с условием рассказали](broken://pages/9c7b0563335b0dd52b155c8996e05cb9a6b2c0c9) ссылка
{% endhint %}

Tras un pago exitoso, la variable paypal\_payment\_completed se establece en True.

Después de completar el pago, se añade al cliente la variable paypal\_callback\_data, que contiene datos actualizados del sistema de pago sobre el estado de la transacción. Puedes extraer los datos necesarios del diccionario recibido usando el método get.

{% hint style="danger" %}
Para realizar un pago repetido, debes restablecer la variable payment\_sum, la variable con el enlace generado previamente y, a continuación, reasignar la variable payment\_sum o llamar a la función para obtener un nuevo enlace.
{% endhint %}

### Para pagos de suscripción

{% hint style="danger" %}
La función de configuración de callbacks para operaciones relacionadas con suscripciones se añadió el 09/01/2024. Para que los callbacks de esta categoría funcionen correctamente, debes desactivar y volver a conectar la integración del sistema de pago Paypal en tu proyecto.
{% endhint %}

Al realizar un pago de suscripción, el bot recibirá uno de los siguientes mensajes:

* sobre la activación de la suscripción. Por ejemplo, subscription\_I-PTV5H4MRC1H3\_activated;
* Notificación de un pago recurrente de suscripción exitoso. Por ejemplo, subscription\_I-PTV5H4MRC1H3\_paid;
* o sobre un error en el pago de la suscripción. Por ejemplo,  subscription\_I-PTV5H4MRC1H3\_not\_paid;

En los ejemplos anteriores “I-PTV5H4MRC1H3” es el ID de la suscripción del cliente, al que se puede acceder usando la variable paypal\_subscription\_id.

El callback añadirá la variable paypal\_subscription\_callback\_data al cliente, que contiene datos actuales del sistema de pago sobre el estado de la transacción. Puedes extraer los datos necesarios del diccionario recibido usando el método get.

Ejemplo 1: reacción a la activación de la suscripción usando el bloque "Start condition":

<figure><img src="/files/0a90934d499b3444da452068941df9470e8d9bd0" alt=""><figcaption></figcaption></figure>

Ejemplo 1: Reacción a la activación de la suscripción usando el bloque "Not state with condition":"

<figure><img src="/files/71bb0faacbe7cd3c833d8ebe95810e189ef6ba52" 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/es/pago/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.
