Notificación

Este es el proceso de notificación que utiliza payvalida para notificar el pago o la expiración de una orden creada.

Para esta etapa del proceso de integración el comercio debe construir un servicio REST que sera consumido por Payvalida para realizar el proceso de notificación. Este una vez construido se debe comunicar a Payvalida para que se realice el registro de la url de dicho servicio.

Al momento de registrar una orden, ésta se crea en estado PENDIENTE. La orden puede cambiar de estado por diversas razones:

  1. Se ha recibido el pago correspondiente -> Cambia de PENDIENTE a APROBADA y se notifica con estatus approved.

  2. No se ha recibido el pago correspondiente antes de la fecha de vencimiento -> Cambia de PENDIENTE a VENCIDA y se notifica con estatus cancelled.

  3. El comercio elimina la orden (usando el API) -> Cambia de PENDIENTE a CANCELADA. No se notifica

  4. El cliente realiza un reclamo de devolución del pago realizado -> Cambia de APROBADA a ANULADA y se notifica con estatus cancelled.

  5. El comercio solicita devolución del pago de un cliente -> Cambia de APROBADA a ANULADA, no se notifica.

El sistema notifica de forma automática en el momento del cambio de estado de la orden, pero es posible que exista más de una notificación de la misma orden. Es responsabilidad del comercio evitar entregar mas de una vez el producto adquirido por el cliente en caso de que haya más de una notificación.

Esta notificación se realizara a la URL proporcionada por el comercio.

Request (Realiza Payvalida)
Request (ejemplo)
Respuesta (Esperada)
Cabeceras
Request (Realiza Payvalida)

Campo

Tipo

Descripción

pv_po_id

int

Identificación de la orden de Payvalida

po_id

String

Identificación de la orden del comercio

status

String

Estado de la orden. Puede ser approved o cancelled.

pv_checksum

String

Cadena de comprobación calculada con SHA256(po_id + status + FIXED_HASH_NOTIFICACION)

amount

String

Monto de la orden

iso_currency

String

Moneda con la que se registra la orden

pv_payment

String

Medio de pago con el que se registra la orden

Request (ejemplo)
curl --location --request POST 'https://url-comercio.com/notificacion/payvalida' \
--header 'Content-Type: application/json' \
--data-raw '{
"pv_po_id":1934480,
"po_id":"999999991",
"status":"approved",
"pv_checksum":"0C08309AE28D15E8D337344E88668E2047947F653B126B7F62B0EACC4B1A30FD680DBE25BD8B38413032A219B86BDAE52D9554D45A892CA4B5C5103597876EAD",
"amount":"10500.0",
"iso_currency":"COP",
"pv_payment":"PSE"
}'

Respuesta (Esperada)
//Para este caso se puede responder en el body con texto claro y el mensaje
OK
//Adicionalmente se puede responder en el body una estructura json
{"status":"OK"}
Cabeceras

Cabecera

Valor

Content-Type

application/json

De lado del comercio por motivos de seguridad se recomienda hacer la construcción del pv_checksum con la credencial FIXED_HASH_NOTIFICACION entregada en el registro. Para validar que sea payvalida la que realiza la notificación al compararlas.

El sistema registra la respuesta obtenida al momento de la notificación, por ello es recomendable enviar como respuesta un texto adecuado al proceso de notificación, por ejemplo, OK en caso afirmativo y ERROR en caso contrario, también se recomienda acompañar la respuesta de una breve descripción, como por ejemplo: “OK. Pago registrado”, “ERROR. Orden no reconocida”.