API

API REST para pagamentos PIX

Versionada (/api/v1), autenticada por chave, com idempotência, rate limiting e webhooks assinados.

1. Criar cobrança

POST /api/v1/charges
Authorization: Bearer pg_test_…
Idempotency-Key: pedido-1042

{ "amount": 14990, "external_id": "1042",
  "description": "Pedido #1042", "expires_in_minutes": 30 }

2. Resposta

{ "id": "ch_01j…", "status": "pending",
  "amount": 14990, "fee": 148, "net_amount": 14842,
  "pix": { "copy_paste": "00020126…",
           "qr_code_svg": "…/charges/ch_…/qrcode.svg" },
  "expires_at": "2026-10-13T12:30:00-03:00" }

3. Webhook assinado

PontoGate-Signature: t=1760000000,v1=9f2c…
PontoGate-Event-Id: evt_01j…

{ "type": "charge.paid", "data": { "id": "ch_01j…",
  "status": "paid", "amount": 14990 } }

4. Validar a assinatura (PHP)

[$t, $v1] = parse($header);          // t=…,v1=…
$calc = hash_hmac('sha256', "$t.$body", $secret);
if (!hash_equals($calc, $v1) || abs(time()-$t) > 300) {
    http_response_code(400); exit;
}

Ambientes

Chaves pg_test_… operam no sandbox — nenhum dinheiro real. Chaves pg_live_… só são emitidas após a aprovação do cadastro e liberação da conta, e dependem de um provedor de pagamentos autorizado configurado.