Autenticação
Entenda nosso sistema de autenticação
Autenticação na API Vpay
Nossa API utiliza Client Credentials com tokens de acesso para autenticar todas as requisições.
Fluxo de Autenticação
mermaid
sequenceDiagram
participant Cliente
participant API Pública
participant API Privada
Cliente->>API Pública: 1. POST /auth/token (client_id + secret)
API Pública->>API Privada: 2. Valida credenciais
API Privada-->>API Pública: 3. Retorna token
API Pública-->>Cliente: 4. Access Token + Refresh Token
Cliente->>API Pública: 5. Requisições com Bearer TokenObtendo Credenciais
Antes de começar, você precisa de:
- Client ID: Identificador único da sua aplicação
- Client Secret: Chave secreta para gerar tokens
Como obter:
- Acesse o Dashboard Vpay
- Vá em Configurações > API Keys
- Clique em Gerar Nova Chave
- Guarde o Client Secret em local seguro (não será mostrado novamente!)

Gerando Token de Acesso
Endpoint
http
POST https://api.vpay.co.mz/api/auth/token
Content-Type: application/jsonParâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
client_id | string | Sim | ID do cliente fornecido no dashboard |
client_secret | string | Sim | Segredo do cliente |
Exemplo de Requisição
bash
curl -X POST https://api.vpay.co.mz/api/auth/token \
-H ,[object Object], \
-d ,[object Object],javascript
[object Object],
,[object Object], response = ,[object Object], ,[object Object],(,[object Object],, {
,[object Object],: ,[object Object],,
,[object Object],: { ,[object Object],: ,[object Object], },
,[object Object],: ,[object Object],.,[object Object],({
,[object Object],: ,[object Object],,
,[object Object],: ,[object Object],
})
});
,[object Object], data = ,[object Object], response.,[object Object],();
,[object Object],.,[object Object],(data);python
[object Object],
,[object Object], requests
response = requests.post(
,[object Object],,
json={
,[object Object],: ,[object Object],,
,[object Object],: ,[object Object],
}
)
,[object Object],(response.json())Resposta de Sucesso
json
[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],[object Object], ,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],
,[object Object],Resposta de Erro
json
[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],
,[object Object],Usando o Token
Inclua o token em todas as requisições subsequentes:
http
GET https://api.vpay.co.mz/api/v1/payments
Authorization: Bearer 31d8268ddd45b393c3e5a66c3fa95e05421c8b72580feed763fa26e99f8aea22Refresh Token
Quando o token expirar (após 1 hora), use o refresh token para obter um novo:
Endpoint
http
POST https://api.vpay.co.mz/api/auth/token/refresh
Content-Type: application/jsonRequisição
json
[object Object],
,[object Object],[object Object], ,[object Object],
,[object Object],Resposta
json
[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],
,[object Object],[object Object], ,[object Object],[object Object],[object Object], ,[object Object],[object Object],
,[object Object],
,[object Object],Revogando Tokens
Para revogar um token (logout):
Endpoint
http
POST https://api.vpay.co.mz/api/auth/token/revoke
Authorization: Bearer seu_token_atual
Content-Type: application/jsonRequisição
json
[object Object],
,[object Object],[object Object], ,[object Object],
,[object Object],Boas Práticas
1. Segurança do Client Secret
- Nunca compartilhe seu client secret
- Não armazene em código fonte
- Use variáveis de ambiente
- Rotacione secrets periodicamente
2. Armazenamento de Tokens
- Guarde tokens com segurança
- Implemente refresh automático
- Limpe tokens expirados
3. Tratamento de Erros
| Código | Erro | Descrição |
|---|---|---|
| 400 | invalid_request | Parâmetros inválidos |
| 401 | CLIENT_INVALIDO | Credenciais incorretas |
| 401 | TOKEN_EXPIRADO | Token expirado |
| 401 | TOKEN_REVOGADO | Token foi revogado |
| 403 | CLIENT_INATIVO | Cliente desativado |
| 429 | muitas_requisicoes | Rate limit excedido |
Limites
- Tokens ativos: Até 5 tokens simultâneos por cliente
- Expiração: 1 hora (access token)
- Refresh token: Válido até ser revogado
- Rate limit: 100 requisições por minuto por IP
Próximos Passos
Agora que você tem seu token, explore:
Código de Exemplo Completo
javascript
[object Object],
,[object Object], ,[object Object], {
,[object Object],(,[object Object],) {
,[object Object],.,[object Object], = clientId;
,[object Object],.,[object Object], = clientSecret;
,[object Object],.,[object Object], = ,[object Object],;
,[object Object],.,[object Object], = ,[object Object],;
,[object Object],.,[object Object], = ,[object Object],;
}
,[object Object], ,[object Object],(,[object Object],) {
,[object Object], response = ,[object Object], ,[object Object],(,[object Object],, {
,[object Object],: ,[object Object],,
,[object Object],: { ,[object Object],: ,[object Object], },
,[object Object],: ,[object Object],.,[object Object],({
,[object Object],: ,[object Object],.,[object Object],,
,[object Object],: ,[object Object],.,[object Object],
})
});
,[object Object], data = ,[object Object], response.,[object Object],();
,[object Object], (data.,[object Object],) {
,[object Object],.,[object Object], = data.,[object Object],.,[object Object],;
,[object Object],.,[object Object], = data.,[object Object],.,[object Object],;
,[object Object],.,[object Object], = ,[object Object],.,[object Object],() + (data.,[object Object],.,[object Object], * ,[object Object],);
}
,[object Object], data;
}
,[object Object], ,[object Object],(,[object Object],) {
,[object Object], (!,[object Object],.,[object Object], || ,[object Object],.,[object Object],() >= ,[object Object],.,[object Object],) {
,[object Object], ,[object Object],.,[object Object],();
}
,[object Object], response = ,[object Object], ,[object Object],(,[object Object],, {
...options,
,[object Object],: {
...options.,[object Object],,
,[object Object],: ,[object Object],,
,[object Object],: ,[object Object],
}
});
,[object Object], response.,[object Object],();
}
,[object Object], ,[object Object],(,[object Object],) {
,[object Object], response = ,[object Object], ,[object Object],(,[object Object],, {
,[object Object],: ,[object Object],,
,[object Object],: { ,[object Object],: ,[object Object], },
,[object Object],: ,[object Object],.,[object Object],({ ,[object Object],: ,[object Object],.,[object Object], })
});
,[object Object], data = ,[object Object], response.,[object Object],();
,[object Object], (data.,[object Object],) {
,[object Object],.,[object Object], = data.,[object Object],.,[object Object],;
,[object Object],.,[object Object], = ,[object Object],.,[object Object],() + (data.,[object Object],.,[object Object], * ,[object Object],);
}
,[object Object], data;
}
}
,[object Object],
,[object Object], client = ,[object Object], ,[object Object],(
,[object Object],,
,[object Object],
);
,[object Object], client.,[object Object],();
,[object Object], payments = ,[object Object], client.,[object Object],(,[object Object],);Suporte
Precisa de ajuda?