Skip to content

Autenticação e autorização

Qual credencial usar?

Preciso instalar o app numa loja → use credenciais do APP (obtidas no painel do desenvolvedor). Endpoints: /app/authorize, /app/client/generate.

Preciso criar cliente, pedido ou pagamento → use credenciais do MERCHANT (retornadas ao final da instalação). Endpoints: /v1/customers, /v1/orders, /v1/payments/*.

Não sei qual usar → já tem um merchant que instalou seu app? Se sim, use as do merchant. Se não, siga o fluxo de instalação primeiro para obtê-las.

Entendendo as credenciais

A API da Appmax utiliza dois pares de credenciais (client_id e client_secret). Ambos têm o mesmo formato, mas finalidades completamente diferentes. Confundir os dois é a causa mais comum de erros de integração.

Credenciais do aplicativo (app credentials)

CampoDescrição
client_idIdentificador do seu aplicativo na Appstore
client_secretChave secreta do aplicativo
Obtidas emPainel do desenvolvedor, ao criar o aplicativo
EscopoApenas fluxo de instalação (/app/authorize, /app/client/generate)
ValidadePermanentes (enquanto o app existir)

DANGER

As credenciais do aplicativo não permitem criar clientes, pedidos ou pagamentos. Se você receber erro 401 ao chamar a API transacional, provavelmente está usando as credenciais erradas.

Credenciais do merchant (merchant credentials)

CampoDescrição
client_idIdentificador único da instalação do app naquela loja
client_secretChave secreta da instalação
Obtidas emRetornadas ao final do fluxo de instalação (/app/client/generate)
EscopoOperações transacionais: clientes, pedidos, pagamentos, estornos
ValidadePermanentes (até o app ser desinstalado pelo merchant)

TIP

Para cada merchant que instala seu app, você recebe um par de credenciais diferente. Armazene-as de forma segura associadas ao merchant correspondente.

Comparação rápida

AspectoCredenciais do appCredenciais do merchant
Quando são geradasAo criar o app no painelAo final do fluxo de instalação
Quantas existem1 par por app1 par por merchant que instalou o app
O que permitem fazerIniciar instalação, gerar credenciaisCriar clientes, pedidos, pagamentos
Endpoint de autenticaçãoPOST /oauth2/tokenPOST /oauth2/token (mesmo endpoint)
ExpiramNãoNão (até desinstalação)
Token gerado expira em1 hora1 hora

WARNING

Ambas usam o mesmo endpoint (https://auth.appmax.com.br/oauth2/token) com o mesmo formato de requisição. A única diferença é qual client_id e client_secret você envia. O token retornado terá permissões diferentes conforme a credencial usada.

Fluxo visual

Erros comuns com credenciais

ErroCausa provávelSolução
401 ao criar cliente/pedidoUsando credenciais do app em vez do merchantUse as credenciais retornadas por /app/client/generate
401 ao chamar /app/authorizeUsando credenciais do merchant em vez do appUse as credenciais do painel do desenvolvedor
500 ao chamar /app/client/generateFluxo de instalação incompleto (faltou redirect)Siga as 4 etapas do fluxo de instalação na ordem
401 token expiradoToken JWT com mais de 1 horaGere um novo token com as mesmas credenciais
403 em /oauth2/tokenEndpoint errado (usando URL da API em vez de auth)Use https://auth.appmax.com.br/oauth2/token

Por que não utilizamos refresh tokens?

A API adota um modelo de autenticação sem refresh tokens. Essa decisão baseia-se na arquitetura de comunicação server-to-server.

Motivos detalhados
  1. Natureza server-to-server: a comunicação ocorre diretamente entre servidores, em ambientes controlados e seguros. Isso reduz a necessidade de mecanismos adicionais para renovação de tokens.

  2. Segurança e simplicidade: tokens de curta duração (1 hora) limitam a janela de uso. Em ambientes server-to-server, onde credenciais são armazenadas de forma segura, essa abordagem simplifica o gerenciamento.

  3. Redução de complexidade: elimina o armazenamento seguro de refresh tokens, rotação de tokens e lógica de renovação.

  4. Conformidade com melhores práticas: em integrações server-to-server, é comum utilizar tokens de acesso curtos com autenticação baseada em chaves.

Obtendo o token

Autenticação

Envie as credenciais do merchant (para operações transacionais) ou do app (para fluxo de instalação).

Token de curta duração

Após a autenticação, um token de acesso de 1 hora é emitido e deve ser usado em todas as requisições subsequentes.

Renovação do token

Quando o token expira, obtenha um novo através do mesmo processo de autenticação inicial.

Exemplo com credenciais do merchant

bash
curl --location 'https://auth.appmax.com.br/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=MERCHANT_CLIENT_ID' \
--data-urlencode 'client_secret=MERCHANT_CLIENT_SECRET'
json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp...",
  "token_type": "Bearer",
  "expires_in": 3600
}

Exemplo com credenciais do app

bash
curl --location 'https://auth.appmax.com.br/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=APP_CLIENT_ID' \
--data-urlencode 'client_secret=APP_CLIENT_SECRET'

WARNING

O client_id e client_secret do merchant nunca são alterados. Só é possível gerar novos realizando novas instalações e desativar os atuais realizando a desinstalação.