Notificación Instantánea de Pago V2 (IPN)

¿Qué es IPN?

Instant Payment Notification (IPN) traducido al español sería Notificación Instantánea de Pago, es un servicio de mensaje que te notifica de eventos relacionados a transacciones de Paygol. Puedes usarlo para automatizar el back-office y las funciones administrativas, tales como completar órdenes, actualizar membresía, rastreo de clientes, y proveer el estado y otra información relacionada a la transacción.

 

Información acerca del pago

Paygol realiza una llamada GET/POST a la URL de tu servicio IPN previamente configurado en cuanto tu cliente completa la transacción. Puedes usar esta notificación para finalizar y completar las órdenes, habilitar la descarga de material digital, información de la tienda en un CRM o en el sistema de contabilidad, etc.

 

¿Cómo recibir la información desde el IPN en mi página web?

Paygol provee ejemplos de código IPN para ambientes de desarrollo populares. Para archivos IPN personalizados, puedes utilizar el siguiente ejemplo como punto de inicio.

 
Ejemplo de implementación

<?php 

use Paygol\Notification;

/**
 * Merchant service ID
 *
 * @var int
 */
$service_id = "123";
/**
 * Merchant shared secret
 *
 * @var string
 */
$shared_secret = "7c1a6a24-7943-102d-92f8-29573711ad31";

$ipn = new Notification($service_id, $shared_secret);

try {
    $ipn->validate();

    $params = $ipn->getParams();

    var_dump($params);
    
    // do something

    // Confirm reception
    $ipn->sendResponse(['OK'], 200);
} catch (\Exception $e) {
    $ipn->sendResponse(['error' => 'Validation error'], 400);
}

La petición anterior devuelve un objeto JSON estructurado de la siguiente manera:

{
  "country": "ES",
  "currency": "USD",
  "custom": "Producto 1 - Producto 2 - Producto 3",
  "method": "teleingreso",
  "price": "10.00",
  "service_id": "123",
  "status": "completed",
  "transaction_id": "ZISS-A7Q8-RE2Z-S73W"
}

 

Manejo de notificaciones

El manejo correcto de las notificaciones es crucial para asegurarse de que la lógica de negocios de su integración funcione como se espera.

 

Confirmación de las notificaciones

Si su script de notificaciones ejecuta una lógica muy compleja o realiza llamadas a la red, es posible que el tiempo de espera se agote antes de que Paygol reciba la confirmación de recepción. Idealmente, su código que maneja la recepción de notificaciones (acusando recibo con código de estado 2xx) sea independiente de cualquier otra lógica.

 

Manejo de notificaciones duplicadas

Los endpoints de notificaciones pueden recibir en ocasiones la misma notificación más de una vez. Es por eso que recomendamos que evite recibos de notificaciones duplicados haciendo que su procesamiento de eventos sea idempotente.