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 provider-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 generación de hash :
- Tener credenciales para comunicación con API (Provider Key y Provider Secret). Si no tiene esta información, favor contacte a su ejecutivo comercial.
- Generar timestamp (datetime) el cual se debe mandar como cabecera y también es usado para generar el hash.
- Generar un hash HMAC SHA256 con el Provider Secret como password y como contenido un texto con el siguiente formato
providerKey + '&' + date + '&' + requestMethod + '&' + requestPath + concatenatedParams
donde:- providerKey: Provider 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/payments/provider/
solo se debe utilizar%2Fpayments%2Fprovider%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 Provider Key comoprovider-key
. Adicionalmente mandar todos los parámetros necesarios en el body o url del request dependiendo del caso.
#
Ejemplo PythonA continuación se presenta un ejemplo en lenguaje Python donde se genera una hash HMAC para el endpoint que permite crear órdenes o notificar transacciones. En este caso múltiples parámetros son necesarios en body que deben ser considerados en la generación del hash por request.