Autentificación y cálculo de Signature

Autentificación

Para autenticarte, nuestra API de retiro utiliza API Keys en todos los requests. Las API Keys se pueden obtener en Configuración -> API -> Retiros.

  • Las API keys entre Staging y Produccion son distintas.

Hay 3 credenciales que necesitara:

  • Tu usuario: API KEY

  • Tu contraseña: API Passphrase

  • Tu clave secreta para generar la signature: API Signature

La autenticación a la API es realizado mediante HTTP Basic Auth. Las API Keys deben estar en todos los requests como el username and password.

Tu usuario y password son enviadas como API KEY y API Passphrase respectivamente en el cuerpo del request.

Las API keys, como las IPs whitelisteadas, son formas de autenticarte, por ende, por favor no compartir las credenciales en ningún ámbito que sea público.

Encabezados

Encabezado

Formato

Obligatorio

Descripción

Payload-Signature

String

Si

HMAC256 del archivo JSON entero, utilizando su API signature

Content-Type

String

Si

application/json

User-Agent

String

Si

Server client user agent

Cálculo de Signature

Todos los requests a nuestra API de retiros deben tener el field Payload-Signature para asegurar la integridad y autenticarse, ya que estarán utilizando su propia API signature (secret key) para generar y encriptar un hash.

Debe ser creado utilizando el encoding HMAC-SHA-256 (RFC 2104) y el payload se basa en toda la JSON Payload enviada en el body del request y notificaciones.

Utilize su API Signature para generar el Hash

El campo Payload-Signature en el header del request contendrá el hash generado, que incluye todo el payload del JSON

Payload-Signature: HMAC256(jsonPayload)

Ejemplo:

Payload-Signature: 223a9dd4784726f1536c926da7dc69155a57612c5c3c1e1b429c367a5eee67cf

Notas
  • LaPayload-Signature distingue mayúsculas y minúsculas (case sensitive)

  • En caso de que el jsonPayload este vacío, utilice un string vacío en vez del jsonPayload

  • El jsonPayload debe ser convertido a UTF-8 antes de convertirlo a hash, para evitar el error Invalid Signature

Ejemplo

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.net.util.Base64;

String json_payload = "{ \"login\": \"cashout_API_Key\", \"pass\": \"cashout_API_Passphrase\",   \"external_id\": \"123456789\",  \"document_id\": \"1234567899\",  \"document_type\": \"\",   \"cashout_type\": \"BANK\", \"beneficiary_name\": \"Test User\", \"beneficiary_lastname\": \"Test User\",  \"country\": \"MX\",  \"amount\": 2000,  \"currency\": \"MXN\",  \"email\": \"test@test.com\", \"notification_url\": \"http:\\/\\/tupaypagos.com\\/notification\",  \"bank_code\": \"072\",\"bank_branch\": \"\",  \"bank_account\": \"1234567890\", \"account_type\": \"C\", \"address\": \"\"}";
String secretKey = "cashout_secret_key";
Mac hasher = Mac.getInstance("HmacSHA256");
hasher.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA256"));
String payload_signature = Base64.encodeBase64String(hasher.doFina

Última actualización