Paypal
Cómo configurar Paypal enlace Cómo configurar Paypal
Cómo crear un enlace de pago enlace Cómo crear un enlace de pago
Cómo crear un pago recurrente enlace Cómo crear un pago recurrente
Cómo procesar el resultado enlace Cómo procesar el resultado
Cómo configurar Paypal
Para trabajar con Paypal, necesitas obtener dos claves: client_id y secreto
Ve a la página https://developer.paypal.com/developer/applications/
Y elige de la lista o crea una nueva aplicación:
En la parte superior, cambia al modo Live y selecciona la aplicación deseada. Se abre la página de configuración, donde se encuentran los datos que necesitamos:
Copia los datos y pégalos en los campos correspondientes en la configuración de Mavibot: ve a la sección "Acquiring" y encuentra el servicio Paypal:

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

A continuación, haz clic en "Save settings". Con esto se completa la conexión.
Cómo crear un enlace de pago
Usando la variable payment_sum
Para generar un enlace de pago, debes establecer el valor de la payment_sum variable y justo después la paypal_pay_url variable aparecerá.
payment_title
(variable opcional) este es el nombre del producto.
Si no se especifica, se rellena con el texto: “Invoice payment order_id" (order_id es el identificador del pedido en mavibot)
payment_description
descripción del producto, campo opcional
company_name
el nombre de tu empresa se muestra en la parte superior de la página de pago (el ejemplo está abajo, company)
Además, antes de especificar payment_sum, puedes indicar en qué idioma estará la página de pago.
Para ello, establece la variable locale. El idioma predeterminado es Ruso (ru-RU). Opciones posibles: da-DK, he-IL, id-ID, ja-JP, no-NO, pt-BR, ru-RU, sv-SE, th-TH, zh-CN, zh-HK, zh-TW, etc. (el conjunto de idiomas disponibles varía, toma como referencia la fuente original) ссылка fuente original)
También puedes especificar la moneda en la que se aceptará el pago. Para ello, especifica la currency variable, la rublos (RUB) se establece por defecto; para dólares, establece su valor en USD (currency = USD). Las opciones de moneda posibles se pueden encontrar en el enlace. ссылка enlace.
Y el tercer parámetro adicional es company_name - el nombre de tu empresa, que se muestra en la parte superior de la página de pago (el ejemplo está abajo, company)
El paypal_pay_url la variable puede mostrarse con un enlace o colocarse en un botón con el texto "Pay".
El enlace se ve así: https://www.paypal.com/checkoutnow?token=07N53571YM296381N
Un ejemplo de la implementación.
Configuración del importe del pago y del nombre de la empresa

Tenga en cuenta: el payment_sum la variable se asigna en último lugar, después de las variables opcionales payment_title, company_name, etc.
A continuación, especifica la variable #{paypal_pay_url} en el segundo bloque "Status":
La variable puede especificarse en el campo message:

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

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

Al abrir el enlace de pago
Usando la función de calculadora paypal_payment_url
Crea un bloque del constructor de embudos y usa la paypal_payment_url función en la calculadora, pasándole los parámetros necesarios:
! payment_sum
el parámetro requerido es el importe del pago.
currency
La moneda de pago predeterminada es ‘USD'. La lista completa está disponible en el enlace https://developer.paypal.com/docs/api/reference/currency-codes/
payment_title
el encabezado del pago (hasta 127 caracteres). (Si se omite, se rellena con el texto: “Invoice payment payment_id”, donde payment_id es el ID del pedido en Mavibot)
payment_description
breve descripción del pago (hasta 127 caracteres)
company_name
parámetro opcional, nombre de la organización/empresa, etc.
locale
El idioma de la página de pago se especifica como en-US, fr-XC, etc. Por defecto, es ‘ru-Ru’. La lista completa está disponible en el enlace https://developer.paypal.com/api/rest/reference/locale-codes/
Cuando se cumpla la condición del bloque, el cliente recibirá un enlace de pago, y la paypal_payment_completed variable del cliente se creará con el valor False.

url = paypal_payment_url(2500, 'RUB', 'Invoice payment payment_id','payment description', 'organization name', 'ru-Ru')
Cómo crear un pago recurrente
Para crear y recibir un enlace para pagar con pagos recurrentes, debes crear un plan de suscripción en tu cuenta personal.


Seleccionando una oferta ya creada:

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


Selecciona el tipo de cargo automático Fixed:

Crear suscripción

Elección de la moneda de la suscripción y de las condiciones del cargo:
¡Atención!!
En Mavibot, la moneda predeterminada es el euro; si el cargo es en dólares o en otra moneda, al crear una suscripción especifica la moneda que necesites y en Mavibot la misma moneda de la suscripción de Paypal.

A continuación, activa la suscripción:


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

