Cómo conectar Prodamus

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

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

La clave secreta se puede obtener en el panel de control, donde también debes especificar la URL para enviar notificaciones.

Instrucciones detalladas sobre cómo hacerlo

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

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

En la página principal de configuración, puedes seleccionar el modo de funcionamiento del formulario de pago: modo demo sin pagos o modo de recepción de pagos.

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

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

Para configurar el trabajo con pagos por suscripción, ve a la pestaña «Suscripciones» e indica la dirección para notificaciones:

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

¡Atención! Después de ingresar la URL, asegúrate de hacer clic en el botón «Guardar».

Para conectar Prodamus, debes ir a la sección «Adquirencia».

Luego, simplemente ingresa los datos mencionados anteriormente en el formulario:

¡Importante! Al especificar la URL del formulario de pago, no agregues https://.

La conexión está completa. Ahora veamos cómo usar esta funcionalidad.

Cómo crear un enlace de pago

Botón con la función «Pagar»

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

En este artículo se describe cómo crear dicho botón.

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 debes especificar los parámetros obligatorios:
«Monto», «Nombre del producto», así como el parámetro «Contenido pagado» — si no tienes tu propia caja registradora en línea y deseas recibir un recibo de Prodamus.

Al ir a la página de pedido, la información sobre el producto y su precio se mostrará previamente, y el cliente solo ingresará sus datos de contacto.

Si en la configuración del botón se especifican el Email y/o el 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.

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

Campo «Función» – para crear un botón que enlace al pago, seleccionamos la función «Pagar».

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

Campo «Nombre del producto» (obligatorio) – debes especificar 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ínalas o sustitúyelas por comillas simples.

Campo «Monto» (obligatorio) – indicamos el precio del producto.

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

  • Descripción del pedido
  • Descuento en rublos
  • Variable de Email del comprador
  • Variable de número de teléfono del comprador
  • Tiempo de validez del enlace
  • ID del producto para suscripción (para realizar pagos automáticos)
  • Contenido pagado

Casilla de verificación «Notificar al hacer clic» – se puede marcar para controlar el acceso al enlace de pago. En este caso, al hacer clic en el botón, llegará un mensaje al diálogo del cliente en Salebot, indicando que se ha accedido al enlace.

Según este mensaje, se puede configurar la lógica de trabajo posterior del bot.
Muchos sistemas de pago admiten cajas registradoras en línea en la nube, que son necesarias según los requisitos de la Ley Federal 54-FZ.

Lee las características del procesamiento de recibos en el sitio web del sistema de pago seleccionado para evitar situaciones problemáticas con la inspección fiscal.

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

Configuración adicional para crear un enlace de pago

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

Campo «Descuento» – aquí puedes indicar el monto del descuento en rublos o en rublos y kopeks. Para indicar kopeks, usa el punto como separador: 50.99
En la página de pago, en el campo Monto a pagar, se mostrará el descuento aplicado, y el precio base del producto estará tachado.

Campo «Variable de Email del comprador» (opcional, si se proporciona el número de teléfono) – aquí se indica el Email del usuario (cliente). También puedes usar una variable donde se almacena el Email, por ejemplo: #{email}

Campo «Variable de número de teléfono del comprador» (opcional, si se proporciona el Email) – aquí puedes usar una variable que contenga el número de teléfono del comprador, formato: 79000000000, por ejemplo: #{phone}
Es obligatorio tener Email y/o teléfono.

Campo «Tiempo de validez del enlace» – puedes especificar la fecha en formato dd.mm.aaaa hh:mm (por ejemplo, 25.01.2021 11:00) o establecer la fecha de caducidad del enlace mediante una variable. Por ejemplo: #{link_expired}

Campo «ID del producto para suscripción» – proporciona el valor del ID del producto para realizar pagos automáticos. Para crear una suscripción, es necesario crear un producto de suscripción.
Instrucciones completas: Crear y configurar suscripciones en Prodamus
Si se proporciona un ID de producto para suscripción, el monto del pago no se tendrá en cuenta. La información sobre el producto se toma de la tarjeta 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 proporciona un ID de producto para suscripción, en el callback de pago exitoso se proporcionará 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 tienes tu propia caja registradora en línea. En este campo se indica la descripción de la compra, el precio y un enlace al contenido.
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

