# Prodamus (KZ)

## **Cómo conectar Prodamus**

Para conectar Prodamus, necesitará la URL del formulario de pago y la clave secreta.

La URL del formulario de pago se proporciona después del registro; su ejemplo es: `demo.payform.ru`.

La clave secreta se puede obtener en el panel personal, donde también debe indicar la URL a la que se enviarán las notificaciones (notification).

<div data-with-frame="true"><figure><img src="/files/81a352d92e28b4a30f6468ce41f1825914079d63" alt=""><figcaption><p>Clave secreta en la configuración del formulario de pago en el panel personal del sistema de pagos «Prodamus»</p></figcaption></figure></div>

[**Instrucciones detalladas sobre cómo hacerlo**](https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch)

Dirección para notificaciones:\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Esta dirección debe indicarse en dos lugares de la configuración.

En la página principal de configuración puede elegir el modo de funcionamiento del formulario de pago: modo demo sin pagos o modo de aceptación de pagos.

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

La dirección para notificaciones debe indicarse en dos lugares de la configuración del sistema de pagos: **«Configurar formulario»** pestaña — para pagos únicos (normales) y **«Suscripciones»** pestaña — para pagos por suscripción.

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

**Dirección para notificaciones:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Para configurar el trabajo con pagos por suscripción, **«Suscripciones»** vaya a la pestaña y especifique la dirección para notificaciones:

<https://chatter.mavibot.ai/prodamus\\_callback/result>

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

{% hint style="warning" %}
**¡Atención!** Después de introducir la URL, asegúrese de **«Guardar»** pulse el botón.
{% endhint %}

Para conectar Prodamus **«Adquirencia»** debe ir a la sección.

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

Después solo queda introducir los datos mencionados arriba en el formulario:

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

{% hint style="warning" %}
**¡Importante!** Al indicar la URL del formulario de pago, **https\://** no lo añada.
{% endhint %}

Así queda completada la conexión. Ahora veamos cómo usar esta funcionalidad.

## Cómo crear un enlace de pago

### Botón con la función «Pagar»

**Puede crear un enlace de pago en un botón con la función «Pagar».**

{% hint style="info" %}
[En este artículo se explica cómo crear un botón así.](/doc/es/chatbot/builder/botones/boton-de-pago.md)
{% endhint %}

Ahora veamos todos los parámetros posibles de este botón.

### Parámetros obligatorios del botón «Pagar» para Prodamus

**Para crear un enlace de pago, en la configuración del botón debe indicar los parámetros obligatorios:**\
«Importe», «Nombre del producto», así como el parámetro «Contenido pagado» — si no tiene su propia caja online y desea recibir un recibo de Prodamus.

Al pasar a la página de pedido, la información sobre el producto y su precio se muestra de antemano, y el cliente solo introduce sus datos de contacto.

Si en la configuración del botón se indica el Email y/o teléfono del usuario, en la página de pedido se mostrarán los datos de contacto del pagador y la información sobre el producto y su precio.

<div data-with-frame="true"><figure><img src="/files/8c1b0952f2f2c50b3a05a2c84fd73d8a0798ee0f" alt="" width="563"><figcaption><p>Ventana de configuración del botón</p></figcaption></figure></div>

**Campo «Texto»** — este texto se mostrará en el mensaje del botón con enlace de pago.

**Campo «Función»** — para crear un botón que dé un enlace de pago, elegimos la función «Pagar».

**Campo «Sistema de pago»** — los sistemas de pago conectados al proyecto se mostrarán en la lista.\
Si no hay ningún sistema de pago conectado al proyecto, este tipo de botón no estará disponible.

**Campo «Nombre del producto» (obligatorio)** — debe indicar el nombre exacto del producto. Por ejemplo: no «Teléfono», sino «Smartphone Xiaomi, modelo …».\
Nota: no se pueden usar comillas dobles en el nombre del producto; elimínelas o sustitúyalas por comillas simples.

**Campo «Importe» (obligatorio)** — indicamos el precio del producto.

**Menú «Información adicional»** — al hacer clic en este botón, se abren campos adicionales para crear un enlace:

* Descripción del pedido
* Descuento en rublos
* Variable del email del comprador
* Variable del número de teléfono del comprador
* Tiempo de validez del enlace
* ID del producto para suscripción (para crear pago recurrente)
* Contenido pagado

**Casilla «Notificar al hacer clic»** — puede marcarse para controlar el paso al enlace de pago. En este caso, al hacer clic en el botón, llegará un mensaje al diálogo del cliente en Sellbot indicando que se ha seguido el enlace.

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

A partir de este mensaje se puede configurar la lógica de funcionamiento posterior del bot.\
La mayoría de los sistemas de pago admiten cajas online en la nube, necesarias conforme a la ley 54-FZ.

Lea en el sitio del sistema de pago elegido las particularidades de la emisión de recibos para no meterse en problemas con la inspección fiscal.

Así se ve la página de pago que se abre al seguir el enlace del botón «Pagar»:

<div data-with-frame="true"><figure><img src="/files/958217051bbd67772616ea5c052d128ecbe71f53" alt="" width="375"><figcaption><p>Página de pago: en el botón solo están rellenados los parámetros básicos</p></figcaption></figure></div>

### Configuraciones adicionales para crear un enlace de pago

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

**Campo «Descripción del pedido»** — la información introducida en este campo se mostrará en la página de pago en el **Datos adicionales** campo.