El enlace de pago es generado y devuelto por la función: paypal_subscription_url(plan_id, shipping_currency, shipping_payment_sum, start_time)
! plan_id
ID del plan de suscripción
! shipping_currency
si el pago del plan especificado es en dólares, no tienes que transferir nada; de lo contrario, transferimos el código de moneda que especificaste en el plan. Aquí se transmite la moneda en la que se paga el envío (incluso para coste cero). Por defecto, USD
shipping_payment_sum
Este es un parámetro opcional que especifica el coste del envío. Por defecto, el valor se establece en cero.
start_time
parámetro opcional, fecha y hora de inicio de la suscripción. Si no transfieres nada, la fecha de inicio de la suscripción = la fecha del pago. Formatos: %d.%m.%Y o %d.%m.%Y %H:%M.

Al crear el enlace, la paypal_subscription_id variable también aparecerá, y contendrá el ID de la suscripción.
Durante el pago, recibirás un callback, que es similar al pago de un pago normal.
paypal_subscription_data(paypal_subscription_id) - obtención de información sobre la suscripción
paypal_subscription_id
el ID de la suscripción.
El resultado de ejecutar la función - es un array que contiene toda la información sobre la suscripción, incluyendo el número de pagos, el número de intentos fallidos de cobro, el estado y más.
Cómo cancelar la suscripción
La función paypal_remove_subscription(paypal_subscription_id) ayudará a los clientes a cancelar sus suscripciones a tus servicios.
Parámetros:
paypal_subscription_id
el ID de la suscripción que se guarda en la variable del cliente al suscribirse.

Cómo procesar el resultado
Después de un pago exitoso, se enviarán callbacks al bot, que te indicarán que el pago fue exitoso.
En el sistema, ves los callbacks como mensajes del usuario, pero el propio usuario NO LOS VE: solo se muestran al operador.
Para procesar el callback en el bloque y enviar mensajes al usuario sobre el estado del pago, utiliza el tipo de comparación "Exact match".
Los callbacks pueden retrasarse, así que después de mostrar el enlace de pago al usuario, se recomienda enviar un mensaje como: “Después de realizar el pago, espera un mensaje de confirmación que indique que el pago fue exitoso.”
Para pago directo
El callback de pago exitoso consiste en los primeros 10 caracteres del secreto y la firma con el estado. Por ejemplo: EHsWHYOoWV_success
Ejemplo 1: reacción a un pago exitoso usando el bloque "Start condition":

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

Si no quieres sacar al usuario del flujo principal del chatbot, utiliza el bloque “No-state with condition” — los usuarios no pueden ser redirigidos directamente a este bloque, así que después de un pago exitoso seguirán en el embudo principal, al mismo tiempo que recibirán una notificación sobre el pago exitoso.
Pero si sí quieres continuar el embudo basándote en el evento de pago exitoso, usa el bloque “Start condition”. En este caso, después de completar el bloque de pago, el usuario será redirigido al bloque “Start condition”, desde el cual podrás seguir construyendo tu embudo.
Más información sobre los bloques condicionales se proporciona en el artículo del mismo nombre. блоках с условием рассказали ссылка
Tras un pago exitoso, la variable paypal_payment_completed se establece en True.
Después de completar el pago, se añade al cliente la variable paypal_callback_data, que contiene datos actualizados del sistema de pago sobre el estado de la transacción. Puedes extraer los datos necesarios del diccionario recibido usando el método get.
Para realizar un pago repetido, debes restablecer la variable payment_sum, la variable con el enlace generado previamente y, a continuación, reasignar la variable payment_sum o llamar a la función para obtener un nuevo enlace.
Para pagos de suscripción
La función de configuración de callbacks para operaciones relacionadas con suscripciones se añadió el 09/01/2024. Para que los callbacks de esta categoría funcionen correctamente, debes desactivar y volver a conectar la integración del sistema de pago Paypal en tu proyecto.
Al realizar un pago de suscripción, el bot recibirá uno de los siguientes mensajes:
sobre la activación de la suscripción. Por ejemplo, subscription_I-PTV5H4MRC1H3_activated;
Notificación de un pago recurrente de suscripción exitoso. Por ejemplo, subscription_I-PTV5H4MRC1H3_paid;
o sobre un error en el pago de la suscripción. Por ejemplo, subscription_I-PTV5H4MRC1H3_not_paid;
En los ejemplos anteriores “I-PTV5H4MRC1H3” es el ID de la suscripción del cliente, al que se puede acceder usando la variable paypal_subscription_id.
El callback añadirá la variable paypal_subscription_callback_data al cliente, que contiene datos actuales del sistema de pago sobre el estado de la transacción. Puedes extraer los datos necesarios del diccionario recibido usando el método get.
Ejemplo 1: reacción a la activación de la suscripción usando el bloque "Start condition":

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

Última actualización