Botón con la función «Pagar»

Si especificas 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, el tiempo del enlace aún no ha expirado) y está en el diálogo, no será posible realizar el pago, y se le mostrará el siguiente mensaje:

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.

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

Para que el usuario pueda realizar el pago correctamente, se recomienda procesar adicionalmente esta situación.

Crea un bloque condicional como este:
Si llega el siguiente mensaje:
error_payment_button == "Error: El período de validez del enlace debe ser posterior a la fecha actual"

Entonces muestra el siguiente texto:
&#xNAN;"Lo sentimos, no pudiste pagar a tiempo, el enlace de pago ha caducado".

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

En el momento en que el usuario recibe un bloque con el botón «Pagar», se crean automáticamente variables para el cliente:

Variable de servicio del cliente __payments – esta variable almacena el monto y el identificador del enlace creado, y es necesaria para identificar el hook que llega desde el sistema de pago.

¡La variable de servicio del cliente __payments no se puede eliminar ni modificar!

La variable de cliente error_payment_button se crea automáticamente si ocurre un error al crear el botón.
En esta variable se escribe el texto del error o la respuesta de error del sistema de pago.

Los valores de las variables se actualizan al pasar al siguiente bloque.

Cómo procesar el resultado

Pago exitoso
Después de un pago exitoso, el bot recibe AUTOMÁTICAMENTE UN CALLBACK, que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra _success y el monto del pago.
Para usarlo en la configuración del esquema, simplemente cópialo.

Por ejemplo: ovg58keefc_success 44, donde:

  • ovg58keefc – primeros 10 caracteres de la clave secreta del sistema de pago
  • _success – resultado del procesamiento de la solicitud (pago exitoso)
  • 44 – monto del pago

El usuario NO VE los callbacks (mensajes) que llegan del sistema de pago. Solo se muestran en la pestaña «Clientes» y son visibles para el operador.

Ejemplo de uso:
Paso 1. En el bloque «Con botón de pago», agregamos botones con la función «Pagar».
Paso 2. En el campo Condición de enlace que va desde este bloque al bloque «Pago exitoso», indicamos el callback.
Del mismo modo, si en la condición del bloque «Condición inicial» se indica el callback de pago exitoso, el trabajo se realiza de manera análoga.

Importante: Selecciona la opción «Coincidencia exacta» o «Por presencia de palabras clave».

❗️Si decides verificar el pago exactamente en la flecha indicada por la condición, piensa cuidadosamente en la lógica de tu esquema. Si el cliente abandona el bloque que pasa por la condición con el callback, no se producirá la transición al bloque. Es mejor usar este método de verificación solo si el cliente no cambia su posición en el embudo.

En esquemas donde el cliente se mueve entre bloques, es más efectivo usar la opción de indicar el callback en el bloque «Condición inicial».

Pago exitoso para productos con suscripción automática

Después de un pago exitoso, el bot recibe AUTOMÁTICAMENTE UN CALLBACK, que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra _success y el ID del producto de suscripción.

Por ejemplo: 214009eefc_success 618117, donde:

  • 009eefc – 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

Pago fallido
En caso de error al realizar el pago, el bot recibe AUTOMÁTICAMENTE UN CALLBACK, que consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra _fail y el monto del pago.

Por ejemplo: ovg58keefc_fail 44, donde:

  • ovg58keefc – primeros 10 caracteres de la clave secreta del sistema de pago
  • _fail – resultado del procesamiento de la solicitud (pago no realizado o error)
  • 44 – monto del pago

Esto depende del sistema de pago. No todos los sistemas de pago envían un callback sobre el error de pago.

Si el monto especificado en la configuración del botón difiere del monto pagado por el cliente, el bot recibe AUTOMÁTICAMENTE UN CALLBACK. Este consta de los primeros 10 caracteres de la clave secreta del sistema de pago, la palabra _different_amounts y el ID único del pago.

Мысалы: ovg58keefc_different_amounts 123456, мұндағы:

  • ovg58keefc – төлем жүйесінің құпия кілтінің алғашқы 10 символы
  • _different_amounts – сұраныстың өңделу нәтижесі (төлем сомасы сілтемедегі сомадан өзгеше)
  • 123456 – төлемнің бірегей ID-сі

Калькулятордағы get_prodamus_payment_url функциясы

