# Prodamus (RU)

{% hint style="success" %}
Disponible solo en el plan "Infobiz".
{% endhint %}

## Cómo conectar Prodamus

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

<mark style="color:verde;">**URL del formulario de pago**</mark> la obtiene después del registro, tiene <mark style="color:verde;">**este aspecto: demo.payform.ru**</mark>

La clave secreta se puede obtener en el área personal; allí mismo debe especificarse la URL para notificaciones.

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

Instrucciones detalladas de cómo hacerlo: <https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch>

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

Esta dirección debe especificarse en la configuración en dos lugares.

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

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

La dirección para notificaciones debe especificarse en la configuración del sistema de pagos en dos lugares: pestaña Configuración del formulario - para pagos normales y pestaña Suscripciones - para pagos por suscripción.&#x20;

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

Dirección para notificaciones: **`https://chatter.salebot.pro/prodamus_callback/result`**

Para configurar el trabajo con **pagos por suscripción**  vaya a la pestaña Suscripciones e indique 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 pulsar el botón «Guardar».
{% endhint %}

Para conectar Prodamus es necesario ir a la sección "Adquirencia"

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

Después solo hay que indicar en el formulario los datos mencionados arriba:

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

{% hint style="warning" %}
**¡IMPORTANTE!** la url del formulario de pago se indica SIN https\://&#x20;
{% endhint %}

Con esto finaliza la conexión. Ahora veamos cómo usar esta funcionalidad.

## Cómo generar un enlace de pago

{% hint style="success" %}
Se puede generar un enlace de pago en el bloque **UNA DE** las formas disponibles:

