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 generaració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 Python#
Envio único de transacciónA continuación se presenta un ejemplo en lenguaje Python donde se genera una hash HMAC para el endpoint que permite añadir una transferencia bancaria. En este caso múltiples parámetros son necesarios en body que deben ser considerados en la generación del hash por request.
#
Transacción en bultoA continuación se presenta un ejemplo en lenguaje Python donde se genera una hash HMAC para el endpoint que permite añadir transferencias bancarias en bulto. En este caso múltiples parámetros son necesarios en body que deben ser considerados en la generación del hash por request.