Chaves de API & Modelo de Autenticação
A EDPay utiliza um modelo de chave dupla (Public Key e Private Key). Cada chave tem um propósito técnico e nível de segurança específico e nunca devem ser confundidas.
Para que serve cada chave? (Public Key vs. Private Key)
Cada conta na EDPay possui duas chaves criptográficas distintas para cada ambiente (Sandbox e Produção). Cada token tem uma finalidade estrita:
X-EDPay-Public-Key
pk_live_... ou pk_test_...
Identifica a conta. Só a exponha em componentes client-side quando a documentação do checkout o exigir; chamadas à API de parceiros continuam server-to-server. Esta chave não autoriza cobranças nem movimentações de saldo.
X-EDPay-Private-Key
sk_live_... ou sk_test_...
Use exclusivamente no backend para autenticar pedidos server-to-server. Nunca a exponha no frontend, em HTML ou em repositórios públicos. As permissões disponíveis dependem dos scopes associados à chave.
Autenticação nas Chamadas Server-to-Server
Em cada chamada à API de parceiros, o backend envia ambos os cabeçalhos. A chave pública identifica a conta; a chave privada autentica o pedido. Não use Authorization: Bearer nesta API:
| Cabeçalho HTTP | Onde usar | Exemplo de Valor | Regra de Segurança |
|---|---|---|---|
| X-EDPay-Public-Key | Frontend e Backend | pk_live_... | Pública (não confidencial) |
| X-EDPay-Private-Key | Apenas Backend (Servidor) | sk_live_... | Altamente Secreta / Crítica |
X-EDPay-Public-Key: pk_live_...
X-EDPay-Private-Key: sk_live_...
Content-Type: application/json
Accept: application/jsonPrefixos por Ambiente
Ambiente de Testes (Sandbox)
Prefixos: pk_test_... e sk_test_...
Transações com dados fictícios. Permite testar todo o ciclo de vida da API, webhooks e polling sem débitos reais.
Ambiente Live (Produção)
Prefixos: pk_live_... e sk_live_...
Movimenta fundos reais em Meticais (MZN). As transações são liquidadas na conta bancária no prazo de 2 a 7 dias úteis.
Resposta de Erro de Autenticação (401 Unauthorized)
Se as chaves estiverem ausentes, revogadas ou expiradas, a API rejeita o pedido com código HTTP 401 Unauthorized:
{
"error": {
"code": "unauthorized",
"message": "Invalid, missing, or revoked API keys provided in request headers."
}
}