Integración de Pagos Personalizada
Categoría:
Temas en este documento:
- Procesamiento de pagos de terceros en Monetization
- Procesamiento de pagos asíncrono
- Procesamiento de pagos síncrono
Procesamiento de pagos de terceros en Monetization
El procesamiento de pagos de terceros se puede lograr a través de dos métodos: síncrono y asíncrono. El método síncrono requiere respuestas inmediatas de su componente de integración de pagos, mientras que el método asíncrono combina la extracción de facturas definitivas de Monetization y luego la importación de los pagos en un momento posterior.
Información:
Normalmente, su caso de uso determina qué método de procesamiento es el óptimo.Procesamiento de pagos asíncrono
Para el procesamiento de pagos asíncrono, usted exporta las facturas definitivas de Monetization y los pagos se procesan completamente fuera de Monetization. Cuando tenga los resultados del procesamiento de pagos, los importa a través de archivos CSV (valores separados por comas) o la API (interfaz de programación de aplicaciones) de Monetization.
Exportación de facturas definitivas
Puede exportar facturas definitivas de Monetization configurando un mapeador de exportación de facturas y programando un trabajo de exportación, que exportará los archivos a una ubicación SFTP (Protocolo de Transferencia de Archivos SSH), o suscribiéndose a una creación de factura definitiva vía Webhook, que activará una solicitud de factura a la dirección URL (localizador de recursos uniforme) proporcionada cada vez que se cree una nueva factura definitiva.
Trabajo de exportación – archivo CSV a SFTP
Para exportar facturas definitivas como archivos CSV, se debe configurar un mapeador de exportación de facturas (Invoice Export mapper) para mapear los parámetros de la factura a las columnas del archivo CSV. La interfaz de usuario de Monetization permite dicha configuración en Business configuration Export Invoice mappers.
Figura 1: Ejemplo de configuración del mapeador de exportación de facturas
Las exportaciones de facturas se programan a través de Exporting Jobs (trabajos de exportación), que pueden ser tareas únicas o automatizadas para ejecutarse durante períodos específicos. El trabajo de exportación guardará el archivo CSV exportado en la ubicación SFTP respectiva storage/invoice/folder_name/file_name.csv.
Figura 2: Ejemplo de trabajo de exportación de facturas
Notificación - método webhook
La exportación de facturas definitivas a través de webhooks le permite recibir las facturas inmediatamente después de su creación. Esto se logra configurando una regla de notificación de factura (Invoice Notification Rule), que enviará cada factura creada como una solicitud de cuerpo JSON (Notación de Objetos de JavaScript) a la dirección URL proporcionada, junto con cualquier opción de encabezado preconfigurada.
Figura 3: Ejemplo de configuración de webhook de creación de facturas
Importación de pagos
Puede importar transacciones de pago a Monetization configurando un mapeador de importación de pagos y cargando los archivos CSV de pago en la ubicación de entrada SFTP o utilizando la API REST (Transferencia de Estado Representacional) de Monetization.
Importación de archivos CSV vía SFTP
Para que Monetization importe transacciones de pago a través de archivos CSV, debe haber un mapeador de importación de pagos (Payment Import Mapper) configurado. La configuración es posible a través de la interfaz de usuario de Monetization en Business configuration Import Payment mappers.
El mapeador de pagos permite el mapeo de las columnas CSV a los parámetros de la transacción de pago y la definición de un prefijo de archivo, que debe estar presente en los archivos cargados.
Los archivos se cargan en el servidor SFTP en la carpeta edl/input y se moverán a las carpetas edl/processed, edl/successful, edl/error y edl/rejected según los resultados del procesamiento.
Figura 4: Ejemplo de configuración del mapeador de importación de pagos
Importación a través de llamada a la API
Para importar una transacción de pago a través de la API de Monetization, envíe una solicitud JSON que contenga los detalles de la transacción a la API REST de Monetization.
Nota:
Un usuario debe estar autenticado primero para comunicarse con la API de Monetization.Autenticación
La API de Monetization utiliza autenticación de tipo Bearer Token:
- Ejecute la solicitud de autenticación (Authentication) con el nombre de usuario, la contraseña y el código de sitio específico.
- Obtenga el
tokende la respuesta. - Establezca el encabezado
AuthorizationcomoBearer <token>en las próximas solicitudes. - El token expira después de 5 minutos.
URL: {{api_url}}/authenticate
Headers
Content-Type:application/json
Body
{
"username": "su_nombre_de_usuario_de_monetization",
"password": "password",
"site_code": "su_codigo_de_sitio_de_monetization - subdominio"
}
Solicitud de importación de pago
URL: {{api_url}}/api/v1/import
Headers
Content-Type:application/json
Authorization:Bearer {{auth_token}}
Data-Type:Payment
Body
{
"invoice_id": 123,
"transaction_identifier": "T-1233-cew3-445f-feew3",
"amount": 150,
"transaction_time": 1600613169000,
"currency": "EUR",
"method": "other",
"type": "charge",
"provider": "stripe"
}
Procesamiento de pagos síncrono
El procesamiento de pagos síncrono requiere una comunicación síncrona entre Monetization y su componente de integración de pagos. Este método de procesamiento permite autorizaciones de tarjetas de crédito/débito y pagos inmediatos.
Usted configura Monetization para especificar a dónde deben enviarse las solicitudes relacionadas con el procesamiento de pagos, y Monetization tiene respuestas predefinidas que espera recibir. Este método de procesamiento permite el almacenamiento de referencias de métodos de pago en los clientes y admite procesos automatizados de cobro de pagos.
Para Monetization, el proceso de integración es prácticamente el mismo que una integración nativa con un proveedor existente (Stripe, Braintree, etc.). Sin embargo, la comunicación se ejecuta a través de un componente desarrollado por usted, que actúa como una pasarela hacia su proveedor de pagos local.
Operaciones esenciales para admitir el procesamiento de pagos síncrono:
- Setup Intent (Intención de configuración)
- Authorize (Autorizar)
- Capture (Capturar)
- Charge (Cargar)
Configuración del proveedor de pagos de terceros
Para configurar una integración de proveedor de pagos de terceros, configure un perfil de pasarela de pago de terceros (third-party payment gateway profile) y proporcione la URL donde Monetization debe enviar las solicitudes.
Esto se puede lograr a través de la interfaz de usuario en System configuration Payment gateways, o creando un perfil de pasarela de pago a través de la API REST de Monetization.
URL: {{api_url}}/api/v1/payment-gateway-profiles
Headers
Content-Type:application/json
Authorization:Bearer {{auth_token}}
Request
{
"provider": "third-party",
"headers": {
"PGW_URL": "URL de su pasarela de pago"
}
}
Operaciones del cliente
Las operaciones del cliente solo se aplican en los casos en que el proveedor de pagos de terceros admite la gestión de clientes. Si el proveedor de pagos no admite la gestión de clientes, entonces los ids de los clientes pueden reemplazarse por cualquier valor (por ejemplo, la marca de tiempo Unix de la solicitud).
Crear cliente (sin tarjeta)
Crea un cliente como un objeto en el servicio del proveedor de pagos.
Solicitud enviada por Monetization:
{
"action": "create_customer",
"content": {
"customer": {
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"email": "john_anderson@testmail123.com",
"phone": "003861234335",
"tax_identifier": "123543569596"
},
"billing_address": {
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"street_address": "Address street 12",
"locality": "Name of City",
"postal_code": "84116",
"region": "Region",
"country_code": "SI",
"country_name": "Slovenia "
}
}
}
Respuesta esperada:
Estado HTTP: 201 Created
{
"customer": {
"id": "payment_provider_customer_id"
}
}
Actualizar cliente
Actualiza un objeto de cliente en el servicio del proveedor de pagos.
Solicitud enviada por Monetization:
{
"action": "update_customer",
"content": {
"customer": {
"id": "payment_provider_customer_id_1",
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"email": "john_anderson@testmail123.com",
"phone": "003861234335",
"tax_identifier": "123543569596"
},
"billing_address": {
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"street_address": "Address street 12",
"locality": "Name of City",
"postal_code": "84116",
"region": "Region",
"country_code": "SI",
"country_name": "Slovenia "
}
}
}
Respuesta esperada:
Estado HTTP: 204 No Content
Sin cuerpo de respuesta
Leer cliente
Lee un objeto de cliente del servicio del proveedor de pagos.
{
"action": "read_customer",
"content": {
"id": "payment_provider_customer_id_1"
}
}
Respuesta esperada:
Estado HTTP: 200 OK
{
"content": {
"customer": {
"id": "payment_provider_customer_id_1",
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"email": "john_anderson@testmail123.com",
"phone": "003861234335",
"tax_identifier": "123543569596"
},
"billing_address": {
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"street_address": "Address street 12",
"locality": "Name of City",
"postal_code": "84116",
"region": "Region",
"country_code": "SI",
"country_name": "Slovenia "
},
"credit_cards": [
{
"is_default": true,
"card_holder_name": "John Anderson",
"expiration_month": "03",
"expiration_year": "2026",
"type": "Mastercard",
"token": "payment_provider_card_token",
"last_four": "1234"
}
]
}
}
Eliminar cliente
Elimina un objeto de cliente del servicio del proveedor de pagos.
Solicitud enviada por Monetization:
{
"action": "delete_customer",
"content": {
"id": "payment_provider_customer_id_1"
}
}
Respuesta esperada:
Estado HTTP: 204 No Content
Sin cuerpo de respuesta
Operaciones de tarjeta
Las operaciones de tarjeta se refieren a la configuración o eliminación de tarjetas de crédito y débito.
Configuración (solicitud de configuración de tarjeta)
Activa un proceso donde un cliente puede proporcionar los detalles de su tarjeta de crédito, los cuales son tokenizados y almacenados en Monetization. Tras una solicitud para agregar una nueva tarjeta de crédito, Monetization enviará una solicitud de configuración a su componente de integración.
Su componente de integración debe manejar cualquier lógica relacionada con los servicios del proveedor de pagos y devolver una URL de redirección a Monetization como respuesta. El cliente será redirigido a la URL proporcionada, donde el formulario alojado de su proveedor de pagos recopilará y tokenizará los detalles de la tarjeta del cliente.
Figura 5: Configuración de tarjeta de crédito
Solicitud enviada por Monetization:
{
"action": "setup",
"content": {
"customer": {
"id": "payment_provider_customer_id_1",
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"email": "john_anderson@testmail123.com",
"phone": "003861234335",
"tax_identifier": "123543569596"
},
"billing_address": {
"first_name": "John",
"last_name": "Anderson",
"company": "Company",
"street_address": "Address street 12",
"locality": "Name of City",
"postal_code": "84116",
"region": "Region",
"country_code": "SI",
"country_name": "Slovenia "
}
"custom_attributes": {
"callback_url": "https://callbackurl.com"
}
}
}
Respuesta esperada:
Estado HTTP: 201 Created
{
"customer": {
"id": "payment_provider_customer_id"
},
"redirect_url": "https://card-data-collection-form.com"
}
Eliminar tarjeta
Envía una solicitud a su componente de integración para manejar la lógica de eliminación de la referencia de la tarjeta de crédito a través de los servicios del proveedor de pagos, luego elimina la referencia de Monetization tras el éxito.
Solicitud enviada por Monetization:
{
"action": "delete_credit_card",
"content": {
"customer": {
"id": "provider_customer_id_34"
},
"credit_card": {
"token": "provider_card_token_x23423532"
}
}
}
Respuesta esperada:
Estado HTTP: 204 No Content
Sin cuerpo de respuesta
Operaciones de transacción
Las operaciones de transacción se refieren a acciones transaccionales ejecutadas sobre tokens de métodos de pago almacenados (tarjeta de crédito/débito). Estas acciones incluyen:
Autorización
La autorización (authorization) se utiliza para autorizar (bloquear) fondos en el método de pago de un cliente. Las autorizaciones se pueden capturar o anular más tarde. La siguiente solicitud se envía a su componente de integración, que debe manejar la lógica del servicio del proveedor de pagos y devolver una respuesta.
Solicitud enviada por Monetization:
{
"action": "authorize",
"content": {
"amount": 20.5,
"currency": "EUR",
"customer": {
"id": "provider_customer_id_34"
},
"credit_card": {
"token": "provider_card_token_x23423532"
}
}
}
Respuesta esperada:
Estado HTTP: 202 Accepted
{
"transaction_id": "payment_provider_transaction_id",
"amount": 25.5,
"currency": "EUR",
"time": "1650629967000",
"success": true,
"message": "Mensaje del proveedor si se proporciona",
"code": "Código del proveedor si se proporciona"
}
Captura
La captura (capture) se refiere al cobro de fondos autorizados de una solicitud de autorización previa. El monto a cobrar puede ser igual o inferior al monto autorizado.
Cualquier fondo autorizado no cobrado será liberado de nuevo al cliente por el servicio del proveedor de pagos. La siguiente solicitud se envía a su componente de integración, que debe manejar la lógica del servicio del proveedor de pagos y devolver una respuesta.
Solicitud enviada por Monetization:
{
"action": "capture",
"content": {
"transaction_id": "provider_transaction_id_t2134234",
"amount": 10.5
}
}
Respuesta esperada:
Estado HTTP: 202 Accepted
{
"transaction_id": "payment_provider_transaction_id",
"amount": 10.5,
"currency": "EUR",
"time": "1650629967000",
"success": true,
"message": "Mensaje del proveedor si se proporciona",
"code": "Código del proveedor si se proporciona"
}
Cargo
El cargo (charge) autoriza y captura fondos como una única transacción inmediata. La siguiente solicitud se envía a su componente de integración, que debe manejar la lógica del servicio del proveedor de pagos y devolver una respuesta.
Solicitud enviada por Monetization:
{
"action": "charge",
"content": {
"amount": 25.5,
"currency": "EUR",
"customer": {
"id": "provider_customer_id_34"
},
"credit_card": {
"token": "provider_card_token_x23423532"
}
}
}
Respuesta esperada:
Estado HTTP: 202 Accepted
{
"transaction_id": "payment_provider_transaction_id",
"amount": 25.5,
"currency": "EUR",
"time": "1650629967000",
"success": true,
"message": "Mensaje del proveedor si se proporciona",
"code": "Código del proveedor si se proporciona"
}
Anulación
La operación de anulación (void) anula una transacción de autorización, liberando los fondos autorizados. La siguiente solicitud se envía a su componente de integración, que debe manejar la lógica del servicio del proveedor de pagos y devolver una respuesta.
Solicitud enviada por Monetization:
{
"action": "void",
"content": {
"transaction_id": "provider_transaction_id_t2134234"
}
}
Respuesta esperada:
Estado HTTP: 202 Accepted
{
"transaction_id": "payment_provider_transaction_id",
"time": "1650629967000",
"success": true,
"message": "Mensaje del proveedor si se proporciona",
"code": "Código del proveedor si se proporciona"
}
Reembolso
El reembolso (refund) devuelve fondos al cliente y hace referencia a una transacción de cargo o captura previa. La siguiente solicitud se envía a su componente de integración, que debe manejar la lógica del servicio del proveedor de pagos y devolver una respuesta.
Solicitud enviada por Monetization:
{
"action": "refund",
"content": {
"transaction_id": "provider_transaction_id_t2134234",
"amount": 10.5
}
}
Respuesta esperada:
Estado HTTP: 202 Accepted
{
"transaction_id": "payment_provider_transaction_id",
"amount": 25.5,
"currency": "EUR",
"time": "1650629967000",
"success": true,
"message": "Mensaje del proveedor si se proporciona",
"code": "Código del proveedor si se proporciona"
}
Manejo de errores
En caso de que una operación no sea exitosa en su componente de integración, devuelva cualquier estado fuera del rango 200-300 y el mensaje de error en el cuerpo de la respuesta.