Autorización y cálculo de Signature
Última actualización
Última actualización
Nuestra API de Depósitos usa las Credenciales para autenticar todas las llamadas. Podrán encontrar sus credenciales en el Panel Tupay, desde Settings -> API Access.
Las Credenciales de los ambientes de STG y Producción son diferentes.
Básicamente, hay dos juegos de credenciales:
Un juego de Credenciales para llamadas del tipo POST, que contiene una API Key y una API Signature.
Un juego de Credenciales read-only, que contiene una API Key.
La Autenticación para la API es hecha vía HTTP Basic Auth. Se debe enviar la API Key en todos las llamadas como autenticación básica del valor username. No se requiere proveer una contraseña.
La API Key debe ser enviada en todas las llamadas a la API usando el campo X-Login en los encabezados del request.
Encabezado | Formato | Obligatorio | Descripción |
---|---|---|---|
Todas las llamadas a nuestra API de Depósitos debe contener el campo Authorization en el encabezado para asegurar la integridad de la llamada y autenticar las credenciales del Comercio, ya que usaran su propia secret key (también llamada API Signature).
Tiene que ser creada usando codificación HMAC-SHA-256 (RFC 2104) y el contenido debe incluir los siguientes detalles:
Usa tu API Signature para generar el valor Authorization
.
El campo Authorization
en el encabezado de la llamada debe contener el string "D24 " más el hash generado, en el siguiente formato:
Authorization: "D24 " + HMAC256(X-Date + X-Login + JSONPayload)
Ejemplo:
Authorization: D24 223a9dd4784726f1536c926da7dc69155a57612c5c3c1e1b429c367a5eee67cf
Nuestra API soporta Idempotencia para reintentar llamadas de forma segura, evitando realizar la misma operación de forma duplicada por error. Esto resulta útil cuando una llamada a la API es corrompida en tránsito y la respuesta no es recibida. Por ejemplo, si una llamada al Endpoint de Creación de Depósitos no tiene respuesta debido a un error en la conexión de red, puedes reintentar la llamada con la misma Idempotency key para garantizar que no se genere más de un depósito.
Para poder crear una llamada Idempotente se precisa enviar el encabezado X-Idempotency-Key: <key>
con un String generado aleatoriamente.
La Idempotencia funciona guardando el código de estatus y el cuerpo de la primer llamada hecha para cierta Idempotency key, sin importar si falló o tuvo éxito. Llamadas subsecuentes con una misma Idempotency key devolverán el mismo resultado, inclusive errores de HTTP 500
.
Una idempotency key es un valor único generado por un cliente el cual el servidor usa para reconocer llamadas con reintentos subsecuentes de la misma. Cómo se crean las claves únicas depende de usted, pero nosotros sugerimos usar V4 UUIDs, o cualquier otro string aleatorio con entropía suficiente para evitar colisiones.
Todas las llamadas POST
aceptan idempotency keys. Enviar idempotency keys en llamadas GET
y DELETE
no tiene efecto alguno y deberían ser evitadas, ya que estas llamadas son idempotentes por definición.
Nuestra API de Depósitos está diseñada para recibir y responder la información en formato JSON.
Este encabezado no cambiará a lo largo de las llamadas, y siempre será: application/json
Revisa cómo calcular la Signature en los diferentes lenguajes.
Authorization
String
Si
"D24"
más un hash HMAC256 para verificar la integridad de las llamadas.
X-Login
String
Si
Su API Key
X-Date
String
Si
Fecha según el estándar ISO 8601 en el siguiente formato: yyyy-MM-dd'T'HH:mm:ssZ
. E.g.: 2020-06-21T12:33:20Z
Content-Type
String
Si
application/json
X-Idempotency-Key
String
Si
Valor único generado por el cliente que usa el servidor para reconocer reintentos subsecuentes de la misma llamada.