Voay
Primeiros Passos
Botões de PagamentoSDK

Recursos Rápidos

Referência da APICollection APIManipulação de AppsComunidade WhatsApp↗Guia YouTube↗FAQ
Autenticação(Polling) Status do PedidoWebhooks

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 Token

Obtendo Credenciais

Antes de começar, você precisa de:

  1. Client ID: Identificador único da sua aplicação
  2. Client Secret: Chave secreta para gerar tokens

Como obter:

  1. Acesse o Dashboard Vpay
  2. Vá em Configurações > API Keys
  3. Clique em Gerar Nova Chave
  4. Guarde o Client Secret em local seguro (não será mostrado novamente!)

Gerar API Keys

Gerando Token de Acesso

Endpoint

http
POST https://api.vpay.co.mz/api/auth/token
Content-Type: application/json

Parâmetros

ParâmetroTipoObrigatórioDescrição
client_idstringSimID do cliente fornecido no dashboard
client_secretstringSimSegredo 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 31d8268ddd45b393c3e5a66c3fa95e05421c8b72580feed763fa26e99f8aea22

Refresh 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/json

Requisiçã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/json

Requisiçã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ódigoErroDescrição
400invalid_requestParâmetros inválidos
401CLIENT_INVALIDOCredenciais incorretas
401TOKEN_EXPIRADOToken expirado
401TOKEN_REVOGADOToken foi revogado
403CLIENT_INATIVOCliente desativado
429muitas_requisicoesRate 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:

  • Fazer seu primeiro pagamento
  • Consultar transações
  • Configurar webhooks

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?

  • FAQ
  • Troubleshooting
  • Email: dev@voidpay.co.mz
  • Discord: Vpay Developers
Anterior
Introdução
Próximo
Primeiros Passos