Autenticação e Autorização
A API Transaction utiliza um sistema robusto de autenticação baseado em JWT (JSON Web Tokens) e multi-tenancy para garantir a segurança e isolamento das transações.
Obtendo Credenciais
Pré-requisitos
- Entre em contato com o suporte para obter "client_secret"
Credenciais Necessárias
| Credencial | Descrição | Obrigatório |
|---|---|---|
client_id | Identificador único da loja do cliente | Sim |
client_secret | Chave secreta de autenticação da loja do cliente | Sim |
Ambientes Disponíveis
- Produção
https://transaction.cartwavehub.com.br
Processo de Autenticação
1. Obter Token de Acesso
- cURL
- JavaScript
- Python
curl --location 'https://transaction.cartwavehub.com.br/auth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=seu-client-id' \
--data-urlencode 'client_secret=seu-client-secret' \
--data-urlencode 'grant_type=client_credentials'
const response = await fetch('https://transaction.cartwavehub.com.br/auth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
client_id: 'seu-client-id',
client_secret: 'seu-client-secret',
grant_type: 'client_credentials'
})
});
const { access_token, expires_in } = await response.json();
import requests
response = requests.post(
f"{BASE_URL}/auth/token",
headers={'Content-Type': 'application/x-www-form-urlencoded'},
data={
'client_id': 'seu-client-id',
'client_secret': 'seu-client-secret',
'grant_type': 'client_credentials'
}
)
token_data = response.json()
Resposta de Sucesso
{
"access_token": "eyJhbGci...",
"expires_in": 1759845450,
"refresh_expires_in": 0,
"token_type": "Bearer",
"not-before-policy": 0,
"scope": "profile,email",
"expires_in_sec": 300
}
| Campo | Tipo | Descrição |
|---|---|---|
access_token | string | Token JWT para autenticação |
expires_in | number | Unix timestamp de quando o token expira |
refresh_expires_in | number | Tempo de expiração do refresh token |
token_type | string | Tipo do token (sempre "Bearer") |
not-before-policy | number | Política de não usar antes |
scope | string | Escopos de acesso do token |
expires_in_sec | number | Tempo de vida do token em segundos |
2. Usar o Token nas Requisições
Para todas as requisições à API, inclua o token JWT no header Authorization.
- cURL
- JavaScript
- Python
curl --location 'https://transaction.cartwavehub.com.br/transaction' \
--header 'Authorization: Bearer seu-token-jwt' \
--header 'Content-Type: application/json' \
--data '{
// seu payload aqui
}'
const response = await fetch('https://transaction.cartwavehub.com.br/transaction', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
// seu payload aqui
})
});
response = requests.post(
f"{BASE_URL}/transaction",
headers={
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
},
json={
# seu payload aqui
}
)
Tratamento de Erros
| Código | Descrição |
|---|---|
| 401 | Credenciais inválidos |
| 400 | Credenciais mal formatados |
Boas Práticas de Segurança
-
Gerenciamento de Tokens
- Armazene tokens de forma segura
- Renove antes da expiração
- Nunca exponha client_secret
-
Headers de Segurança
- Use HTTPS em produção
- Implemente rate limiting
- Valide autenticação em todas as requisições
-
Monitoramento
- Registre tentativas de acesso
- Monitore padrões suspeitos
- Configure alertas
Checklist de Implementação
- Obter credenciais (client_id e client_secret)
- Implementar fluxo de obtenção de token
- Configurar renovação automática de token
- Implementar headers de autenticação