Autenticación HMAC
La API de PAGO46 utiliza autenticación HMAC como protocolo de seguridad entre la comunicación de clientes y la API. El protocolo HMAC consiste en crear un hash basado en cierta información y debe ser generado para cada request y enviado con el mismo. Cada request a la API P46 debe enviar los parámetros merchant-key
, message-hash
y message-date
como cabecera. Estos parámetros se generan basado en la información del request, por ende, cada hash es único por request y no debe ser reutilizado por otros request futuros porque no será válido.
#
Generación de HashPasos para generar el hash:
- Tener credenciales para comunicación con API (Merchant Key y Merchant Secret). Si no tiene esta información, favor contacte a su ejecutivo comercial.
- Generar timestamp (date) el cual se debe mandar como cabecera y también es usado para generar el hash.
- Generar un hash HMAC SHA256 con el Merchant Secret como password y como contenido un texto con el siguiente formato
merchantKey + '&' + date + '&' + requestMethod + '&' + requestPath + concatenatedParams
donde:- merchantKey: Merchant Key
- date: Unix Timestamp en milisegundos generado previamente (13 dígitos). El mismo valor deberá adjuntarse posteriormente como cabecera
message-date
. - requestMethod: GET, POST, PUT o DELETE dependiendo del caso.
- requestPath: Solo path de la URL, encodeada (URL Encoded) a la cual se hará el request. Ejemplo: Si la url es
https://api.pago46.io/merchant/orders/
solo se debe utilizar%2Fmerchant%2Forders%2F
. - concatenatedParams: Todos los parámetros necesarios a enviar (no cabeceras) concatenados en formato URL alfabéticamente por key y el valor con URL Encoded.
- Adjuntar hash resultando como cabecera
message-hash
también el Unix timestamp utilizado para el hash comomessage-date
y el Merchant Key comomerchant-key
. Adicionalmente mandar toda los parámetros necesarios en el body o url del request dependiendo del caso.
#
Ejemplo Javascript / NodeJSA continuación se presenta un ejemplo en lenguaje Javascript donde se genera una hash HMAC para el endpoint que permite crear órdenes. En este caso múltiples parámetros son necesarios en body que deben ser considerados en la generación del hash por request.