Autorizacao

Metodos protegidos da API exigem autorizacao com assinatura HMAC-SHA256.

Required headers

Cada requisicao deve incluir tres headers obrigatorios:

X-Timestamp
Unix timestamp em segundos
X-Signature
Assinatura HMAC-SHA256 da requisicao em formato hex
X-Client-Id
Seu ID de merchant

Signature generation

A assinatura e gerada a partir do timestamp e do corpo da requisicao.

Formato:

{timestamp}.{canonicalBody}

Format description

timestamp
Hora Unix atual em segundos
canonicalBody
Corpo JSON convertido para formato canonico

Algoritmo de assinatura:

  • Obtenha a hora Unix atual em segundos
  • Obtenha o corpo da requisicao
  • Converta JSON para formato canonico
  • Monte a string: timestamp + "." + canonicalBody
  • Assine a string com HMAC-SHA256 usando api_secret
  • Envie o timestamp e a assinatura nos headers

Requisitos importantes:

  • api_secret nao deve ser enviado na requisicao
  • api_secret deve ser armazenado apenas no servidor do merchant
  • A assinatura deve ser calculada separadamente para cada requisicao
  • X-Timestamp deve corresponder ao momento em que a assinatura foi gerada
  • O corpo enviado para a API deve corresponder exatamente ao corpo usado no calculo da assinatura
  • Para requisicoes sem corpo, assine uma string neste formato: {timestamp}

Exemplos:

Authorization errors

401 Invalid X-Timestamp

{
  "status": 401,
  "message": "Invalid X-Timestamp"
}

401 Expired X-Timestamp

{
  "status": 401,
  "message": "Expired X-Timestamp"
}

401 Invalid X-Signature

{
  "status": 401,
  "message": "Invalid X-Signature"
}

401 Invalid token

{
  "status": 401,
  "message": "Invalid token"
}

401 Merchant secret not configured

{
  "status": 401,
  "message": "Merchant secret not configured"
}

500 Internal Server Error

{
  "status": 500,
  "message": "Internal Server Error"
}