Төлемге сілтеме жасау үшін Калькулятор блокындағы get_prodamus_payment_url функциясын пайдалануға болады.
Калькулятор өрісінде айнымалыға осы функцияның мәнін тағайындаймыз: get_prodamus_payment_url.

Айнымалының атын өзіңіз таңдайсыз. Скриншоттарда айнымалылардың атын беру мысалдары көрсетілген.

Осы айнымалыға төлемге арналған сілтеме жазылады. Айнымалыны хабарламада сілтеме ретінде көрсетуге немесе «Төлеу» мәтіні бар батырмаға орналастыруға болады.

Төлемге сілтеме мысалы: https://payform.kz/7p3JR8/

Калькулятор

Мысал 1:

Параметрлердің сипаттамасы

your_variable =`` get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)

Функция параметрлері:

Параметр Параметр мәні
amount Төлем сомасы – бүтін сан немесе нүктемен бөлінген сан ретінде берілуі мүмкін. Мысалы: 25 немесе 52.5. (міндетті параметр)
product_name Тауар атауы (міндетті параметр)
expired

Төлем сілтемесінің жарамдылық уақытыдд.мм.гггг форматында (мысалы, 25.01.2021).
Сонымен қатар, Калькулятор өрісінде былай көрсетуге болады:
expired = current_date + 2 (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).

Нақты уақытты көрсету де мүмкін: дд.мм.гггг чч:мм (мысалы, 25.01.2021 12:23).

Стандартты айнымалыларды да қолдануға болады, мысалы, сілтеменің жарамдылығын 30 минутқа орнату:

time = current_time + 30
expired = "#{current_date} #{time}"

Егер бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша, қос тырнақша немесе None мәнін беруге болады.

customer_phone Сатып алушының телефон нөмірі – міндетті емес, егер customer_email параметрі берілсе.
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
customer_email Сатып алушының Email мекенжайы – міндетті емес, егер customer_phone параметрі берілсе.
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
discount Жеңілдік мөлшері – параметрді бүтін сан немесе нүктесі бар сан ретінде беруге болады: 25 немесе 63.5.
Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
description Тауар сипаттамасы (егер көрсетілмесе, автоматты түрде 'Оплата счета order_id' толтырылады).
Осы параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша немесе қос тырнақша беруге болады.
extra_params

Қосымша параметрлер, осы функцияда жоқ параметрлер.
Қолжетімді қосымша параметрлерді төлем жүйесінің API-мен жұмыс істеу құжаттамасынан қарауға болады: Prodamus REST API

Мысалы:

extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}

Бұл параметрді өткізіп жібергіңіз келсе, орнына бір тырнақша/қос тырнақша немесе None мәнін беруге болады.

products_for_receipt

50-тен 4000 символға дейінгі жол форматында "тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме".
Мысалы:
“Курс ‘Лещ аулау’, бағасы 4999 рубль, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai_kilogram/"

Бұл параметр міндетті, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.

Мысал

extra_params = {"payments_limit": "3"}

products_for_receipt = "Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai\_kilogram/" 

