Esta notificación se envía al paymentWebhook cuando se procesa el cobro de una cuota mediante tarjeta de crédito/débito/prepago (OneClick / Webpay Plus / Getnet Click / Web Checkout).
Pago exitoso
Cuando el cobro es aprobado, installment.state.id = 2 y el objeto payment contiene el detalle completo de la transacción autorizada.
Payload de ejemplo
{
"businessPartner": {
"businessPartnerId": "2",
"identificationDocument": {
"documentType": "RUT",
"documentNumber": 77209349,
"verificationNumber": "7"
}
},
"customer": {
"userId": "19000",
"identificationDocument": {
"documentType": "RUT",
"documentNumber": 20296421,
"verificationNumber": "4"
},
"internalUserId": 1527
},
"product": {
"type": "MANDATE",
"internalId": 3573,
"id": "153",
"serviceId": "2Z3573ZM"
},
"installment": {
"state": {
"id": 2,
"name": "PAGADA"
},
"dateTime": "2024-04-11T14:41:28.323Z",
"internalId": 20720,
"id": "884",
"amount": 100,
"metadata": {
"f_installmentsNumber": 1,
"f_mainPurchaseOrder": "281042252",
"f_acquirerProductName": "ONECLICK",
"f_internalCardId": "527"
},
"installmentDueDate": "2024-02-14",
"description": "Transacción Aprobada",
"currency": {
"id": 1,
"name": "PESOS"
}
},
"payment": {
"method": {
"card": {
"last4digits": "6623",
"brand": {
"id": 2,
"name": "VISA"
}
},
"description": "TARJETA DE CRÉDITO",
"id": 3
},
"convert": {
"date": "2024-02-14",
"amount": 1,
"currency": {
"id": 1,
"name": "PESOS"
}
},
"dateTime": "2024-04-11T14:41:25",
"amount": 100,
"authorizationCode": "1213",
"id": "281042252"
},
"signature": "rb/U787G7TAVHSr1kb2FNDx1AGmiGRXYuWt2MkeaBsk="
}Descripción de campos
installment
installment| Campo | Tipo | Descripción |
|---|---|---|
state.id | number | Estado de la cuota (2 = Pagada, -99 = Rechazada, 9 = En Proceso) |
state.name | string | Nombre del estado (podría variar) |
internalId | number | ID interno de la cuota en Forpay |
id | string | ID externo de la cuota (definido por el comercio) |
amount | number | Monto de la cuota |
currency.id | number | Moneda (1 = CLP, 2 = UF) |
currency.name | string | Nombre de la moneda (podría variar) |
installmentDueDate | string | Fecha de vencimiento de la cuota (YYYY-MM-DD) |
description | string | Descripción del resultado del cobro (podría variar) |
dateTime | string | Fecha y hora del procesamiento |
metadata | object | Datos adicionales del cobro |
Campos metadata en pagos de tarjeta
metadata en pagos de tarjeta| Clave | Descripción |
|---|---|
f_installmentsNumber | Número de cuotas en que se dividió el cobro en la tarjeta |
f_mainPurchaseOrder | Orden de compra principal del procesador |
f_acquirerProductName | Producto del adquirente (ej. "ONECLICK") (podría variar) |
f_internalCardId | ID interno de la tarjeta registrada en Oneclick |
payment
payment| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID de la transacción en el procesador |
authorizationCode | string | Código de autorización del banco |
amount | number | Monto cobrado |
dateTime | string | Fecha y hora exacta del cobro |
method.id | number | Método de pago (3 = Crédito, 4 = Débito) |
method.description | string | Descripción del método (podría variar) |
method.card.last4digits | string | Últimos 4 dígitos de la tarjeta |
method.card.brand.name | string | Marca de la tarjeta (podría variar) |
convert.date | string | Fecha de conversión de moneda |
convert.amount | number | Factor de conversión (1 para Pesos) |
convert.currency | object | Moneda base de la conversión |
Pago rechazado
Cuando el cobro es rechazado, installment.state.id = -99 y no se incluye el objeto payment en el payload.
{
"product": { "type": "MANDATE", "internalId": 3573, "id": "153", "serviceId": "2Z3573ZM" },
"installment": {
"state": { "id": -99, "name": "RECHAZADA" },
"internalId": 20720,
"id": "884",
"amount": 100,
"description": "Límites Oneclick, máximo monto de pago excedido",
"currency": { "id": 1, "name": "PESOS" }
},
"signature": "rb/U787G7TAVHSr1kb2FNDx1AGmiGRXYuWt2MkeaBsk="
}Nota HMAC
Cuando el objetopaymentesté presente, concatenapayment.id,payment.authorizationCode,payment.amountypayment.dateTimedespués de los campos base. Esto también aplica a una notificación REVERSADA (12) que incluyapayment. Cuando el objeto esté ausente, utiliza solo los campos base. Elimina todos los caracteres de espacio en blanco del texto concatenado antes de calcular el HMAC. Ver Verificación HMAC.

