Primeira Integração
Aprenda a iniciar a sua primeira cobrança de pagamento na EDPay através de pedidos servidor-a-servidor utilizando credenciais seguras.
1. Obtenha as suas credenciais
No painel da sua conta EDPay, aceda a Definições > Chaves API. Cada conta tem atribuído um par de chaves para o ambiente de testes (pk_test_... / sk_test_...) e outro para o ambiente de produção (pk_live_... / sk_live_...).
A sua Chave Privada deve ser guardada exclusivamente em variáveis de ambiente no seu servidor backend e nunca ser exposta em clientes públicos (navegadores ou apps móveis).
2. Criar uma intenção de pagamento
Para criar um pagamento na EDPay, envie um pedido HTTP POST /v1/payments com o montante e a moeda. O pagamento nasce desacoplado de gateway, gerando uma payment_url pronta a ser liquidada:
/v1/paymentscurl -X POST "https://api-pay.edutecka.com/v1/payments" \
-H "X-EDPay-Public-Key: <PUBLIC_KEY>" \
-H "X-EDPay-Private-Key: <PRIVATE_KEY>" \
-H "Accept: application/json" \
-H "Idempotency-Key: req_8f192b0c-44e2" \
-H "Content-Type: application/json" \
-d '{
"amount": 500,
"currency": "MZN",
"reference": "INV-2026-001",
"customer": {
"name": "Carlos Macuácua",
"email": "[email protected]"
}
}'3. Resposta da API & Ação Final
A API responde com o status requires_payment_method e a payment_url. Pode redirecionar o cliente para a página hospedada da EDPay para ele escolher o método de pagamento (carteiras móveis, cartões, transferências) ou liquidar diretamente via API headless.
{
"success": true,
"data": {
"id": "pay_c0a8010a-8bf3-4621-a7ee-5488cba88091",
"amount": 500,
"currency": "MZN",
"status": "requires_payment_method",
"reference": "INV-2026-001",
"payment_url": "https://pay.edutecka.com/pay?payment=pay_c0a8010a-8bf3-4621-a7ee-5488cba88091",
"created_at": "2026-11-07T12:00:00Z"
}
}Autorização por carteira móvel
Quando o método escolhido iniciar uma autorização por USSD Push, o pedido de confirmação aparece no telemóvel do cliente. A janela de confirmação do PIN é de até 60 segundos. O cliente conclui a autorização no próprio telemóvel; a sua aplicação não deve recolher o PIN.
A criação do pagamento é assíncrona. HTTP 202 indica que o pedido foi aceite para processamento, não que foi pago. Confirme o estado por consulta server-to-server ou webhook; não considere o pagamento expirado com base num prazo global fixo.
4. Próximos passos
- Configure um endpoint de Webhooks para receber actualizações instantâneas sobre a confirmação da transacção.
- Implemente o cabeçalho Idempotency-Key para evitar cobranças duplicadas em caso de reconexões ou timeouts de rede.