Gu铆a del Desarrollador - API v2
La API REST de Portal Central te permite conectar aplicaciones externas directamente con nuestro motor centralizado de validaci贸n de transacciones cripto. De esta forma, puedes integrar pagos blockchain y conciliaciones de Binance Pay en tus aplicaciones m贸viles, plataformas de comercio electr贸nico y backends personalizados sin depender de plugins CMS.
Caracter铆sticas Principales
- Aislamiento de Seguridad: Las llaves API y credenciales de Binance Pay se configuran y resuelven en el servidor del Portal Central.
- Firma Criptogr谩fica HMAC: Todas las peticiones viajan firmadas con hash SHA-256 para impedir cualquier falsificaci贸n.
- Ambientes Aislados: Credenciales y colas independientes para modo de pruebas (Sandbox) y modo productivo.
- Notificaciones por Webhook: Recepci贸n as铆ncrona de confirmaci贸n de dep贸sitos mediante webhooks seguros.
Seguridad y Autenticaci贸n HMAC-SHA256
Toda comunicaci贸n entrante a la API v2 es firmada mediante una firma digital sim茅trica utilizando el **Client Secret** obtenido en el panel de control. El secreto nunca debe viajar en la cabecera ni en el cuerpo de la petici贸n.
Cabeceras Requeridas
| Header | Tipo | Descripci贸n |
|---|---|---|
x-hbpv-client-id |
String | El Client ID asignado a tu aplicaci贸n (e.g. cli_...).
|
x-hbpv-ts |
Integer | Timestamp Unix actual en segundos (e.g. 1782390123).
Tolerancia de 300 segundos. |
x-hbpv-nonce |
String | UUID o cadena 煤nica aleatoria por petici贸n para mitigar ataques de repetici贸n. |
x-hbpv-sign |
String | Firma HMAC-SHA256 calculada en formato hexadecimal. |
Esquema de Construcci贸n de Firma
Concatena los siguientes campos exactos con saltos de l铆nea (\n):
StringData = HTTP_METHOD + "\n" + REST_ROUTE + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + SHA256(BODY)
Referencia de Endpoints API v2
Todos los paths de endpoint deben ser concatenados a la URL base de tu portal.
POST Crear Sesi贸n de Checkout (v2 Server-to-Server)
/wp-json/hbpv/v2/checkout/create-session
Genera un token de sesi贸n din谩mico y retorna una checkout_url limpia para procesar compras variables, carritos e integraciones personalizadas.
Cuerpo de Petici贸n (JSON):
{
"order_id": "ORDEN-2026-9901",
"amount": 125.50,
"currency": "USDT",
"customer_email": "comprador@ejemplo.com",
"allowed_methods": ["binance", "multichain"],
"webhook_url": "https://mi-tienda.com/webhook.php",
"redirect_url": "https://mi-tienda.com/order_success.php?order=ORDEN-2026-9901"
}
Respuesta Exitosa (JSON):
{
"ok": true,
"session_token": "sess_8f9a2b3c4d5e6f7a8b9c",
"checkout_url": "https://paywik.io/pay/session/sess_8f9a2b3c4d5e6f7a8b9c",
"amount": 125.50,
"currency": "USDT",
"expires_at": "2026-07-24T18:30:00Z"
}
GET Consultar Redes Habilitadas
/api/mcrv/v2/networks
Retorna la lista de todas las redes blockchain (TRC20, BEP20, etc.) habilitadas globalmente en Portal Central.
Respuesta Exitosa (JSON):
{
"ok": true,
"networks": [
"TRC20",
"BEP20"
]
}
GET Consultar Billeteras del Comercio
/api/mcrv/v2/wallets
Retorna la lista completa de billeteras de destino p煤blicas y redes autorizadas para el comercio. Ideal para no tener que hardcodear billeteras locales en tus integraciones.
Respuesta Exitosa (JSON):
{
"ok": true,
"wallets": [
{
"currency": "USDT",
"network": "BEP20",
"address": "0xfddaddbf6ffdc48abbe099a3507964677337bdda"
}
]
}
POST Crear Validaci贸n Multichain
/api/mcrv/v2/validate
Inicia la validaci贸n on-chain remota de dep贸sitos blockchain.
Cuerpo de Petici贸n (JSON):
order_id* (string): ID de orden interna.client_wallet(string): Billetera del cliente pagador.dest_wallet* (string): Billetera de recepci贸n.currency* (string): Token a validar (ej:USDT,USDC).network* (string): Blockchain (ej:BEP20,TRC20).amount* (float): Monto exacto.
POST Crear Validaci贸n Binance Pay
/api/hbpv/v2/remote/validate
Crea un job de validaci贸n para transacciones C2C por c贸digo de nota.
Cuerpo de Petici贸n (JSON):
order_id* (string): ID de orden interna.note_code(string - Opcional): C贸digo de nota de 6 d铆gitos. Si se omite, se generar谩 de forma autom谩tica y 煤nica.amount* (float): Monto neto.currency* (string): S铆mbolo de moneda.
GET Consultar Estado de Job
/api/mcrv/v2/status/{job_id}
Retorna los datos completos y el estado actual de conciliaci贸n del job.
GET Listar Transacciones / Jobs
/api/hbpv/v2/transactions
Consulta el historial completo de jobs de validaci贸n creados por tu cuenta con soporte para filtros.
(Tambi茅n disponible en /api/mcrv/v2/transactions).
Par谩metros Query (URL Parameters):
type(string): Filtrar por tipo (multichain,binance_personal, oallpor defecto).status(string): Filtrar por estado (donepara aprobadas,failedpara rechazadas,queued,processing, oallpor defecto).environment(string): Filtrar por ambiente (sandbox,production, oallpor defecto).limit(int): Cantidad m谩xima de registros (por defecto20, max100).offset(int): Salto para paginaci贸n (por defecto0).
Webhooks y Notificaciones Outbound
Los webhooks te permiten reaccionar inmediatamente a los cambios de estado sin necesidad de polling. Portal Central despacha un POST HTTP al detectar el fin del flujo.
Payload JSON de Notificaci贸n
{
"event": "job.updated",
"type": "multichain",
"job_id": 1827,
"order_id": "ORDER-10029",
"status": "done",
"amount": 4.00,
"currency": "USDT",
"txid": "0x990645bfddaddbf6ffdc48abbe099a3507964677337bdda",
"matched": true,
"timestamp": 1782390123
}
Ejemplo en PHP (Nativo)
<?php
$clientId = 'cli_a5e9...';
$apiSecret = 'tu_api_secret_segura';
$endpoint = 'https://paywik.io/api/mcrv/v2/validate';
$route = '/mcrv/v2/validate';
$payload = [
'order_id' => 'EX-88910',
'client_wallet' => '0x64573246fC58AA90060318B690526fBcdC15Fa3A',
'dest_wallet' => '0xfddaddbf6ffdc48abbe099a3507964677337bdda',
'currency' => 'USDT',
'network' => 'BEP20',
'amount' => 4.00
];
$jsonBody = json_encode($payload);
$bodyHash = hash('sha256', $jsonBody);
$timestamp = time();
$nonce = bin2hex(random_bytes(8));
$sigData = "POST\n" . $route . "\n" . $timestamp . "\n" . $nonce . "\n" . $bodyHash;
$signature = hash_hmac('sha256', $sigData, $apiSecret);
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
"x-hbpv-client-id: $clientId",
"x-hbpv-ts: $timestamp",
"x-hbpv-nonce: $nonce",
"x-hbpv-sign: $signature"
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
?>
Ejemplo en Node.js
const crypto = require('crypto');
const axios = require('axios');
const clientId = 'cli_a5e9...';
const apiSecret = 'tu_api_secret_segura';
const endpoint = 'https://paywik.io/api/mcrv/v2/validate';
const route = '/mcrv/v2/validate';
const payload = {
order_id: 'EX-88910',
client_wallet: '0x64573246fC58AA90060318B690526fBcdC15Fa3A',
dest_wallet: '0xfddaddbf6ffdc48abbe099a3507964677337bdda',
currency: 'USDT',
network: 'BEP20',
amount: 4.00
};
const jsonBody = JSON.stringify(payload);
const bodyHash = crypto.createHash('sha256').update(jsonBody).digest('hex');
const timestamp = Math.floor(Date.now() / 1000);
const nonce = crypto.randomBytes(8).toString('hex');
const sigData = `POST\n${route}\n${timestamp}\n${nonce}\n${bodyHash}`;
const signature = crypto.createHmac('sha256', apiSecret).update(sigData).digest('hex');
axios.post(endpoint, payload, {
headers: {
'Content-Type': 'application/json',
'x-hbpv-client-id': clientId,
'x-hbpv-ts': timestamp.toString(),
'x-hbpv-nonce': nonce,
'x-hbpv-sign': signature
}
}).then(res => console.log(res.data));