link_prodamus_url = get_prodamus_payment_url( 4999, 'Курс ‘Лещ аулау’', '27.03.2023 17:00', '79167777771', '[email protected]', 20, 'Нарықтағы ең үздік курс', extra_params, products_for_receipt

Бұл мысалда:

  • extra_params – қосымша параметрлер (мысалы, төлем шегі).
  • products_for_receipt – чекте көрсетілетін тауар туралы ақпарат.
  • get_prodamus_payment_url функциясы арқылы төлемге сілтеме жасалады.

Егер блокта бірнеше сілтеме алу функциялары болса және қате жіберілсе, қате мәні error_payment_func айнымалысына жазылады.

Қате соңғы функция бойынша Калькуляторда жазылады.

payment_sum айнымалысы және қосымша параметрлер арқылы сілтемені жасау

Назар аударыңыз: payment_sum айнымалысына мән соңғы айнымалыдан беріледі, яғни міндетті емес айнымалылардан кейін: payment_description, product_name және т.б.

Төлемге сілтеме жасау үшін Калькулятор өрісінде payment_sum айнымалысының мәнін орнату жеткілікті.
Осыдан кейін автоматты түрде prodamus_pay_url айнымалысы пайда болады.

Төлемге сілтеме мысалы: https://payform.ru/7p3JR8/

Осы айнымалыны хабарламада сілтеме ретінде көрсетуге немесе «Төлеу» мәтіні бар батырмаға орналастыруға болады.

payment_sum айнымалысын жарияламас бұрын мына міндетті емес айнымалыларды көрсетуге болады:

Параметры функции Описание параметра
product_name Тауардың атауы (егер көрсетілмесе, автоматты түрде "Шотты төлеу order_id' толтырылады) – төмендегі скриншотта қай жерде көрсетілетіні көрсетілген.
payment_description Тауар сипаттамасы (егер көрсетілмесе, автоматты түрде 'Оплата счета order_id' толтырылады) – төмендегі скриншотта қай жерде көрсетілетіні көрсетілген.
discount_value Жеңілдік мөлшері (мысалы, discount_value = 25 немесе discount_value = 50.25)
customer_phone Сатып алушының телефон нөмірі – міндетті емес, егер басқа параметр берілсе.
customer_email Сатып алушының Email мекенжайы
link_expired

Төлем сілтемесінің жарамдылық уақытыдд.мм.гггг форматында (мысалы, 25.01.2021).
Сонымен қатар, Калькулятор өрісінде былай көрсетуге болады:
link_expired = current_date + 2 (сілтеме 2 күн бойы 00:00-ге дейін жарамды болады).

link_expired

Сонымен қатар, нақты уақытты көрсетуге болады, формат: дд.мм.гггг чч:мм (мысалы, 25.01.2021 12:23).
Стандартты айнымалыларды да пайдалануға болады, мысалы, сілтеменің жарамдылық уақытын 30 минутқа орнату:
time = current_time + 30 link_expired = "#{current_date} #{time}"

currency

Төлем валютасы, әдепкі бойынша "rub".
Толық аргументтер тізімі:

  • rub
  • usd
  • eur
  • kzt

Бұл параметр кіші әріптермен берілуі керек.

payment_title

Төлем тақырыбы (127 символға дейін). Егер көрсетілмесе, автоматты түрде келесі мәтінмен толтырылады:
Шотты төлеу payment_id” (payment_id – MaviBot-тағы тапсырыс идентификаторы).

payment_description Төлемнің қысқаша сипаттамасы (127 символға дейін)
locale

Төлем бетінің тіліen-US, fr-XC және т.б. форматта көрсетіледі. Әдепкі мән – ru-RU.
Толық тізімді мына сілтемеден қарауға болады

products_for_receipt

50-тен 4000 символға дейінгі жол форматында "тапсырыс сипаттамасы - баға - сатып алынатын ресурсқа сілтеме".
Мысалы:
“Курс ‘Лещ аулау’, бағасы 4999 теңге, курс бетіне сілтеме: https://www.lovilescha.ru/courses/poimai_kilogram/"

Бұл міндетті параметр, егер сізде өзіңіздің онлайн кассаңыз болмаса, Prodamus арқылы төлемді фискализациялау үшін қажет.

payment_sum (міндетті) төлем сомасы

Las variables discount_value, customer_phone, customer_email y link_expired también son relevantes para las suscripciones.

Ejemplo de implementación.
En el primer bloque establecemos el monto del pago:

En el siguiente paso, mostramos el enlace prodamus_pay_url donde sea necesario:

La variable prodamus_available_payment_methods se define antes de declarar payment_sum.
Valores posibles:

AC Pago con tarjeta emitida en la Federación Rusa
ACkz Pago con tarjeta de Kazajistán
ACf Pago con tarjetas de países de la CEI, excepto la Federación Rusa
ACEURNMBX Pago con tarjeta EUR de todos los países, excepto Rusia y Bielorrusia
SBP Pago rápido, sin ingresar datos de la tarjeta. Para tarjetas rusas
QW Qiwi wallet
PC YooMoney
GP Terminal de pago
sbol Sberbank Online
invoice Pago por factura
installment Pago a plazos a través de Prodamus
installment_5_21 Pago a plazos a 3 meses a través de Prodamus
installment_6_28 Pago a plazos a 6 meses a través de Prodamus
installment_10_28 Pago a plazos a 10 meses a través de Prodamus
installment_12_28 Pago a plazos a 12 meses a través de Prodamus
installment_0_0_3 Pago a plazos a 3 meses a través de Tinkoff
installment_0_0_4 Pago a plazos a 4 meses a través de Tinkoff
installment_0_0_6 Pago a plazos a 6 meses a través de Tinkoff
installment_0_0_10 Pago a plazos a 10 meses a través de Tinkoff
installment_0_0_12 Pago a plazos a 12 meses a través de Tinkoff
installment_0_0_24 Pago a plazos a 24 meses a través de Tinkoff
installment_0_0_36 Pago a plazos a 36 meses a través de Tinkoff
credit Crédito a través de Tinkoff
vsegdada_installment_0_0_4 Pago a plazos a 4 meses a través de “VsegdaDa” (no funciona con available_payment_methods)
vsegdada_installment_0_0_6 Pago a plazos a 6 meses a través de “VsegdaDa”
vsegdada_installment_0_0_10 Pago a plazos a 10 meses a través de “VsegdaDa”
vsegdada_installment_0_0_12 Pago a plazos a 12 meses a través de “VsegdaDa”
vsegdada_installment_0_0_24 Pago a plazos a 24 meses a través de “VsegdaDa”
vsegdada_installment_0_0_36 Pago a plazos a 36 meses a través de “VsegdaDa”
sbrf_installment_0_0_6 Pago a plazos a 6 meses a través de Sberbank
sbrf_installment_0_0_10 Pago a plazos a 10 meses a través de Sberbank
sbrf_installment_0_0_12 Pago a plazos a 12 meses a través de Sberbank
sbrf_installment_0_0_24 Pago a plazos a 24 meses a través de Sberbank
sbrf_installment_0_0_36 Pago a plazos a 36 meses a través de Sberbank
otp_installment_0_0_6 Pago a plazos a 6 meses a través de “OTP Bank”
otp_installment_0_0_10 Pago a plazos a 10 meses a través de “OTP Bank”
otp_installment_0_0_12 Pago a plazos a 12 meses a través de “OTP Bank”
otp_installment_0_0_24 Pago a plazos a 24 meses a través de “OTP Bank”
otp_installment_0_0_36 Pago a plazos a 36 meses a través de “OTP Bank”
mts_installment_0_0_6 Pago a plazos a 6 meses a través de “MTS Bank”
mts_installment_0_0_10 Pago a plazos a 10 meses a través de “MTS Bank”
mts_installment_0_0_12 Pago a plazos a 12 meses a través de “MTS Bank”
mts_installment_0_0_24 Pago a plazos a 24 meses a través de “MTS Bank”
mts_installment_0_0_36 Pago a plazos a 36 meses a través de “MTS Bank”
monetaworld Tarjetas de bancos mundiales, excepto Rusia
sbrf_bnpl Pago a plazos a través de Sber

Se permite separar varios valores mediante una barra vertical.
Por ejemplo:

prodamus_available_payment_methods = "AC|PC|QW"

prodamus_currency – este es otro parámetro adicional que permite mostrar el monto en una moneda específica.

Monedas posibles:

  • kzt – para tenge
  • eur – para euro
  • usd – para dólar

De esta manera, el monto indicado en el enlace estará en la moneda seleccionada.

Al recibir el callback payment_callback se debe prestar atención a los parámetros currency y currency_sum, que indican la moneda y el monto.

Si no se especifica, se redirige a una página sin métodos de pago.
Los métodos de pago se pueden agregar mediante la asistencia. Los métodos agregados se pueden ver en la configuración de la página o probar creando un enlace de pago.

Cómo procesar el resultado

Pago exitoso

Importante: después de un pago exitoso o fallido, llegan callbacks al bot, con los cuales puede determinar si el pago se realizó con éxito.

Los callbacks se ven como mensajes del usuario en el sistema, 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, la variable prodamus_payment_completed toma automáticamente el valor True.

Nota: Los callbacks llegan con un ligero retraso, por lo que es mejor enviar un mensaje al usuario después de enviar el enlace:

“Después de realizar el pago, espere la confirmación de que el pago se ha completado con éxito.”


Estructura del callback

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

<clave_secreta>_success <monto_del_pago>

Por ejemplo:

ovg58keefc_success
  • ovg58keefc – clave secreta completa del sistema de pago
  • _success – resultado del procesamiento de la solicitud (pago exitoso)

Uso práctico

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

El tipo de comparación debe ser "Full match" / "Coincidencia completa"

Para realizar un nuevo pago, es obligatorio restablecer la variable payment_sum a cero y eliminar el enlace creado anteriormente. Solo entonces se puede asignar un nuevo valor a la variable payment_sum y obtener el enlace actualizado.

Desactivación/Reactivación de la suscripción

Además, en el sistema Prodamus hay notificaciones sobre si la suscripción se ha activado o cancelado:

«El suscriptor desactivó la suscripción» – si la suscripción se canceló manualmente (por ejemplo, en caso de darse de baja).
Este mensaje puede llegar antes de que finalice el período pagado actual. La acción depende de su decisión: ignorar, tomar bajo control o intentar recuperar al usuario.

«El suscriptor reactivó la suscripción» – la suscripción se ha restaurado.
Este mensaje puede llegar si el usuario restaura la suscripción antes de que finalice el período pagado actual. La acción depende de su decisión: ignorar o eliminar de la lista de monitoreo.

«Desactivación de la suscripción» – cuando la suscripción se cancela después de varios pagos fallidos.

Guardar valores del callback

Después de que llegue el mensaje sobre un pago exitoso, en la variable payment_callback se escribe el callback de Prodamus, que contiene todos los datos del pago. Puede guardar estos datos y utilizarlos como desee.

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": "Товар",
  "payment_type": "Пластиковая карта Visa, MasterCard, МИР",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Доступ к обучающим материалам",
  "products[0][price]": "14.50",
  "products[0][quantity]": "1",
  "products[0][sum]": "14.50",
  "payment_status": "success",
  "payment_status_description": "Успешная оплата",
  "payment_init": "manual"
}

Al crear el enlace, se pueden especificar las variables product_name y payment_description. Entonces, cuando llegue el callback, se pueden obtener de la siguiente manera:

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

Tenga en cuenta: a la variable payment_sum se le asigna el último valor, que se encuentra después de las variables opcionales: payment_description, product_name.

El monto se puede obtener de la siguiente manera:

summa = get(payment_callback, 'sum')

Callbacks disponibles

Además de los callbacks principales de pago exitoso, en el chat llegan mensajes que el usuario no ve, de la siguiente manera:

callbacks
  • El suscriptor desactivó la suscripción (más detalles aquí)
  • El suscriptor reactivó la suscripción (más detalles aquí)
  • Suscripción finalizada
  • Pago no exitoso - nota con explicación (en la captura de pantalla anterior)
  • Notificación de próximo cobro - fecha y hora del próximo cobro
  • Solicitud de pago a plazos con estado
Ejemplos de callbacks en el diálogo con el cliente
  • 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 - Límite de la tarjeta excedido.
  • Pago no exitoso - Tarjeta perdida
  • Pago no exitoso - Error del sistema
  • Pago no exitoso - Operación rechazada. Contacte al banco emisor de la tarjeta.
  • Pago no exitoso - Rechazo de la operación por parte del banco emisor.
  • Pago no exitoso - Rechazo de la operación por parte del banco.
  • Notificación de próximo cobro - dd.mm.aaaa hh:mm
  • Solicitud de pago a plazos aprobada
  • Solicitud de pago a plazos cancelada
  • Solicitud de pago a plazos rechazada

A su criterio, puede configurar el envío de cualquier mensaje al usuario. Por ejemplo, enviar un mensaje en caso de que falle un pago automático.

Los bloques de respuesta para un mensaje sobre un pago fallido por una razón específica se pueden configurar de la siguiente manera:

Puedes configurar el envío de un mensaje para todos los pagos fallidos, independientemente del motivo, de la siguiente manera:

En todos los callbacks, si el texto contiene la frase «Pago fallido», se enviará al usuario un mensaje con el texto que hayas especificado.

Cómo realizar un pago por suscripción

Cómo crear una suscripción

Para crear una suscripción, primero debes crear un producto de suscripción.
Guía completa: Cómo crear y configurar una suscripción

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

Creación de un producto de suscripción

Para crear un enlace de pago de suscripción, es necesario asignar el ID del producto de suscripción a la variable prodamus_subscription. Después de esto, aparecerá automáticamente la variable prodamus_pay_url.

La variable prodamus_pay_url se puede mostrar en pantalla como un enlace o colocarla en un botón con el texto «Pagar». Ejemplo de enlace: https://payform.kz/7p3JR8/

El procesamiento del resultado se realiza de la misma manera que con un pago único (como se leyó anteriormente).

Después de una suscripción exitosa, al usuario se le asigna la variable customer_phone ingresada durante el pago. El número de teléfono es necesario para gestionar la suscripción.

Si no se proporciona customer_email, customer_phone es obligatorio para gestionar la suscripción.

Cómo crear un enlace de suscripción con la función get_prodamus_subscription_url

Consideremos otro método para crear un enlace de pago de suscripción para un producto.

  1. Se crea un producto de suscripción en el panel de Prodamus.
    Puedes consultar la guía completa en el siguiente enlace:
    Cómo crear y configurar una suscripción
  2. Luego, copiamos el ID del producto de suscripción. Por ejemplo, a continuación se muestra dónde obtenerlo:
Creación de un producto de suscripción

Para obtener un enlace de pago de un producto por suscripción en la Calculadora, especificamos la función

get_prodamus_subscription_url(subscription_id, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)

Calculadora

Ejemplo 1: Enlace de pago de un producto por suscripción

Descripción de 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:

Parámetro Valor del parámetro
subscription_id ID del producto de suscripción – se puede copiar desde el panel de Prodamus (parámetro obligatorio).
product_name Nombre del producto (parámetro obligatorio).
expired

Período de validez del enlace de pago – en formato dd.mm.aaaa (por ejemplo, 25.01.2021).

También se puede especificar en el campo «Calculadora»:

expired = current_date + 2  # el enlace será válido por 2 días, hasta las 00:00 horas

El parámetro expired también se puede especificar con una hora exacta, formato: dd.mm.aaaa hh:mm (por ejemplo, 25.01.2021 12:23).

También se pueden usar variables estándar, por ejemplo, para establecer la validez del enlace en 30 minutos:

time = current_time + 30
expired = "#{current_date} #{time}"

Si deseas omitir este parámetro, puedes pasar comillas simples o dobles, o el valor None.

customer_phone

Número de teléfono del pagador – opcional, si se proporciona el parámetro customer_email.

Si deseas omitir este parámetro, introduce comillas simples o dobles.

customer_email

Correo electrónico del pagador – opcional, si se proporciona el parámetro customer_phone.

Si deseas omitir este parámetro, introduce comillas simples o dobles.

discount

Monto del descuento – el parámetro se puede pasar como un número entero o decimal: 25 o 63.5.

Si deseas omitir este parámetro, introduce comillas simples o dobles.

description

Descripción del producto – si no se especifica, por defecto se completa con 'Pago de factura order_id'.

Si deseas omitir este parámetro, introduce comillas simples o dobles.

extra_params

Parámetros adicionales que no están en esta función.
Puedes consultar los posibles parámetros adicionales en la documentación de la API del sistema de pago:
Guía de la API REST de Prodamus

Ejemplo:

extra_params = {"payments_limit": "3"}

Si deseas omitir este parámetro, puedes pasar comillas simples/dobles o el valor None.

products_for_receipt

Cadena de 50 a 4000 caracteres, formato: "descripción del pedido - precio - enlace al recurso adquirido"

Ejemplo:
Curso «Curso de pesca de besugo», precio 4999 tenge, enlace a la página del curso: https://www.lovilescha.ru/courses/poimai_kilogram/.

Este parámetro es obligatorio si no tienes tu propia caja registradora en línea y necesitas fiscalizar los pagos a través de Prodamus.

Ejemplo de código para copiar

extra_params = {"payments_limit": "3"} \

products_for_receipt = "Curso ‘Curso de pesca de besugo’, suscripción mensual precio 2000 tenge, enlace a la página del curso: https://www.lovilescha.ru/courses/poimai\_kilogram/" \

link_prodamus_sub = get_prodamus_subscription_url(618988, 'Curso ‘Curso de pesca de besugo’', '27.03.2023 17:02', '79167777771', '[email protected]', 20, 'El mejor curso del mercado', extra_params, products_for_receipt)

Si se produce un error al obtener el enlace a través de varias funciones en un bloque, el valor del error se escribe en la variable error_payment_func.

El error se registra en la Calculadora según la última función.

Cómo gestionar el estado de la suscripción

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

Para gestionar la suscripción, es obligatorio proporcionar el parámetro customer_phone o customer_email.

Para dar de baja a un usuario de la suscripción, es necesario crear un bloque y llamar a la siguiente función:
delete_subscription_prodamus

Ejemplo de 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, obtenido 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 titular 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 el sistema Prodamus

Nota:
Si llega un ID de perfil, se guarda en la variable profile_id.
Se puede pasar profile_id a la función en lugar de customer_phone o customer_email para cancelar la suscripción.

Ejemplo: configuración de bloques de suscripción

Ten en cuenta que la función devuelve status, que puedes guardar y procesar según tu criterio. Al cancelar o reactivar la suscripción con éxito, status = ok.

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 titular de la suscripción; opcional, si se especifica customer_email

customer_email – dirección de correo electrónico del titular de la suscripción; opcional, si se especifica customer_phone

profile_id – ID del perfil en el sistema Prodamus

Ejemplo 1: se proporciona el parámetro customer_phone, se omite customer_email:

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

Ejemplo 2: se proporciona el parámetro customer_email, se omite customer_phone:

stat = prodamus_subscription_switch_status('618117', '0', '', '[email protected]')

La función devuelve ok si todas las operaciones se completan con éxito o devuelve una descripción del error si ocurre algún error.

Gestión de descuentos en la suscripción

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

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 dígitos después del punto; el valor debe ser mayor que cero y no exceder el costo base de la suscripción
  • customer_phone – número de teléfono del cliente, formato: +79999999999 (opcional, si existe la variable customer_email; aparece después del primer pago)
  • num – número de pagos a los que se aplica el descuento (opcional; si no se especifica, el descuento se aplica a todos los pagos)
  • profile_id – ID del perfil en el sistema Prodamus

Si la solicitud se ejecuta con éxito, la función devuelve 'ok'; si ocurre un error, la función devuelve una descripción del error.

¡El monto del descuento y el intervalo solo se sobrescriben si se vuelve a llamar a la función con nuevos valores!

Ejemplos:

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

r = prodamus_subscription_discount('624034', '1')

2. Ejemplo de aplicación de un descuento de 2₽ a los siguientes 3 pagos (el número de teléfono se pasa con comillas vacías, ya que se toma automáticamente de la variable customer_phone):

r = prodamus_subscription_discount('624034', '2', '', '3')

3. Ejemplo de especificación de un descuento con decimales (el separador es el punto, los valores se especifican sin comillas), el número de teléfono se puede pasar a través de una variable.

r = prodamus_subscription_discount(#{prodamus_subscription}, 10.25, #{customer_phone}, 3)

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

Este método permite posponer la fecha del próximo pago de una suscripción. La fecha solo se puede mover hacia adelante en el tiempo respecto a la fecha de pago actualmente establecida, lo que permite aumentar el período de membresía en el club.

Por ejemplo, esto se puede utilizar como un bono para los suscriptores.

Para ello, es necesario utilizar la siguiente función:

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, se toma de la variable customer_phone; si no se encuentra, la función no funcionará
  • profile_id – ID del perfil en el sistema 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, agregue el prefijo prodamus_ al nombre de la variable.

Luego, al crear el enlace de pago, los parámetros de esta variable se enviarán automáticamente al sistema de pago.

Cómo probar el pago

¡Solo probamos el pago!

Al configurar la integración y los embudos de pago, puede usar tarjetas de prueba para que no se debite dinero de su cuenta.

Primero, cambie su página de pago al modo DEMO
No olvide presionar el botón "Guardar".

Puede usar cuentas de prueba para realizar un pago de prueba.

Tarjetas de prueba de Sberbank:

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

MasterCard
Número de tarjeta: 5469 9801 0004 8525
Fecha de vencimiento: 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 vencimiento: 05/26
Código de verificación en el reverso (CVV): 941
Código de verificación 3‑D Secure: 111111

❗️Al realizar un pago con cuentas de prueba, todos los embudos e integraciones configurados funcionan como en un pago normal❗️

Formulario verificado

Para aceptar pagos reales, el formulario debe cambiarse al modo de trabajo. Es decir, el interruptor del modo demo debe colocarse en la posición rojo abierto.