POST /checkout/order-api-gateway

Em produtos API Gateway o preço é definido em cada pedido. A Zenofy devolve um URL de checkout; o comprador paga em pay.zenofy.io. Os webhooks configuram-se no produto, não no corpo da API.

URL base: o host da API Zenofy (por exemplo https://api.zenofy.io). Caminho: <code>/checkout/order-api-gateway</code> (POST).

Use a mesma chave de API de checkout dos outros endpoints (app comerciante → Definições → Chave de API de checkout). Cabeçalho: <code>Api-Key</code> (texto simples, não Bearer).

O produto tem de ser do tipo API payment gateway, pertencer à sua conta, ter URL de webhook guardado no produto e estar activo. Não há página pública do produto — checkout só via API.

Configuração do produto (painel)

Crie um produto e escolha API payment gateway. Na secção de webhook indique o URL do webhook (obrigatório) e o Segredo do webhook opcional para HMAC. Active os métodos de pagamento no produto. Valor e moeda variam em cada chamada à API.

Autenticação

Cabeçalho Api-Key: o segredo completo da API de checkout. Chave em falta ou inválida devolve HTTP 401.

Pedido HTTP

POST · Content-Type: application/json · Api-Key

Exemplo de pedido (ilustrativo)

POST /checkout/order-api-gateway HTTP/1.1
Host: api.zenofy.io
Api-Key: YOUR_CHECKOUT_API_KEY
Content-Type: application/json

{ ... }

Corpo JSON (campos)

CampoTipoNotas
productIdstringObrigatório. Id do produto API Gateway.
amountintegerObrigatório. Valor em unidades menores (ex.: 2500 = 25,00).
currencystringOpcional. ISO 4217 (3 letras). Por omissão, moeda principal do produto.
referencestringOpcional. O seu id (guardado na encomenda; repetido em webhooks).
descriptionstringOpcional. Descrição no checkout; por omissão, nome do produto.
customerobjectObrigatório. name, email, phone (E.164, ex. +258840000000).
payment_methodsarrayOpcional. Alias: card, mpesa, emola, emis, payfast, stripe, flutterwave. Omitir para todos os gateways activos no produto.
success_urlstringOpcional. HTTPS após pagamento. Usado exactamente como envia (inclua a query string que precisar).
cancel_urlstringOpcional. HTTPS para o botão Cancelar. Usado exactamente como envia.
languagestringOpcional. Idioma do checkout (ex. en, pt).

Exemplo de corpo JSON

{
  "productId": "507f1f77bcf86cd799439011",
  "amount": 2500,
  "currency": "MZN",
  "reference": "inv-2026-0042",
  "description": "Pro plan — March 2026",
  "customer": {
    "name": "João Silva",
    "email": "buyer@example.com",
    "phone": "+258840000000"
  },
  "payment_methods": ["mpesa", "card"],
  "success_url": "https://your-app.com/paid?ref=inv-2026-0042",
  "cancel_url": "https://your-app.com/cancelled",
  "language": "pt"
}

Resposta em caso de sucesso

HTTP 200 JSON: checkout_id (igual ao id da encomenda), checkout_url (URL absoluto, caminho /c/{checkout_id}) e expires_at (ISO 8601 UTC). Erros devolvem JSON com success: false e message (muitas vezes HTTP 400).

HTTP 200 — success

{
  "checkout_id": "673f92b2c3d94a0012abcd01",
  "checkout_url": "https://pay.zenofy.io/c/673f92b2c3d94a0012abcd01",
  "expires_at": "2026-05-20T14:30:00.0000000Z"
}

Página de pagamento e redirects

Abra checkout_url para o comprador. Com cancel_url, a página mostra cancelar e envia o comprador para esse URL sem alterações (encomenda pendente). Após pagamento, com success_url, redirect para esse URL sem alterações. Confirme via webhooks ou GET /checkout/order-status?orderId={checkout_id}.

Guias relacionados

Todos os tutoriais