**Campo «Descuento»** — aquí puede indicar el importe del descuento en rublos o en rublos y céntimos. Para indicar céntimos, use un punto como separador: 50.99\
En la página de pago, en el **Importe a pagar** campo se mostrará el descuento tenido en cuenta y el precio original del producto aparecerá tachado.

**Campo «Variable del email del comprador»** (opcional, si se indica el número de teléfono) — aquí se especifica el Email del usuario (cliente). También puede usar una variable donde se haya guardado el Email, por ejemplo: `#{email}`

**Campo «Variable del número de teléfono del comprador»** (opcional, si se indica el Email) — aquí puede usar una variable con el número de teléfono del comprador, formato: 79000000000, por ejemplo: `#{phone}`\
Debe haber Email y/o teléfono obligatoriamente.

**Campo «Tiempo de validez del enlace»** — la fecha puede indicarse en el formato `dd.mm.aaaa hh:mm` (por ejemplo, 25.01.2021 11:00) o puede establecer el plazo de expiración del enlace mediante una variable. Por ejemplo: `#{link_expired}`

**Campo «ID del producto para suscripción»** — indique el valor del ID del producto para crear un pago recurrente. Para crear una suscripción, es necesario crear un producto de suscripción.\
Instrucciones completas: [Creación y configuración de suscripciones Prodamus](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Si se indica el ID del producto para la suscripción, el importe del pago no se tiene en cuenta. La información del producto se toma de la ficha del producto en el panel de Prodamus.\
El número de teléfono indicado en el pago será necesario para gestionar la suscripción.\
Si se indica el ID del producto para la suscripción, en el callback de un pago exitoso se devolverá el ID de este producto.

**Campo «Contenido pagado»** (condicionalmente obligatorio) — estos datos son necesarios para la fiscalización del pago a través de Prodamus, si no tiene su propia caja online. En este campo se indica la descripción de la compra, el precio y el enlace al contenido.\
Por ejemplo: Curso «Tejido de trenzas», precio 3000 rublos, enlace a la página del curso: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### Botón con la función «Pagar»

Si indica el tiempo de validez del enlace, ocurrirá lo siguiente:\
Si el usuario solicita el enlace de pago dentro de su período de validez (es decir, cuando el tiempo del enlace aún no ha expirado) y se encuentra en el diálogo, no será posible realizar el pago, y se le mostrará el siguiente mensaje:

<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" %}
El período de validez del enlace debe ser posterior a la fecha actual; de lo contrario, el cliente no podrá pagar con este enlace.
{% endhint %}

**2. Cuando el usuario solicita el enlace, si ahora no está activo**\
En este caso, el botón simplemente no se mostrará. En las variables del cliente `"error_payment_button"` aparecerá la variable, cuyo valor será el siguiente:\
\&#xNAN;**"Error: el período de validez del enlace debe ser posterior a la fecha actual"**.

{% hint style="success" %}
Para que el usuario pueda pagar correctamente, se recomienda procesar este caso adicionalmente.
{% endhint %}

Cree el siguiente bloque condicional:\
Si llega el siguiente mensaje:\
`error_payment_button == "Error: el período de validez del enlace debe ser posterior a la fecha actual"`

Entonces muestre el siguiente texto:\
\&#xNAN;**"Lo sentimos, no llegó a pagar a tiempo; el enlace de pago dejó de ser válido"**.

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

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

### Variables del cliente creadas automáticamente al usar el botón con la función «Pagar»

Cuando el usuario recibe el bloque con el botón «Pagar», se crean automáticamente variables para el cliente:

**Variable de cliente de servicio `__payments`** — esta variable guarda el importe y el identificador del enlace creado, y es necesaria para identificar el webhook que llega desde el sistema de pago.

{% hint style="danger" %}
Variable de cliente de servicio `__payments`¡No se puede eliminar ni modificar!
{% endhint %}

**`error_payment_button` variable del cliente** se crea automáticamente si se produce un error al crear el botón.\
En esta variable se escribirá el texto del error o la respuesta de error recibida del sistema de pago.

{% hint style="warning" %}
Los valores de las variables serán relevantes al pasar al siguiente bloque.
{% endhint %}

## Cómo procesar el resultado

**Pago exitoso**\
Después de un pago exitoso, al bot le llega **un CALLBACK AUTOMÁTICO** que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, `_success` la palabra y el importe del pago.\
Para usarlo en la configuración del esquema, basta con copiarlo.

Por ejemplo: `ovg58keefc_success 44`donde:

* `ovg58keefc` — los primeros 10 caracteres de la clave secreta del sistema de pago
* `_success` — resultado del procesamiento de la solicitud (pago exitoso)
* `44` — importe del pago

{% hint style="info" %}
El usuario NO VE los **callbacks (mensajes) del sistema de pago**. Solo **se muestran en la pestaña** «Clientes»
{% endhint %}

**y son visibles para el operador.**\
**Ejemplo de uso:** Paso 1.\
Añadimos botones con la función «Pagar» al bloque «Botón con pagar».\
**Paso 2.** Indicamos el callback en el **campo de condición de enlace** que lleva desde este bloque al bloque «Pago exitoso».\
Del mismo modo, si en la condición del bloque «Condición inicial» se indica el callback de pago exitoso, el funcionamiento será análogo.

{% hint style="warning" %}
**Importante:** Elegir «Coincidencia exacta» o «Por palabras clave».
{% endhint %}

❗️Si decide comprobar el pago por la flecha indicada en una condición exacta, piense cuidadosamente en la lógica de su esquema. Si el cliente deja el bloque con la condición por callback, no habrá transición al bloque. Este método de comprobación es mejor usarlo solo si el cliente no cambia de posición en el embudo.

En los esquemas en los que el cliente se mueve entre bloques, resulta más conveniente usar la opción de indicar el callback en el **bloque «Condición inicial»** .<br>

<div data-with-frame="true"><figure><img src="/files/8c36d92669e11768b9c0f60e9b8d14565b900ecc" alt=""><figcaption><p>Callback sobre pago exitoso en el campo de condición del bloque.</p></figcaption></figure></div>

### Pago exitoso para productos con suscripción automática

Después de un pago exitoso, al bot le llega **un CALLBACK AUTOMÁTICO** que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, `_success` y del ID del producto de suscripción.

Por ejemplo: `214009eefc_success 618117`donde:

* `009eefc` — los primeros 10 caracteres de la clave secreta del sistema de pago
* `_success` — resultado del procesamiento de la solicitud (pago exitoso)
* `618117` — ID del producto de suscripción

<div data-with-frame="true"><figure><img src="/files/981c9e801245d9e0605497f7159784f51f6f3ec9" alt=""><figcaption><p>Ejemplo de callback de Prodamus para productos con suscripción automática</p></figcaption></figure></div>

**Pago erróneo**\
En caso de error al realizar el pago, al bot le llega **un CALLBACK AUTOMÁTICO** que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, `_fail` la palabra y el importe del pago.

Por ejemplo: `ovg58keefc_fail 44`donde:

* `ovg58keefc` — los primeros 10 caracteres de la clave secreta del sistema de pago
* `_fail` — resultado del procesamiento de la solicitud (el pago no se realizó o hubo un error)
* `44` — importe del pago

{% hint style="warning" %}
Esto depende del sistema de pago. No todos los sistemas de pago envían un callback sobre el error de pago.
{% endhint %}

Si el importe indicado en la configuración del botón difiere del importe pagado por el cliente, al bot le llega **un CALLBACK AUTOMÁTICO** . Constará de los primeros 10 caracteres de la clave secreta del sistema de pago, `_different_amounts` la palabra y el ID único del pago.

Por ejemplo: `ovg58keefc_different_amounts 123456`donde:

* `ovg58keefc` — los primeros 10 caracteres de la clave secreta del sistema de pago
* `_different_amounts` — resultado del procesamiento de la solicitud (el importe del pago difiere del importe del enlace)
* `123456` — ID único del pago

## En la calculadora `get_prodamus_payment_url` función

Para crear un enlace de pago **en el bloque Calculadora `get_prodamus_payment_url` función** se puede utilizar.\
**En el campo Calculadora** asignamos el valor de esta función a la variable: `get_prodamus_payment_url`.&#x20;

{% hint style="info" %}
El nombre de la variable lo eliges tú. En las capturas se muestran ejemplos de asignación de nombres a variables.
{% endhint %}

En esta variable se escribirá el enlace de pago. La variable se puede mostrar en un mensaje como enlace o colocarse en un botón con el texto «Pagar».

**Ejemplo de enlace de pago:** [https://payform.kz/7p3JR8/](https://payform.ru/7p3JR8/)

{% tabs %}
{% tab title="Calculadora" %}
Ejemplo 1:

<figure><img src="/files/75815863c4411c730f712ca71d6b84d915876d89" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Descripción de los 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 de la función:

<table><thead><tr><th width="253">Parámetro</th><th>Valor del parámetro</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><strong>Importe del pago</strong> — puede indicarse como entero o como número con punto decimal. Por ejemplo: <code>25</code> o <code>52.5</code>. (parámetro obligatorio)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nombre del producto</strong> (parámetro obligatorio)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Tiempo de validez del enlace de pago</strong> — <code>dd.mm.aaaa</code> en formato (por ejemplo, 25.01.2021).<br>Además, <strong>Calculadora</strong> en el campo se puede indicar así:<br><code>expired = current_date + 2</code> (el enlace será válido durante 2 días hasta las 00:00).</p><p>También es posible indicar la hora exacta: <code>dd.mm.aaaa hh:mm</code> (por ejemplo, 25.01.2021 12:23).</p><p>También pueden utilizarse variables estándar, por ejemplo, para establecer la validez del enlace durante 30 minutos:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Si desea omitir este parámetro, en su lugar puede pasar una comilla simple, comillas dobles o <code>None</code> valor.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Número de teléfono del comprador</strong> — opcional, si se indica el <code>customer_email</code> parámetro.<br>Si desea omitir este parámetro, puede pasar una comilla simple o comillas dobles en su lugar.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Correo electrónico del comprador</strong> — opcional, si se indica el <code>customer_phone</code> parámetro.<br>Si desea omitir este parámetro, puede pasar una comilla simple o comillas dobles en su lugar.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Importe del descuento</strong> — el parámetro puede indicarse como entero o como número con punto decimal: <code>25</code> o <code>63.5</code>.<br>Si desea omitir este parámetro, puede pasar una comilla simple o comillas dobles en su lugar.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Descripción del producto</strong> (si no se indica, se rellenará automáticamente con <code>'Pago de la factura order_id'</code> ).<br>Si desea omitir este parámetro, puede pasar una comilla simple o comillas dobles en su lugar.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Parámetros adicionales</strong>, parámetros que no están en esta función.<br>Los parámetros adicionales disponibles pueden consultarse en la documentación para trabajar con la API del sistema de pago: <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API</a></p><p>Por ejemplo:</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Si desea omitir este parámetro, puede pasar una comilla simple/doble o <code>None</code> valor.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>cadena de 50 a 4000 caracteres</strong> en formato <code>"descripción del pedido - precio - enlace al recurso adquirido"</code>.<br>Por ejemplo:<br><code>“Curso ‘Pesca de dorada’, precio 4999 rublos, enlace a la página del curso: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Este parámetro es obligatorio para fiscalizar el pago a través de Prodamus si no tiene su propia caja online.</p></td></tr></tbody></table>
{% endtab %}

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

products\_for\_receipt = "Curso ‘Pesca de dorada’, precio 4999 tenge, enlace a la página del curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, 'Curso ‘Pesca de dorada’', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'El mejor curso del mercado', extra\_params, products\_for\_receipt

En este ejemplo:

* `extra_params` — parámetros adicionales (por ejemplo, límite de pago).
* `products_for_receipt` — información del producto que se mostrará en el recibo.
* `get_prodamus_payment_url` se crea un enlace de pago mediante la función.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Si hay varias funciones para obtener enlaces en el bloque y se produce un error, el valor del error se escribirá en **`error_payment_func`** variable.

El error se escribe en la calculadora según la última función.
{% endhint %}

## `payment_sum` variable y creación de un enlace mediante parámetros adicionales

{% hint style="info" %}
**Atención:** `payment_sum` el valor se asigna a la variable desde la última variable, es decir, después de las variables no obligatorias: `payment_description`, `product_name` etc.
{% endhint %}

Para crear un enlace de pago **En el campo Calculadora `payment_sum` basta con establecer el valor de la variable**.\
Después de esto, automáticamente **`prodamus_pay_url`** aparecerá la variable.

**Ejemplo de enlace de pago:** `https://payform.ru/7p3JR8/`

Esta variable se puede mostrar en un mensaje como enlace o colocar en un botón con el texto «Pagar».

`payment_sum` Antes de declarar la variable, se pueden indicar estas variables opcionales:

| Parámetros de la función   | Descripción del parámetro                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Nombre del producto** (si no se indica, se completará automáticamente con "Pago de la factura order\_id") — en la captura de pantalla de abajo se muestra dónde se indica.                                                                                                                                                                                                                                                                   |
| **payment\_description**   | **Descripción del producto** (si no se indica, se rellenará automáticamente con `'Pago de la factura order_id'` se completará) — en la captura de pantalla de abajo se muestra dónde se indica.                                                                                                                                                                                                                                                |
| **discount\_value**        | **Importe del descuento** (por ejemplo, `discount_value = 25` o `discount_value = 50.25`)                                                                                                                                                                                                                                                                                                                                                      |
| **customer\_phone**        | **Número de teléfono del comprador** — opcional, si se indica otro parámetro.                                                                                                                                                                                                                                                                                                                                                                  |
| **customer\_email**        | Correo electrónico del comprador                                                                                                                                                                                                                                                                                                                                                                                                               |
| **link\_expired**          | <p><strong>Tiempo de validez del enlace de pago</strong> — <code>dd.mm.aaaa</code> en formato (por ejemplo, 25.01.2021).<br>Además, <strong>Calculadora</strong> en el campo se puede indicar así:<br><code>link\_expired = current\_date + 2</code> (el enlace será válido durante 2 días hasta las 00:00).</p>                                                                                                                               |
| **link\_expired**          | <p>Además, se puede indicar la hora exacta, formato: <code>dd.mm.aaaa hh:mm</code> (por ejemplo, <code>25.01.2021 12:23</code>).<br>También pueden utilizarse variables estándar, por ejemplo, para establecer la validez del enlace durante 30 minutos:<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                           |
| **currency**               | <p><strong>Moneda del pago</strong>, por defecto <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>Este parámetro debe indicarse en minúsculas.</p>                                                                                                                                                                      |
| **payment\_title**         | <p><strong>Título del pago</strong> (hasta 127 caracteres). Si no se indica, se completará automáticamente con el siguiente texto:<br>“<strong>Pago de la factura payment\_id</strong>” (<code>payment\_id</code> — identificador del pedido en MaviBot).</p>                                                                                                                                                                                  |
| **payment\_description**   | **Descripción breve del pago** (hasta 127 caracteres)                                                                                                                                                                                                                                                                                                                                                                                          |
| **locale**                 | <p><strong>Idioma de la página de pago</strong> — <code>en-US</code>, <code>fr-XC</code> y similares. El valor predeterminado es <code>ru-RU</code>.<br>La lista completa puede verse en este enlace</p>                                                                                                                                                                                                                                       |
| **products\_for\_receipt** | <p><strong>cadena de 50 a 4000 caracteres</strong> en formato <code>"descripción del pedido - precio - enlace al recurso adquirido"</code>.<br>Por ejemplo:<br><code>“Curso ‘Pesca de dorada’, precio 4999 tenge, enlace a la página del curso: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Este parámetro obligatorio es necesario para fiscalizar el pago a través de Prodamus si no tiene su propia caja online.</p> |
| **payment\_sum**           | (obligatorio) importe del pago                                                                                                                                                                                                                                                                                                                                                                                                                 |

<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` y `link_expired` las variables también son relevantes para las suscripciones.
{% endhint %}

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

**Ejemplo de implementación.**\
En el primer bloque establecemos el importe del pago:

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

En el siguiente paso mostramos el **`prodamus_pay_url`** enlace donde sea necesario:

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

**`prodamus_available_payment_methods`** variable **`payment_sum`** se define antes de declararla.\
Valores posibles:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>Pago con tarjeta emitida en la Federación Rusa</td></tr><tr><td><strong>ACkz</strong> </td><td>Pago con tarjeta de Kazajistán</td></tr><tr><td><strong>ACf</strong></td><td>Pago con tarjetas de países de la CEI, excepto la Federación Rusa</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Pago con tarjeta EUR de todos los países, excepto Rusia y Bielorrusia</td></tr><tr><td><strong>SBP</strong></td><td>Pago rápido, sin introducir los datos de la tarjeta. Para tarjetas rusas</td></tr><tr><td><strong>QW</strong> </td><td>Qiwi wallet </td></tr><tr><td><strong>PC</strong></td><td>Юmoney</td></tr><tr><td><strong>GP</strong></td><td>Terminal de pago</td></tr><tr><td><strong>sbol</strong></td><td>Sberbank Online </td></tr><tr><td><strong>invoice</strong> </td><td>Pago mediante factura</td></tr><tr><td><strong>installment</strong> </td><td>Pago a plazos a través de Prodamus</td></tr><tr><td><strong>installment_5_21</strong></td><td>Pago a plazos durante 3 meses a través de Prodamus</td></tr><tr><td><strong>installment_6_28</strong></td><td>Pago a plazos durante 6 meses a través de Prodamus</td></tr><tr><td><strong>installment_10_28</strong></td><td>Pago a plazos durante 10 meses a través de Prodamus</td></tr><tr><td><strong>installment_12_28</strong> </td><td>Pago a plazos durante 12 meses a través de Prodamus</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>Pago a plazos a 3 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Pago a plazos durante 4 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Pago a plazos durante 6 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Pago a plazos durante 10 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Pago a plazos durante 12 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Pago a plazos durante 24 meses a través de Tinkoff</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Pago a plazos durante 36 meses a través de Tinkoff</td></tr><tr><td><strong>credit</strong> </td><td>Crédito a través de Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>Pago a plazos durante 4 meses a través de “VsegdaDa”</strong> (no funciona con available_payment_methods)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>Pago a plazos durante 6 meses a través de “VsegdaDa”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>Pago a plazos durante 10 meses a través de “VsegdaDa”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>Pago a plazos durante 12 meses a través de “VsegdaDa”</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>Pago a plazos durante 24 meses a través de “VsegdaDa”</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>Pago a plazos durante 36 meses a través de “VsegdaDa”</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Pago a plazos durante 6 meses a través de Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Pago a plazos durante 10 meses a través de Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Pago a plazos durante 12 meses a través de Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Pago a plazos durante 24 meses a través de Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Pago a plazos durante 36 meses a través de Sberbank</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>Pago a plazos durante 6 meses a través de «OTP Bank»</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Pago a plazos durante 10 meses a través de «OTP Bank»</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Pago a plazos durante 12 meses a través de «OTP Bank»</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Pago a plazos durante 24 meses a través de «OTP Bank»</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Pago a plazos durante 36 meses a través de «OTP Bank»</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Pago a plazos durante 6 meses a través de «MTS Bank»</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Pago a plazos durante 10 meses a través de «MTS Bank»</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Pago a plazos durante 12 meses a través de «MTS Bank»</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Pago a plazos a 24 meses a través de «MTS Bank»</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Pago a plazos a 36 meses a través de «MTS Bank»</td></tr><tr><td><strong>monetaworld</strong></td><td>Tarjetas de bancos internacionales, excepto Rusia</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Pago a plazos a través de Sber</td></tr></tbody></table>

Valores múltiples **separados por barra vertical** se permite dividir.\
Por ejemplo:

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

`prodamus_currency` – este es otro parámetro adicional que permite mostrar el importe en una determinada moneda.

Monedas posibles:

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

De este modo, el importe indicado en el enlace estará en la moneda seleccionada.

**Callback `payment_callback` al recibir** `currency` y `currency_sum` es necesario prestar atención a los parámetros, donde se indican la moneda y el importe.

{% hint style="warning" %}
Si no se especifica, irá a una página sin métodos de pago.\
Los métodos de pago se pueden añadir con soporte. Los métodos añadidos se pueden ver en la configuración de la página o probando mediante un enlace de pago.
{% endhint %}

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

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

### Cómo procesar el resultado

**Pago exitoso**

**Importante:** después de un pago exitoso o fallido, llegarán callbacks al bot, con los que podrá determinar si el pago se realizó correctamente.

Los callbacks aparecen en el sistema como mensajes del usuario, pero el usuario no puede enviarlos. Tienen la forma de una combinación de clave secreta y estado. Por ejemplo:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

o

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Después de un pago exitoso **prodamus\_payment\_completed** la variable `True` toma automáticamente el valor.

**Nota:** Los callbacks llegan con algo de retraso, por eso es mejor enviar al usuario un mensaje después de mandar el enlace:

> “Después de realizar el pago, espere a que el pago se complete con éxito.”

***

**Estructura del callback**

Para los enlaces creados mediante el botón Pagar o la función del Calculador, después del pago llega automáticamente un callback al bot. Su contenido es:

```
<clave_secreta>_success <importe_del_pago>
```

Por ejemplo:

```
ovg58keefc_success
```

* `ovg58keefc` – clave secreta completa del sistema de pagos
* `_success` — resultado del procesamiento de la solicitud (pago exitoso)

***

**Uso práctico**

El pago exitoso se puede procesar mediante un bloque condicional y mostrar al usuario el mensaje correspondiente.

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

{% hint style="danger" %}
El tipo de comparación debe ser "Full match" / "Coincidencia exacta"

Para realizar un nuevo pago, es obligatorio **payment\_sum** poner a cero la variable y eliminar el enlace creado previamente. Solo entonces **payment\_sum** puede asignarse un nuevo valor a la variable y obtener el enlace actualizado.
{% endhint %}

#### Desactivación/reactivación de suscripción

Además, en el sistema Prodamus hay notificaciones sobre si una suscripción ha sido activada o suspendida:

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

**«La suscripción fue desactivada por el usuario»** – si la suscripción se detuvo manualmente (por ejemplo, al cancelar la suscripción).\
Este mensaje puede llegar antes de que termine el periodo actual ya pagado. La acción depende de su decisión: ignorar, poner en seguimiento o intentar recuperar al usuario.

**«La suscripción fue reactivada por el usuario»** – la suscripción se ha restaurado.\
Este mensaje puede llegar si el usuario restaura la suscripción antes de que termine el periodo actual ya pagado. La acción depende de su decisión: ignorar o quitar de la lista de seguimiento.

**«Desactivación de la suscripción»** – si la suscripción se detuvo después de varios pagos fallidos.

### Guardar valores del callback

Después de recibir la notificación de pago exitoso **payment\_callback** se escribe en la variable un callback de Prodamus que contiene todos los datos del pago. Estos datos pueden guardarse y utilizarse como usted necesite.

Ejemplo 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": "Producto",
  "payment_type": "Tarjeta plástica Visa, MasterCard, MIR",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Acceso a materiales de formación",
  "products[0][price]": "14.50",
  "products[0][quantity]": "1",
  "products[0][sum]": "14.50",
  "payment_status": "success",
  "payment_status_description": "Pago exitoso",
  "payment_init": "manual"
}
```

Al crear el enlace **product\_name** y **payment\_description** se pueden especificar variables. Entonces, cuando llegue el callback, se pueden obtener así:

```python
product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')
```

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

{% hint style="info" %}
Atención: **payment\_sum** a la variable **de las variables no obligatorias** que se encuentran después: **payment\_description**, **product\_name**.
{% endhint %}

El importe se puede obtener así:

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

### **Callbacks disponibles**

Además de los callbacks principales de pago exitoso, los mensajes que el usuario no ve en el chat son los siguientes:

<details>

<summary>callbacks</summary>

* El suscriptor desactivó la suscripción ([más detalles aquí](#deaktivaciya-reaktivaciya-podpiski))
* El suscriptor reactivó la suscripción ([más detalles aquí](#deaktivaciya-reaktivaciya-podpiski))
* Suscripción finalizada
* Pago no exitoso - nota con explicación (en la captura anterior)
* Notificación de próximo cargo - fecha y hora del próximo cargo
* Solicitud de pago a plazos con estado

</details>

<details>

<summary><strong>Ejemplos de callbacks en el diálogo con el cliente</strong></summary>

* **El suscriptor desactivó la suscripción**
* **El suscriptor reactivó la suscripción**
* **Suscripción finalizada**
* **Pago no exitoso - Fondos insuficientes.**
* **Pago no exitoso - La tarjeta ha caducado.**
* **Pago no exitoso - Se ha superado el límite de la tarjeta.**
* **Pago no exitoso - Tarjeta perdida**
* **Pago no exitoso - Error del sistema**&#x20;
* **Pago no exitoso - Operación rechazada. Póngase en contacto con el banco emisor de la tarjeta.**&#x20;
* **Pago no exitoso - Rechazo de la operación por el banco emisor.**
* **Pago no exitoso - Rechazo de la operación por el banco.**&#x20;
* **Notificación de próximo cargo - dd.mm.aaaa hh:mm**
* **Solicitud de pago a plazos aprobada**
* **Solicitud de pago a plazos cancelada**
* **Solicitud de pago a plazos rechazada**

</details>

Si lo desea, puede configurar el envío de cualquier mensaje al usuario. Por ejemplo, enviar una notificación en caso de fallo de un pago automático.

Las respuestas a los bloques de mensajes por un motivo específico de fallo de pago se pueden configurar de la siguiente manera:

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

Para enviar un mensaje a todos los pagos fallidos, independientemente del motivo, se puede configurar de la siguiente manera:

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

En todos los callbacks, si el texto contiene **«Pago fallido»** entonces se enviará al usuario un mensaje con el texto que usted haya definido.

## **Cómo realizar un pago mediante suscripción**

### **Cómo crear una suscripción**

Para crear una suscripción, primero es necesario **crear un producto de suscripción** .\
Instrucciones completas: [Cómo crear y configurar una suscripción](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Luego copiamos el **ID** del producto de suscripción. Por ejemplo, abajo se muestra de dónde obtenerlo:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Creación de un producto de suscripción"></div>

Para crear un enlace de pago de suscripción, **prodamus\_subscription** a la variable del producto de suscripción **ID** debe asignarse. Después, automáticamente **prodamus\_pay\_url** aparecerá la variable.

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

Traducción al español (estilo formal):

`prodamus_pay_url` la variable puede mostrarse en pantalla como enlace o colocarse en un botón con el texto «Pagar». Ejemplo de enlace: <https://payform.kz/7p3JR8/>

El procesamiento del resultado se realiza igual que en el pago único (como se explicó arriba).

Después de una suscripción exitosa, al usuario se le añade el **customer\_phone** variable introducida durante el pago. El número de teléfono es necesario para gestionar la suscripción.

Si **customer\_email** no se proporciona, para gestionar la suscripción **customer\_phone** es obligatorio.

### **`get_prodamus_subscription_url` cómo crear un enlace de suscripción con la función**

Veamos otra forma de crear un enlace de pago de suscripción para un producto.

1. En el panel de Prodamus se crea un producto de suscripción.\
   La guía completa puede verse en este enlace:\
   [Cómo crear y configurar una suscripción](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Luego copiamos el **ID** del producto de suscripción. Por ejemplo, abajo se muestra de dónde obtenerlo:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Creación de un producto de suscripción"></div>

Para obtener un enlace de pago de un producto por suscripción en el Calculador, indicamos la función&#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" %}
**Ejemplo 1:** Enlace de pago para un producto por suscripción

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

{% tab title="Descripción de los parámetros" %}
`link = get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

Parámetros de la función:

<table><thead><tr><th width="253">Parámetro</th><th>Valor del parámetro</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>ID del producto de suscripción</strong> – se puede copiar desde el panel de Prodamus (parámetro obligatorio).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nombre del producto</strong> (parámetro obligatorio).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Tiempo de validez del enlace de pago</strong> – en formato dd.mm.aaaa (por ejemplo, 25.01.2021).</p><p>También se puede indicar en el campo «Calculador»:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # el enlace será válido durante 2 días, hasta las 00:00
</code></pre><p><code>expired</code> el parámetro también puede indicarse con la hora exacta, formato: dd.mm.aaaa hh:mm (por ejemplo, 25.01.2021 12:23).</p><p>También se pueden usar variables estándar, por ejemplo, para establecer la validez del enlace en 30 minutos:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Si desea omitir este parámetro, en su lugar ponga comillas simples o dobles, o <code>None</code> valor.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Número de teléfono del pagador</strong> — opcional, si se indica el <code>customer_email</code> si se proporciona el parámetro.</p><p>Si desea omitir este parámetro, en su lugar ponga comillas simples o dobles.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>Correo electrónico del pagador</strong> — opcional, si se indica el <code>customer_phone</code> si se proporciona el parámetro.</p><p>Si desea omitir este parámetro, en su lugar ponga comillas simples o dobles.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Importe del descuento</strong> – el parámetro puede darse como entero o decimal: 25 o 63.5.</p><p>Si desea omitir este parámetro, en su lugar ponga comillas simples o dobles.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Descripción del producto</strong> – si no se especifica, por defecto <code>'Pago de la factura order_id'</code> se rellenará.</p><p>Si desea omitir este parámetro, en su lugar ponga comillas simples o dobles.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Parámetros adicionales</strong>, parámetros que no existen en esta función.<br>Los posibles parámetros adicionales pueden verse en la documentación API del sistema de pagos:<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Guía de Prodamus REST API</a></p><p><strong>Ejemplo:</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Si desea omitir este parámetro, en su lugar ponga comillas simples/dobles o <code>None</code> valor.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>cadena de 50 a 4000 caracteres</strong>, formato: <code>"descripción del pedido - precio - enlace al recurso adquirido"</code></p><p>Ejemplo:<br>Curso «Curso de pesca de besugo», precio 4999 tenge, enlace a la página del curso: <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Este parámetro <strong>es obligatorio</strong>, si no tiene su propia caja registradora en línea, y se necesita para fiscalizar los pagos a través de Prodamus.</p></td></tr></tbody></table>
{% endtab %}

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

products\_for\_receipt = "Curso ‘Curso de pesca de besugo’, precio de suscripción mensual 2000 tenge, enlace a la página del curso: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Curso ‘Curso de pesca de besugo’', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'El mejor curso del mercado', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si hay un error al obtener el enlace mediante varias funciones en un bloque, **el valor de error `error_payment_func` se escribirá en la variable** .

El error se escribe en la calculadora según la última función.
{% endhint %}

### **Cómo gestionar el estado de la suscripción**

Este método solo es para suscripciones reales; en el modo demo no hay vinculación de tarjeta.

Para gestionar la suscripción, obligatoriamente **`customer_phone`** o **`customer_email`** debe proporcionarse uno de los parámetros.

Para dar de baja al usuario de la suscripción, es necesario crear un bloque y llamar a la siguiente función:\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Ejemplo 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 del formulario de pago, obtenida de la configuración en el constructor
* `secret_key` – clave secreta obtenida de la configuración
* `id_subscription` – ID del producto de suscripción
* `customer_phone` – teléfono del propietario de la suscripción
* `switcher` – gestión de la suscripción: `0` – cancelar suscripción, `1` – reactivar suscripción
* `profile_id` – ID del perfil en Prodamus

**Nota:**\
Si llega el ID del perfil, se guarda en la variable **`profile_id`** .\
`profile_id` a la función **`customer_phone`** o **`customer_email`** en su lugar y cancelar la suscripción.

**Ejemplo:** configuración de bloques de suscripción

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

Tenga en cuenta que la función **status** devuelve, y puede guardarse y procesarse como usted quiera. Al cancelar o reactivar la suscripción con éxito, **status = ok** será.

### Función para gestionar la suscripción

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

subscription\_id – ID del producto de suscripción

switcher – gestión de la suscripción: 0 – cancelar suscripción, 1 – reactivar suscripción

customer\_phone – teléfono del propietario de la suscripción; no es obligatorio si se especifica customer\_email

customer\_email – correo electrónico del propietario de la suscripción; no es obligatorio si se especifica customer\_phone

profile\_id – ID del perfil en Prodamus

<div data-with-frame="true"><figure><img src="/files/9a2f6b749dc2eff9b76b0bed5e2a966ac94812a2" alt=""><figcaption><p>Ejemplo de uso de la función prodamus_subscription_switch_status</p></figcaption></figure></div>

Traducción al español (estilo formal):

**Ejemplo 1:** `customer_phone` parámetro proporcionado, `customer_email` omitido:

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

**Ejemplo 2:** `customer_email` parámetro proporcionado, `customer_phone` omitido:

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

{% hint style="success" %}
La función devuelve **`ok`** si todas las operaciones se completan correctamente, o devuelve la descripción del error en caso contrario.
{% endhint %}

## Gestión de descuentos en la suscripción

Esta función establece el importe del descuento para los siguientes pagos de la suscripción. El descuento **limitado o ilimitado** puede aplicarse según el número de pagos.

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

Parámetros:

* `subscription_id` – ID de la suscripción
* `discount` – número decimal con dos decimales tras el punto; el valor debe ser mayor que cero y no superar el coste base de la suscripción
* `customer_phone` – número de teléfono del cliente, formato: `+79999999999` (opcional, si `customer_email` la variable está presente; aparece después del primer pago)
* `num` – número de pagos a los que se aplicará el descuento (opcional; si no se especifica, el descuento se aplica a todos los pagos)
* `profile_id` – ID del perfil en Prodamus

Si la solicitud se ejecuta correctamente, la función `'ok'` devuelve; si ocurre un error, la función devuelve la descripción del error.

{% hint style="warning" %}
**¡El importe del descuento y el intervalo solo se reescriben si la función se vuelve a llamar con nuevos valores!**
{% endhint %}

**Ejemplos:**

**1. Dar un descuento de 1₽ a todos los siguientes pagos automáticos** (no se especifica el número de teléfono, ya que se toma automáticamente de la `customer_phone` variable; el importe del descuento, por defecto, se aplica a todo el periodo de la suscripción):

```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. Ejemplo de descuento de 2₽ para los siguientes 3 pagos** (el número de teléfono se proporciona con comillas vacías, ya que se toma automáticamente de la `customer_phone` variable):

```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. Ejemplo de descuento con decimal** (el separador es el punto, los valores se indican sin comillas), el número de teléfono puede darse mediante variable.

<div data-with-frame="true"><figure><img src="/files/1e0128dba6767fd0464432d38e7be39870073dd3" 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>

## **Cómo establecer la fecha del próximo pago de la suscripción**

Con este método se puede posponer la fecha del próximo pago de la suscripción. La fecha solo puede moverse **«al futuro»** desde la fecha de próximo pago actualmente establecida, lo que permite ampliar el periodo de participación en el club.

Por ejemplo, esto puede utilizarse como bono para los suscriptores.

Para ello es necesario usar la siguiente función:

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

Parámetros:

* `subscription_id` – identificador de la suscripción
* `date` – fecha en formato dd.mm.aaaa hh:mm o dd.mm.aaaa; si solo se proporciona dd.mm.aaaa, la hora será 00:00
* `customer_phone` – opcional; si no se especifica, `customer_phone` se toma de la variable; si no se encuentra, la función no funcionará
* `profile_id` – ID del perfil en Prodamus

### Cómo enviar parámetros a Prodamus

Para enviar los parámetros necesarios (por ejemplo, la fecha de inicio de la suscripción, desactivar el pago a plazos, etc.) al sistema Prodamus, añada el prefijo **`prodamus_`** al nombre de la variable.

Después, al crear el enlace de pago, los parámetros de esa variable se enviarán automáticamente al sistema de pagos.

## Cómo probar el pago

{% hint style="info" %}
¡Solo probamos el pago!
{% endhint %}

Para que no se cargue dinero de su cuenta al configurar la integración y los embudos de pago, **puede usar tarjetas de prueba**.

{% hint style="warning" %}
Primero cambie su página de pago al **modo DEMO** ⤵\
No olvide pulsar el botón «Guardar».
{% endhint %}

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

#### Para realizar un pago de prueba, puede usar cuentas de prueba.

**Tarjetas de prueba de Sberbank:**

**MIR**\
Número de tarjeta: 2202 2050 0001 2424\
Fecha de caducidad: 05/35\
Código de verificación en el reverso (CVV): 669

**MasterCard**\
Número de tarjeta: 5469 9801 0004 8525\
Fecha de caducidad: 05/26\
Código de verificación en el reverso (CVV): 041\
Código de verificación 3-D Secure: 111111

**Visa**\
Número de tarjeta: 4006 8009 0096 2514\
Fecha de caducidad: 05/26\
Código de verificación en el reverso (CVV): 941\
Código de verificación 3-D Secure: 111111

{% hint style="success" %}
❗️Al pagar con cuentas de prueba, todos los embudos e integraciones configurados **funcionan igual que con un pago normal**❗️
{% endhint %}

Formulario probado

{% hint style="danger" %}
Para aceptar pagos reales, el formulario **debe cambiarse al modo** de trabajo. Es decir, el interruptor del modo demo debe ponerse en **rojo claro** estado.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.mavibot.ai/doc/es/integrations/payment/prodamus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
