Callback de pago saliente
Las devoluciones de llamada de pago utilizan los mismos encabezados de firma y el mismo mecanismo de reintento que las devoluciones de llamada de pago.
The platform calls back only when a payout reaches the confirmed or failed final state.
Encabezados
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| content-type | application/json | Sí | Siempre aplicación/json. |
| x-callback-timestamp | string | Sí | Devolución de llamada timestamp en milisegundos. |
| x-callback-nonce | string | Sí | Devolución de llamada nonce. |
| x-callback-signature | string | Sí | HMAC-SHA256(apiKey, timestamp + "." + nonce + "." + rawBody)。 |
| x-callback-signature-algorithm | string | Sí | Siempre HMAC-SHA256. |
| x-callback-signature-version | string | Sí | Siempre v1. |
Parámetros
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| merchantUid | string | Sí | Merchant UID. |
| orderNo | string | Sí | Número de orden de pago de la plataforma. |
| merchantOrderNo | string | null | Sí | Número de pedido del comerciante. |
| chainCode | string | Sí | Código de cadena. |
| tokenSymbol | string | Sí | Símbolo simbólico. |
| fromAddress | string | null | Sí | Dirección del remitente. |
| toAddress | string | Sí | Dirección de recepción. |
| txHash | string | null | No | Hachís en cadena. |
| amount | string | Sí | Monto del pago. |
| status | string | Sí | Final payout state: confirmed or failed. |
| failedStage | string | No | Returned only when status=failed. |
Ejemplo de solicitud
{
"merchantUid": "880001",
"orderNo": "PO1776193200A1B2C3D4",
"merchantOrderNo": "PO202604150001",
"chainCode": "TRON",
"tokenSymbol": "USDT",
"fromAddress": "TNjBrNq2a9FK2vwu4W9C1QdLKSZ42Yx5YY",
"toAddress": "TS7b7iD8G2PaPqK1TqSmLJ9nrrYH4oKX1S",
"txHash": "b3d4fb0cb11eb86bb906d1e0ee3b84e17f40d5441d1e4c651ea46920a48a9a01",
"amount": "35.500000",
"status": "confirmed"
}Campos de respuesta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| HTTP Status | 200-299 | Sí | Cualquier respuesta 2xx se considera exitosa. |
| Response Body | string | json | No | La respuesta body se puede personalizar. |
Ejemplo de respuesta
HTTP/1.1 200 OK
Content-Type: text/plain
successEjemplos de código
Ejemplo de controlador exprés
app.post('/merchant/callback', (req, res) => {
if (req.body.status === 'confirmed') {
// Pago exitoso
}
if (req.body.status === 'failed') {
// Pago failed
}
return res.status(200).send('success');
});Notas
- Handle callbacks idempotently by orderNo; only confirmed or failed final states are sent automatically.