Skip to main content

IPN

Conceptos Generales

IPN: Instant payment notification (Notificación instantánea de pago).

Cada vez que se intente procesar un pago, Zenrise enviará una notificación del evento para poder recibirla y registrar del lado de su servidor el pago como exitoso o como fallido.

Actualmente enviamos las notificaciones instantáneas de pagos ante los siguientes eventos:

  • Se realiza un pago desde el checkout externo y el mismo es exitoso o falla.
  • Se intenta procesar un pago recurrente de una suscripción y el mismo es exitoso o falla.
  • Se realiza un pago desde una implementación con nuestro sdk-js y el mismo es exitoso o falla.
  • Se autoriza una solicitud de DEBIN.

Importante! Para cualquiera de estos casos, esperamos desde su servidor una respuesta 200 o 201. En caso de recibir cualquier otro código HTTP distinto de 200 o 201, marcaremos esa notificación como errónea y la reintentaremos cada 15 minutos hasta recibir un 200 o 201, con un máximo de 50 intentos, de nuestro lado.

Funcionamiento del IPN

Nuestra IPN envía un payload muy simple con los ids del evento a investigar. La idea es que cuando nuestra IPN llegue a su servidor, este dispare otra consulta a nuestra API para obtener más información del evento.

Este es un ejemplo de payload que recibirá de nuestra IPN

{
"transactionId": "string",
"invoiceId": "long",
"externalReference": "string",
}

transactionId Identificador de la transacción que produjo este pago

invoiceId Identificador del Cupón/Factura que fue pagada (Recordar que las solicitudes de cobros generan Invoice a pagar)

externalReference El id externo de su sistema que fue enviado para esta transacción

Consulta de datos una vez recibido el IPN

Una vez que su servidor recibe nuestra notificación usted sabe que algo pasó con esa transacción, pero le falta información del detalle de la misma. Es por eso que, con los IDs que le proporcionamos, usted podrá realizar la consulta en ese momento o, si de su lado tiene un proceso más largo, puede generar un sistema de colas con nuestras IPN para ir procesando las transacciones en los momentos que a usted le convengan.

El endpoint para realizar la consulta es el siguiente, donde en invoiceId se envía el invoiceId recibido por nuestro IPN

URL : /v1/invoices/transaction/{invoiceId}

Método : GET

Requiere autorización : Sí, ver Autenticación

Respuesta

{
"currency": {
"name": "Peso Argentino",
"id": 1
},
"date": "2020-11-17",
"id": 129213,
"status": {
"id": 2,
"name": "Paid"
},
"description": "SUSCRIPCIÓN MENSUAL - default Plan - NOVIEMBRE/2020",
"organizationId": 37,
"organization": {
"name": "nfiorito",
"id": 37,
"email": null,
"phone": null,
"logo": null
},
"externalReference": "",
"amountRemaining": "0.00",
"firstDueDate": "2020-11-27",
"secondDueDate": "2020-12-12",
"amountDue": "100.00",
"amountPaid": "100.00",
"renderUrl": "https://render.zenrise.io/zen/invoice-pdf/p/57RBdyMGzk",
"transactionResponse": {
"amountPayed": "100.00",
"paymentMethod": "Visa Debito",
"status": "approved",
"message": null,
"estimatedAccreditationDate": "2020-11-20",
"paymentId": 46858
},
"contact": {
"fullName": "CARDETTI, GABRIEL",
"id": 42814,
"document": {
"number": "23376285049",
"documentType": {
"name": "CUIT"
}
},
"username": "cardettigabriel.42814",
"password": "cardettigabriel.42814",
"note": null,
"externalReference": "40572831",
"email": "gabriel@zenrise.io"
},
"payments": [
{
"date": "2020-11-17",
"amount": "100.00",
"paymentStatus": "ACCREDITED",
"paymentMethod": "Visa Debito"
}
]
}

El dato más relevante a revisar es el objeto transactionResponse

"transactionResponse": {
"amountPayed": "100.00",
"paymentMethod": "Visa Debito",
"status": "approved",
"message": null,
"estimatedAccreditationDate": "2020-11-20",
"paymentId": 46858
},

Analizando el mismo tendremos el resultado de la transacción con su status.

Los distintos status que nuestra API maneja para las notificaciones de pago son los siguientes:

StatusDescripción
approvedTransacción aprobada exitosamente.
pendingTransacción pendiente de pago.
rejectedTransacción fallida, el pago no se pudo procesar.
refundedTransacción reembolsada al cliente.
chargebackTransacción revocada, el cliente ha disputado el cargo.

Configuración de URLs a ser notificadas por nuestro IPN

Para configurar tu URL para ser notificada por nuestra IPN, simplemente enviar estos datos:

URL : /v1/ipn

Método : POST

Requiere autorización : Sí

{
"active": true,
"url": "https://url-notificaciones.com/zenrise-ipn"
}