* [Botón con la función Pago ](#knopka-s-funkciei-oplata)o
* [Función get\_prodamus\_payment\_url en la Calculadora](#funkciya-get_prodamus_payment_url-v-kalkulyatore) o
* [Creación de un enlace usando la variable payment\_sum y parámetros adicionales](#sozdanie-ssylki-s-pomoshyu-peremennoi-payment_sum-i-dopolnitelnykh-parametrov) (versión obsoleta pero funcional)
  {% endhint %}

## Botón con la función Pago

{% hint style="info" %}
[El enlace de pago se puede crear en el botón con la función "Pago". Sobre cómo crear este botón se explica en este artículo](/doc/es/chatbot/builder/botones/boton-de-pago.md)
{% endhint %}

Veamos todos los parámetros posibles de este botón.&#x20;

### **Parámetros obligatorios del botón Pago para Prodamus**

Para generar un enlace de pago en la configuración del botón es necesario indicar <mark style="color:rojo;">**parámetros obligatorios**</mark> "**Importe**", "**Nombre del producto**", también el parámetro "**Contenido pagado**", si usted **no tiene su propia caja registradora online** y quiere recibir el comprobante de Prodamus.&#x20;

Al pasar a la página de pago ya aparecerán escritos los datos del producto y su precio; al cliente solo le quedará indicar sus datos de contacto.\
\
Si en la configuración del botón indica el email y/o teléfono del usuario, en la página de pago aparecerán los datos del pagador y la información del 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 botón con el enlace de pago en el mensaje

**campo Función.** Para crear un botón para generar un enlace de pago, elegimos la función Pago

**campo Sistema de pago.** En la lista se muestran los sistemas de pago conectados al proyecto

{% hint style="warning" %}
Si no hay sistemas de pago conectados al proyecto, este tipo de botones no estará disponible
{% endhint %}

**campo Nombre del producto (obligatorio).** En este campo debe indicar el nombre del producto. Cuanto más preciso sea el nombre, mejor. Por ejemplo: no "Teléfono", sino "Smartphone Xiaomi modelo ..."&#x20;

{% hint style="danger" %}
**NO SE PUEDE** usar **comillas dobles** en el nombre del producto: elimínelas o sustitúyalas por comillas simples.&#x20;
{% endhint %}

**campo Importe (obligatorio).**  En este campo indicamos el precio del producto.&#x20;

**menú Información adicional.** Al hacer clic en este botón se abrirán campos adicionales para generar el enlace

* Descripción del pedido
* Descuento en rublos
* Variable con el email del comprador
* Variable con el número de teléfono del comprador
* Tiempo de vida del enlace
* ID del producto para suscripción (para crear pagos automáticos)
* Contenido pagado&#x20;

**casilla Con notificación de clic.** Para rastrear el paso por el enlace de pago, puede marcar la casilla. En ese caso, al hacer clic en el botón llegará al diálogo con el cliente en Salebot una notificación de que se ha realizado el paso por el enlace

<div data-with-frame="true"><figure><img src="/files/499f52b9b552644b0db6b37e821ece6241f14ba5" alt="" width="431"><figcaption><p>Callback después de que el cliente acceda al enlace</p></figcaption></figure></div>

Con esta notificación se puede configurar la lógica posterior del bot.&#x20;

{% hint style="info" %}
Muchos sistemas de pago admiten cajas registradoras online en la nube; son necesarias según la ley 54-FZ.\
Lea las características de emisión de comprobantes en el sitio web del sistema de pago elegido para no encontrarse en una situación incómoda con la inspección fiscal.
{% endhint %}

Y así es como se ve la página de pago que se abre al seguir el enlace del botón Pago:

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

### Parámetros adicionales para generar el 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 indicada en este campo se mostrará en la página de pago en el campo Datos adicionales

**campo Descuento.** En este campo puede indicar el importe del descuento en rublos o rublos con kopeks. Para indicar una cantidad con kopeks usamos un punto como separador: 50.99\
En la página de pago, en el campo Importe a pagar, se mostrará el importe con el descuento aplicado, y el precio original del producto aparecerá tachado.&#x20;

**Campo Variable con el email del comprador** (opcional, si se ha pasado el Número de teléfono) En este campo se indica el email del usuario (cliente). Puede indicar la variable en la que se almacena el email del usuario.&#x20;

Por ejemplo, #{email}

**Campo Variable con el número de teléfono del comprador** (opcional, si se ha pasado el Email). En este campo puede indicar la variable en la que está guardado el número de teléfono del comprador en formato 79000000000\
Por ejemplo, #{phone}

{% hint style="danger" %}
Debe haber obligatoriamente un email y/o teléfono
{% endhint %}

**campo Tiempo de vida del enlace.** Se puede indicar una fecha en el formato dd.mm.aaaa hh:mm (por ejemplo 25.01.2021 11:00) o usar variables para asignar el plazo de caducidad del enlace. \
Ejemplo de uso de la variable: `#{link_expired}`

**campo ID del producto por suscripción.**  Para realizar un pago automático, pase el valor del ID del producto. Para crear una suscripción, hay que crear un producto de suscripción.&#x20;

Instrucciones detalladas de cómo crear un producto para suscripción: <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

{% hint style="danger" %}
Si se pasa el valor del ID del producto por suscripción, el importe del pago no se tendrá en cuenta. Los datos del producto se obtendrán de la ficha del producto en el área de Prodamus
{% endhint %}

El número de teléfono indicado al pagar será necesario para gestionar la suscripción.

{% hint style="warning" %}
Si se pasa **ID del producto por suscripción**", en el callback, al realizarse correctamente el pago, se transmitirá el ID de este producto
{% endhint %}

**Campo Contenido pagado** (condicionalmente obligatorio). Los datos son necesarios para la fiscalización del pago por Prodamus, si usted no tiene su propia caja registradora online. En este campo debe indicar la descripción de la compra, su precio y el enlace al recurso con el contenido.&#x20;

*Por ejemplo*: *Curso ‘Trenzado de trenzas’, precio 3000 rublos, enlace a la página del curso:* [*https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911*](https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911).&#x20;

Estos datos son necesarios para su transmisión al Servicio Federal de Impuestos.

#### Botón con la función de pago

Si indica el tiempo de vida del enlace, entonces en caso de

1. Cuando el usuario solicitó el enlace de pago dentro de su período activo (es decir, su tiempo de vida aún no ha finalizado) y ya existe en el diálogo, no podrá pagar y recibirá una notificación como la siguiente:

<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=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
La fecha de caducidad del enlace debe ser posterior a la fecha actual; de lo contrario, el cliente tampoco podrá pagar con ese enlace.&#x20;
{% endhint %}

2\. Cuando el usuario solicita el enlace y este ya no está activo\
En ese caso, el botón simplemente no aparecerá. Y en las variables del cliente aparecerá la variable "error\_payment\_button", que contiene el siguiente valor: "Error: la fecha de caducidad del enlace debe ser posterior a la fecha actual".

{% hint style="success" %}
Para que el usuario pueda pagar correctamente, es recomendable procesar este caso adicionalmente.&#x20;
{% endhint %}

¿Cómo hacerlo?

Cree un bloque con una condición en la que indique que, si llega una notificación de este tipo, error\_payment\_button == "Error: la fecha de caducidad del enlace debe ser posterior a la fecha actual"&#x20;

Con la salida del texto: "Lo sentimos, no llegó a tiempo y el enlace de pago ya no es válido":

<div data-with-frame="true"><figure><img src="/files/2a5305a21bc7762b5a893dbbb44c76e3228a77e4" alt=""><figcaption><p>Diálogo en la sección "Clientes"</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/c840fcbb61e587568c375aeeff7e4ba383bf0851" alt=""><figcaption><p>Configuración del bloque "Condición inicial"</p></figcaption></figure></div>

### Variables del cliente que se crearán automáticamente al usar el botón con la función Pago

En cuanto el usuario reciba el bloque con el botón "Pago", se crearán automáticamente las variables del cliente:

Variable de servicio del cliente **`__payments`** que almacena el importe y el identificador del enlace creado; es necesaria para identificar el hook del sistema de pago.

{% hint style="danger" %}
¡La variable de servicio del cliente \_\_payments NO SE PUEDE eliminar ni modificar!
{% endhint %}

Variable del cliente **`error_payment_button`** se crea si ocurrió un error al generar el botón.

En el valor de la variable error\_payment\_button se escribirá el texto del error o la respuesta del sistema de pago con error.

{% hint style="warning" %}
Los valores de las variables pasan a ser válidos al pasar al siguiente bloque&#x20;
{% endhint %}

### Cómo procesar el resultado

**Pago exitoso.**

Después de un pago exitoso en el bot <mark style="color:naranja;">**AUTOMÁTICAMENTE**</mark> llegará un CALLBACK que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra \_success y, tras un espacio, el importe del pago. \
\&#xNAN;*Para usarlo en la configuración del esquema basta con copiarlo.*&#x20;

Por ejemplo: `ovg58keefc_success 44`donde:&#x20;

ovg58keefc : 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" %}
Los callbacks (notificaciones) del sistema de pago el usuario NO los VE. Solo se muestran en la pestaña Clientes y son visibles para el operador.
{% endhint %}

Ejemplo de uso:\
Paso 1. En el bloque "con botón Pago" añadimos botones con la función Pago.&#x20;

Paso 2. En el campo Condición de conexión de este bloque al bloque "Pago exitoso" indicamos el callback. Funciona igual si se indica el callback de pago exitoso en el campo Condición del bloque "Condición inicial".

{% hint style="warning" %}
Importante: elegir el tipo de coincidencia Coincidencia exacta o Por presencia de palabras clave
{% endhint %}

❗️Si decide comprobar el pago precisamente en la flecha por condición, piense la lógica de su esquema. En caso de que el cliente salga del bloque con el paso por condición con callback, no habrá transición al bloque. Este método de comprobación solo tiene sentido usarlo cuando el cliente no cambia su posición en el embudo (posición en el esquema). \
En los esquemas en los que el cliente se mueve entre bloques, es mejor 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 auto-suscripción.**&#x20;

Después de un pago exitoso en el bot <mark style="color:naranja;">**AUTOMÁTICAMENTE**</mark> llegará un CALLBACK que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra \_success y <mark style="color:verde;">**tras un espacio, el ID del producto por suscripción**</mark>

Por ejemplo: `214009eefc_success 618117`donde:&#x20;

`009eefc` : 10 caracteres de la clave secreta del sistema de pago

\_success : resultado del procesamiento de la solicitud (pago exitoso)

`618117`: ID del producto por 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 con error**

<mark style="color:azul;">**En caso de error al realizar el pago**</mark> al bot <mark style="color:naranja;">**AUTOMÁTICAMENTE**</mark> llegará un CALLBACK que consta de 10 caracteres de la clave secreta del sistema de pago, la palabra \_fail y, tras un espacio, el importe del pago

Por ejemplo, `ovg58keefc_fail 44` , donde

`ovg58keefc` : 10 caracteres de la clave secreta del sistema de pago

`_fail` : resultado del procesamiento de la solicitud - el pago no se realizó o fue con error.&#x20;

`44` : importe del pago

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

Si el importe indicado en la configuración del botón <mark style="color:azul;">**difiere del importe que el cliente pagó**</mark>, entonces <mark style="color:naranja;">**AUTOMÁTICAMENTE**</mark> llegará un CALLBACK que consta de 10 caracteres de la clave secreta del sistema de pago, la palabra \_different\_amounts y, tras un espacio, el ID único del pago

Por ejemplo: `ovg58keefc_different_amounts 123456` donde:&#x20;

`ovg58keefc` : 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

## Función get\_prodamus\_payment\_url en la Calculadora

Para generar un enlace de pago puede usar la función `get_prodamus_payment_url` en el bloque Calculadora.

En el campo Calculadora asignaremos a la variable el valor de la función `get_prodamus_payment_url`&#x20;

{% hint style="info" %}
El nombre de la variable lo define usted mismo. En las capturas se muestran ejemplos de nombres de variables.&#x20;
{% endhint %}

En esta variable se guardará el enlace de pago. La variable se puede mostrar como enlace en el mensaje o colocar en un botón con el texto "Pagar".&#x20;

**EJEMPLO de enlace de pago:** <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" %}
`su_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>importe a pagar. Puede pasar un valor entero o un número con punto. Por ejemplo 25 o 52.5  <mark style="color:verde;">(parámetro obligatorio)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nombre del producto. <mark style="color:verde;">(parámetro obligatorio)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>tiempo de vida del enlace de pago, en formato <strong>dd.mm.aaaa</strong> (por ejemplo 25.01.2021). También se puede en el campo "Calculadora<em>"</em> indicar: <em>expired = current_date + 2</em> (el enlace será válido 2 días hasta las 00:00).  <code>expired</code> también se puede indicar la fecha con hora exacta, separada por un espacio, en formato <strong>dd.mm.aaaa hh:mm</strong> (por ejemplo: <em>25.01.2021 12:23</em>). También se pueden usar variables estándar; por ejemplo, asignemos al enlace un tiempo de validez de 30 minutos: </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Para omitir este parámetro, pase en su lugar un par de comillas simples o dobles, o el valor None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>número de teléfono del comprador, no es obligatorio si se ha pasado el parámetro <code>customer_email</code> Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email del comprador, no es obligatorio si se ha pasado el parámetro <code>customer_phone</code> Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>discount</code></strong></td><td>importe del descuento. Pasamos el parámetro como número o número con punto: 25 o 63.5   Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>description</code></strong></td><td>descripción del producto (si no se indica, se completa con 'Pago de la factura order_id') Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p>parámetros adicionales que no existen en esta función.<br>Los parámetros adicionales posibles se pueden ver en el enlace de la documentación del trabajo con la API del sistema de pago <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Ejemplo: extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}<br></p><p><em>Para omitir este parámetro, pase en su lugar un par de comillas simples / un par de comillas dobles o el valor None.</em></p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>Cadena de 50 a 4000 caracteres en formato</strong> "descripción del pedido - precio - enlace al recurso adquirido". </p><p>Por ejemplo:</p><p>“Curso ‘Pesca de besugo’, precio 4999 rublos, enlace a la página del curso: https://www.lovilescha.ru/courses/poimai_kilogram/". <strong>Obligatorio</strong>si no tiene su propia caja registradora online, para la fiscalización de pagos a través de Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Ejemplo de código para copiar" %}
**extra\_params** = {<mark style="color:rojo;">"payments\_limit"</mark>: <mark style="color:rojo;">"3"</mark>}&#x20;

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

**link\_prodamus\_url** = get\_prodamus\_payment\_url(<mark style="color:azul;">4999</mark>, <mark style="color:rojo;">'Curso ‘Pesca de besugo’'</mark>, <mark style="color:rojo;">'27.03.2023 17:00', '79167777771'</mark>, <mark style="color:rojo;">'<mail@mail.com>'</mark>, <mark style="color:azul;">20</mark>, <mark style="color:rojo;">'El mejor curso del mercado'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si en el bloque hay varias funciones para obtener el enlace y se comete un error, el valor del error se guardará en la variable  **`error_payment_func`**

\
El error se guardará en la última función en la Calculadora
{% endhint %}

## Creación de un enlace usando la variable payment\_sum y parámetros adicionales

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

Para generar un enlace de pago, basta con establecer en el campo Calculadora el valor de la variable **payment\_sum.** Inmediatamente después aparecerá la variable **prodamus\_pay\_url**.&#x20;

**EJEMPLO de enlace de pago:**: <https://payform.ru/7p3JR8/>

Esta variable se puede mostrar como enlace en el mensaje o colocar en un botón con el texto "Pagar".&#x20;

Antes de declarar la variable **payment\_sum** también se pueden indicar las siguientes variables opcionales:&#x20;

| Parámetros de la función   | Descripción del parámetro                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **product\_name**          | nombre del producto (si no se indica, se completa con 'Pago de la factura order\_id') - en la captura de abajo se muestra dónde aparece                                                                                                                                                                                                                                                                                                                                  |
| **payment\_description**   | descripción del producto (si no se indica, se completa con 'Pago de la factura order\_id', captura abajo) - en la captura de abajo se muestra dónde aparece                                                                                                                                                                                                                                                                                                              |
| **discount\_value**        | importe del descuento (por ejemplo discount\_value = 25 o discount\_value = 50.25)                                                                                                                                                                                                                                                                                                                                                                                       |
| **customer\_phone**        | número de teléfono del comprador, no es obligatorio si se ha pasado el parámetro                                                                                                                                                                                                                                                                                                                                                                                         |
| **customer\_email**        | email del comprador                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **link\_expired**          | tiempo de vida del enlace de pago, en formato **dd.mm.aaaa** (por ejemplo 25.01.2021). También se puede en el campo "*Calculadora"* indicar: *link\_expired = current\_date + 2* (el enlace será válido 2 días hasta las 00:00)                                                                                                                                                                                                                                          |
| **link\_expired**          | <p>también se puede indicar la fecha con hora exacta, separada por un espacio, en formato <strong>dd.mm.aaaa hh:mm</strong> (por ejemplo: <em>25.01.2021 12:23</em>). También se pueden usar variables estándar; por ejemplo, asignemos al enlace un tiempo de validez de 30 minutos: </p><p>time = current\_time + 30<br>link\_expired = "#{current\_date} #{time}"</p>                                                                                                 |
| **currency**               | <p>moneda del pago, por defecto "rub". <br>Lista completa de argumentos: </p><p>rub</p><p>usd</p><p>eur</p><p>kzt<br>Este parámetro debe pasarse en minúsculas.</p>                                                                                                                                                                                                                                                                                                      |
| **payment\_title**         | título del pago (hasta 127 caracteres). Si no se indica, se completa con el texto: “Pago de la factura payment\_id” (payment\_id - identificador del pedido en Salebot)                                                                                                                                                                                                                                                                                                  |
| **payment\_description**   | descripción breve del pago (hasta 127 caracteres)                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **locale**                 | idioma de la página de pago, se indica como en-US, fr-XC, etc. Por defecto - ‘ru-Ru’. La lista completa está disponible en el enlace <https://developer.paypal.com/api/rest/reference/locale-codes/>                                                                                                                                                                                                                                                                     |
| **products\_for\_receipt** | <p><strong>Cadena de 50 a 4000 caracteres en formato</strong> "descripción del pedido - precio - enlace al recurso adquirido". </p><p>Por ejemplo:</p><p>“Curso ‘Pesca de besugo’, precio 4999 rublos, enlace a la página del curso: <https://www.lovilescha.ru/courses/poimai_kilogram/>". </p><p><mark style="color:rojo;"><strong>Obligatorio</strong></mark>si no tiene su propia caja registradora online, para la fiscalización de pagos a través de Prodamus.</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=""></div>

{% hint style="success" %}
Variables **discount\_value**, **customer\_phone**, **customer\_email** y **link\_expired** también son válidas para 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 fijamos el importe del pago:

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

Luego mostramos en el lugar necesario la url, enlace prodamus\_pay\_url:

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

**prodamus\_available\_payment\_methods** se declara antes de declarar payment\_sum.

Valores posibles: &#x20;

<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 RF </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 RF</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Pago con tarjeta EUR de todos los países, excepto RF y RB </td></tr><tr><td><strong>SBP</strong></td><td>Pago rápido, sin introducir los datos de la tarjeta. Para tarjetas de RF </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 <strong>invoice</strong> - Pago por factura <strong>installment</strong> - A plazos de Prodamus </td></tr><tr><td><strong>installment_5_21</strong></td><td>A plazos de Prodamus a 3 meses </td></tr><tr><td><strong>installment_6_28</strong></td><td>A plazos de Prodamus a 6 meses </td></tr><tr><td><strong>installment_10_28</strong></td><td>A plazos de Prodamus a 10 meses </td></tr><tr><td><strong>installment_12_28</strong> </td><td>A plazos de Prodamus a 12 meses <strong>installment_0_0_3</strong> - Financiación de Tinkoff a 3 meses</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Financiación de Tinkoff a 4 meses </td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Financiación de Tinkoff a 6 meses </td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Financiación de Tinkoff a 10 meses</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Financiación de Tinkoff a 12 meses</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Financiación de Tinkoff a 24 meses</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Financiación de Tinkoff a 36 meses </td></tr><tr><td><strong>credit</strong> </td><td>Crédito de Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td>A plazos de VsegdaDa a 4 meses (no funciona con available_payment_methods) </td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td>A plazos de VsegdaDa a 6 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td>A plazos de VsegdaDa a 10 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td>A plazos de VsegdaDa a 12 meses sin sobreprecio</td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td>A plazos de VsegdaDa a 24 meses</td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td>A plazos de VsegdaDa a 36 meses</td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>A plazos de SberBank a 6 meses </td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>A plazos de SberBank a 10 meses</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>A plazos de SberBank a 12 meses</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>A plazos de SberBank a 24 meses</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>A plazos de SberBank a 36 meses</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>A plazos del Banco OTP a 6 meses</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>A plazos del Banco OTP a 10 meses</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>A plazos del Banco OTP a 12 meses</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>A plazos del Banco OTP a 24 meses</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>A plazos del Banco OTP a 36 meses</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>A plazos del Banco MTS a 6 meses</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>A plazos del Banco MTS a 10 meses</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>A plazos del Banco MTS a 12 meses</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>A plazos del Banco MTS a 24 meses</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>A plazos del Banco MTS a 36 meses</td></tr><tr><td><strong>monetaworld</strong></td><td>Tarjetas de bancos del mundo, excepto RF </td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>A plazos de Sber</td></tr></tbody></table>

Se permite pasar varios valores, separándolos con una barra vertical. \
Por ejemplo: prodamus\_available\_payment\_methods = "AC|PC|QW"

**prodamus\_currency** - otro parámetro adicional para pasar un importe en una divisa determinada.\
Valores posibles de la divisa: \
**kzt** - para tenge \
**eur** - para euro \
**usd** - para dólar

Entonces, el importe indicado en el enlace estará en la divisa especificada.

Al recibir el callback **payment\_callback** hay que fijarse en el parámetro **currency** y **currency\_sum,** en el que habrá la divisa y el importe en esa divisa.

{% hint style="warning" %} <mark style="color:rojo;">**¡Importante!**</mark> Compruebe si en su página tiene el método de pago en la divisa necesaria, ya que si no está, se pasará a la página sin métodos de pago.\
Los métodos se conectan a través del soporte. Puede ver los activados en la configuración de la página o generando un enlace de pago
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/b0c861ba37ebe9e212954572571d847408234a20" alt=""><figcaption><p>Configuración de la página de pago del sistema de pagos "Prodamus"</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/690201c7f46ae6da1317e2e8ecd0d4dffbf71e13" alt=""><figcaption><p>Opciones de pago que están activadas para su página</p></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á entender que el pago se realizó correctamente. Estos callbacks en el sistema se ven como mensajes del usuario; para que el usuario no pueda enviarlos, consisten en la clave secreta y un sufijo con el estado, por ejemplo: 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_success** o 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_fail**. También después de un pago exitoso la variable **prodamus\_payment\_completed** se establece en **True**.

{% hint style="warning" %}
Atención. Los callbacks llegan con retraso, así que después de mostrar el enlace de pago al usuario recomendamos enviar un mensaje como: “Después del pago, espere el mensaje de finalización exitosa del pago”
{% endhint %}

{% hint style="warning" %}
¡IMPORTANTE!\
Para los enlaces creados con el botón con la función Pago o con la función en la Calculadora, después del pago al bot <mark style="color:naranja;">**AUTOMÁTICAMENTE**</mark> llegará un CALLBACK que consta de los caracteres de la clave secreta del sistema de pago, la palabra \_success y, tras un espacio, el importe del pago. \
\&#xNAN;*Para usarlo en la configuración del esquema basta con copiarlo.*&#x20;

Por ejemplo: `ovg58keefc_success`donde:&#x20;

ovg58keefc : clave secreta **completa**

\_success : resultado del procesamiento de la solicitud (pago exitoso)
{% endhint %}

Por ejemplo, puede procesar el pago exitoso mediante un bloque con condición y mostrar el mensaje correspondiente al usuario:

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

{% hint style="danger" %}
El tipo de comparación debe ser "**Coincidencia exacta**"
{% endhint %}

{% hint style="warning" %}
Para realizar un pago repetido es obligatorio poner a cero payment\_sum, el enlace generado previamente y solo después reasignar la variable payment\_sum para obtener un enlace nuevo&#x20;
{% endhint %}

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

Además, en Prodamus existen notificaciones sobre la activación/desactivación de la suscripción:

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

1. "El suscriptor desactivó la suscripción" - si la suscripción se cancela manualmente (por ejemplo, se dio de baja de la suscripción).

Puede llegar antes de que termine el período pagado actual. Implica una acción a su discreción: ignorarla o ponerla en observación, intentar recuperar al suscriptor.

2. "El suscriptor reactivó la suscripción" - restauración de la suscripción.&#x20;

Puede llegar si el suscriptor reactivó la suscripción antes de que termine el período pagado actual. Implica una acción a su discreción: ignorarla o eliminarla de la lista de seguimiento para recuperación.

3. "Desactivación de la suscripción" - si la suscripción se desactiva tras varios cobros fallidos

### **Cómo guardar los valores del callback**

Después de recibir la notificación de pago exitoso, en la solicitud del cliente (variable payment\_callback) se escribirá el callback de Prodamus, con todos los datos del pago recibido. De él se pueden guardar los datos necesarios y usarlos a su discreción. Ejemplo de callback:

`{"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": "Aquí descripción del 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 generar el enlace puede indicar variables **product\_name** y **payment\_description**. Entonces, al recibir el callback, se podrán extraer así&#x20;

`product = get(payment_callback,'products[0][name]')`&#x20;

`description = get(payment_callback,'customer_extra')`

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

{% hint style="info" %}
Tenga en cuenta: a la variable **payment\_sum** se le asigna el valor del último, después de las variables opcionales **payment\_description, product\_name**
{% endhint %}

La suma se puede obtener así\
`summa = get(payment_callback,'sum')`

### Qué callbacks están disponibles

Además de los callbacks principales de pago exitoso, en el chat con el usuario se muestra un mensaje que el usuario no ve, con los siguientes textos:

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

Ejemplos de callbacks en el diálogo con el cliente:&#x20;

* **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**

Puede leer más sobre la descripción de los errores aquí:

{% embed url="<https://help.prodamus.ru/payform/integracii/tekhnicheskaya-dokumentaciya-po-avtoplatezham/kody-oshibok>" %}
Prodamus: códigos de error
{% endembed %}

Opcionalmente, se puede configurar el envío al usuario de algún mensaje. Por ejemplo, enviaremos un mensaje indicando que el cobro automático no se pudo realizar.\
\
Para la notificación de **pago no exitoso con una causa concreta**, se puede configurar un bloque con una respuesta, por ejemplo, así:

<div data-with-frame="true"><figure><img src="/files/9a1733f1cf70eb3d61d0798a6341622f1543a751" alt=""><figcaption><p>ejemplo de bloque para notificaciones de Pago no exitoso con una causa concreta</p></figcaption></figure></div>

Para enviar un mensaje **a todos los cobros fallidos, independientemente de la causa**, se puede configurar del siguiente modo:

<div data-with-frame="true"><figure><img src="/files/6c1f5082e4ecb9d6a6c5793cf12a7e69d588c71d" alt=""><figcaption><p>ejemplo de bloque para notificaciones de Pago no exitoso con cualquier explicación de la causa</p></figcaption></figure></div>

Y para todos los callbacks en los que esté presente el texto **Pago no exitoso**al usuario le llegará un mensaje con el texto que usted haya indicado.

## Cómo crear pagos por suscripción

### Cómo crear una suscripción

Para crear una suscripción, hay que crear un producto de suscripción. Instrucciones detalladas de cómo hacerlo: <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

A continuación copiamos el id del producto de suscripción; 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 generar un enlace de pago de suscripción, debe establecer el valor (id del producto de suscripción) de la variable **prodamus\_subscription**inmediatamente después aparecerá la variable **prodamus\_pay\_url**.&#x20;

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

La variable **prodamus\_pay\_url** se puede mostrar en pantalla como enlace o colocar en un botón con el texto "Pagar". El enlace tiene este aspecto: <https://payform.ru/7p3JR8/><br>

El procesamiento del resultado se realiza igual que en un pago único (leer arriba).

Después de una suscripción exitosa, se añadirá al usuario la variable customer\_phone con el número de teléfono introducido al pagar. El número de teléfono es necesario para gestionar la suscripción.<br>

{% hint style="warning" %}
customer\_phone es necesario para gestionar la suscripción si no se ha pasado customer\_email
{% endhint %}

### Cómo crear un enlace de suscripción con la función get\_prodamus\_subscription\_url

Veamos otra forma de generar un enlace de pago de un producto por suscripción.&#x20;

Creamos un producto de suscripción en el panel de Prodamus. Instrucciones detalladas de cómo hacerlo: <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

A continuación copiamos el id del producto de suscripción; 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 de 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 por suscripción</strong>. El ID se puede copiar en el panel de Prodamus  <mark style="color:verde;">(parámetro obligatorio)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nombre del producto. <mark style="color:verde;">(parámetro obligatorio)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>tiempo de vida del enlace de pago, en formato <strong>dd.mm.aaaa</strong> (por ejemplo 25.01.2021). También se puede en el campo "Calculadora<em>"</em> indicar: <em>expired = current_date + 2</em> (el enlace será válido 2 días hasta las 00:00).  <code>expired</code> también se puede indicar la fecha con hora exacta, separada por un espacio, en formato <strong>dd.mm.aaaa hh:mm</strong> (por ejemplo: <em>25.01.2021 12:23</em>). También se pueden usar variables estándar; por ejemplo, asignemos al enlace un tiempo de validez de 30 minutos: </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Para omitir este parámetro, pase en su lugar un par de comillas simples o dobles, o el valor None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>número de teléfono del comprador, no es obligatorio si se ha pasado el parámetro <code>customer_email</code> Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email del comprador, no es obligatorio si se ha pasado el parámetro <code>customer_phone</code> Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>discount</code></strong></td><td>importe del descuento. Pasamos el parámetro como número o número con punto: 25 o 63.5   Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>description</code></strong></td><td>descripción del producto (si no se indica, se completa con 'Pago de la factura order_id') Para omitir este parámetro, pase en su lugar comillas simples o dobles.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td>parámetros adicionales que no existen en esta función.<br>Los parámetros adicionales posibles se pueden ver en el enlace de la documentación del trabajo con la API del sistema de pago <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Ejemplo: <code>extra_params = {"payments_limit": "3"}</code><br><br><em>Para omitir este parámetro, pase en su lugar un par de comillas simples / un par de comillas dobles o el valor None.</em></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>Cadena de 50 a 4000 caracteres en formato</strong> "descripción del pedido - precio - enlace al recurso adquirido". </p><p>Por ejemplo:</p><p>“Curso ‘Pesca de besugo’, precio 4999 rublos, enlace a la página del curso: https://www.lovilescha.ru/courses/poimai_kilogram/". </p><p><strong>Obligatorio</strong>si no tiene su propia caja registradora online, para la fiscalización de pagos a través de Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Ejemplo de código para copiar" %}
**extra\_params** = {<mark style="color:rojo;">"payments\_limit"</mark>: <mark style="color:rojo;">"3"</mark>}&#x20;

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

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

{% hint style="warning" %}
Si en el bloque hay varias funciones para obtener el enlace y se comete un error, el valor del error se guardará en la variable  **`error_payment_func`**

\
El error se guardará en la última función en la Calculadora
{% endhint %}

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

{% hint style="info" %}
El método solo funciona con suscripciones reales; en modo demo no hay enlace con la tarjeta
{% endhint %}

{% hint style="warning" %}
Para gestionar la suscripción, debe pasarse uno de los parámetros obligatorios customer\_phone o customer\_email.
{% endhint %}

Para poder dar de baja al usuario de la suscripción, hay que crear un bloque y llamar a la función: **<https://store.salebot.pro/function/delete\\_subscription\\_prodamus>**

Con los parámetros:

**{**\
**"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 indicada en la configuración del constructor\
**secret\_key** - clave secreta de la configuración\
**id\_subscription** - id del producto de suscripción\
**customer\_phone** - teléfono del suscriptor\
**switcher** = 0 es detener la suscripción; si se pasa 1, la suscripción se activa de nuevo.\
**profile\_id** - ID del perfil en el sistema Prodamus

{% hint style="danger" %}
¡Atención!

Si llega el id del perfil, el valor se guardará en la variable profile\_id.

profile\_id puede pasarse a la función delete\_subscription\_prodamus en lugar de customer\_phone o customer\_email para cancelar la suscripción.
{% endhint %}

Ejemplo de configuración del bloque 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 devuelve status, que guardamos y podemos procesar a nuestra discreción; en caso de desactivación\activación exitosa **status** es igual a **ok**

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

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id)

&#x20;**id\_subscription** - id del producto de suscripción&#x20;

**switcher** = 0 es detener la suscripción; si se pasa 1, la suscripción se activa de nuevo.&#x20;

**customer\_phone** - teléfono del suscriptor - opcional, si se ha pasado customer\_email&#x20;

**customer\_email** - email del suscriptor - opcional, si se ha pasado customer\_phone

profile\_id - ID del perfil en el sistema 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>

Ejemplo: se ha pasado el parámetro **customer\_phone,** se omitió customer\_email\
`stat = prodamus_subscription_switch_status`(`'618117', '0', '75431312321')`

Ejemplo 2: se ha pasado el parámetro **customer\_email,** se omitió customer\_phone\
`stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')`

{% hint style="success" %}
La función devolverá ok si todo ha ido bien o la descripción del error
{% endhint %}

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

La función establece el importe del descuento para los pagos posteriores de la suscripción. El descuento puede establecerse para un número limitado o ilimitado de cobros.

**prodamus\_subscription\_discount(subscription\_id, discount, customer\_phone, num, profile\_id)**\
**donde:**\
**subscription\_id** - ID de la suscripción\
**discount** - número decimal con precisión de hasta dos cifras después de **la coma**, el valor debe ser mayor que cero y no superar el precio base de la suscripción\
**customer\_phone** - número de teléfono del cliente en formato: +79999999999 (parámetro opcional, si existe la variable customer\_email (aparece tras el primer pago, ver descripción arriba))\
**num** - cantidad de pagos a los que se aplicará el descuento (parámetro opcional; si no se pasa, la cantidad de pagos con descuento no está limitada)

profile\_id - ID del perfil en el sistema Prodamus\
\
**Si la solicitud se ejecuta correctamente, la función devolverá 'ok'; si la solicitud se ejecuta con error, la función devolverá su descripción.**

{% hint style="warning" %}
El importe del descuento y el intervalo se sobrescriben SOLO si la función se llama de nuevo con nuevos valores.
{% endhint %}

#### **Ejemplos:**

1\. Aplicación de un descuento en todos los pagos automáticos posteriores por 1 rublos (no se indica el número de teléfono, ya que se tomará automáticamente de la variable customer\_phone, y el número de cobros con descuento por defecto es durante todo el período de suscripción)&#x20;

r = prodamus\_subscription\_discount('624034', '1')

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/_4i_sKKn39tHVdnb47xgj8fxfP_x9UGMWLaierBnpup9LCZMdVT0G9AmIOa8S_uMrVXWQIH6rvZnujCYPGcphkYvwFbCXEh819tWIjGIM4mHvd3afSlPzhZfcWk6D1z1tyBwFrZV" alt="Ejemplo 1" width="563"></div>

2\. Aplicación de un descuento de 2 rublos para los siguientes 3 cobros (el número de teléfono se reemplaza por comillas vacías, ya que se tomará automáticamente de la variable customer\_phone)&#x20;

r = prodamus\_subscription\_discount('624034', '2', '', '3')

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/IgutVRIqTFbaof9A14qdQRLCB6oop4mSAIew5s3lz62Kb4YVHdHJEt6GuC7AACStDgRiR1d_XEG1k5Dj7c2M-VNtci16JbklMTEla8_RNWD7wBNeG649g0lnFiMZilhri3phwKr-" alt="Ejemplo 2" width="563"></div>

3\. Ejemplo de aplicación de un descuento en forma de número con parte fraccionaria hasta centésimas (separador punto), los datos numéricos se indican sin comillas, el número de teléfono se pasa mediante la 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="Ejemplo 3" width="563"></div>

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

Con este método se puede desplazar la fecha del próximo pago de la suscripción. La fecha solo se puede desplazar "hacia el futuro" respecto a la fecha actual establecida del próximo pago. De este modo se aumenta el tiempo de permanencia en el club.

{% hint style="success" %}
Por ejemplo, se puede usar como bono para los suscriptores.
{% endhint %}

Para ello hay que usar la función:

**prodamus\_subscription\_payment\_date(subscription\_id, date, customer\_phone, profile\_id)**&#x20;

donde:

**subscription\_id** - id de la suscripción \
**date** - fecha en formato dd.mm.aaaa hh:mm o dd.mm.aaaa, entonces la hora será 00:00\
**customer\_phone** - no es obligatorio; si no se pasa, se tomará de la variable customer\_phone; si allí tampoco se encuentra, no se ejecutará\
**profile\_id** - ID del perfil en el sistema Prodamus

## Cómo pasar parámetros a Prodamus

Para pasar a Prodamus los parámetros que necesites (por ejemplo, la fecha de inicio de la suscripción, desactivar el pago a plazos, etc.), añade prodamus\_ al principio del nombre de la variable&#x20;

Entonces, al generar el enlace de pago, estos parámetros se transmitirán al sistema de pago automáticamente.

## Cómo probar el pago

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

Para que no se cobren fondos de tu cuenta al probar la integración y la configuración de los embudos de pago, puedes usar tarjetas de prueba&#x20;

{% hint style="warning" %}
Primero cambia tu página de pago al modo DEMO ⤵

No olvides 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 puedes usar cuentas de prueba

Tarjetas de prueba de Sberbank:&#x20;

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

MasterCard\
Número de tarjeta 5469 9801 0004 8525\
Fecha de caducidad 05/26\
Código de verificación en el reverso 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 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 se activarán igual que en un pago normal!&#x20;
{% endhint %}

El formulario ha sido probado

{% hint style="danger" %}
Para recibir pagos con dinero real, es necesario poner el formulario en modo operativo. Es decir, mover el interruptor del modo demo a la posición para que se vuelva de color rojo pálido
{% 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/prodamus-ru.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.
