Beacon

Stripe & Beacon Connect API

Ver como Markdown

Stripe & Beacon Connect API

OAuth read_only para Stripe existente e endpoints Beacon Connect para plataformas.

reference • updated 2026-03-18

Objetivo

Ligar contas Stripe existentes via OAuth read_only e aceitar push directo de plataformas quando a conta Stripe ligada não vê a venda completa.

Endpoints Stripe OAuth

EndpointFunçãoResultado esperado
POST /api/stripe/oauth/start?org={slug}&mode={test|live}&lang={locale}preparar ligação OAuthredirectUrl temporária para consentimento Stripe
GET /api/stripe/oauth/start?org={slug}&mode={test|live}&lang={locale}shortcut com redirect imediatoresposta 302/307 para a Stripe
GET /api/stripe/oauth/callback?code=...&state=...callback interno OAuthredirecionamento para o dashboard com ligação validada

Endpoints Beacon Connect

EndpointFunçãoResultado esperado
POST /api/platform-connect/verify-mappingvalidar externalOrgRefdevolve organização Beacon resolvida
POST /api/platform-connect/paymentsingerir paymentcria/enriquece Payment e, se houver dados suficientes, Sale
POST /api/platform-connect/refundsingerir refundcria PaymentRefund e actualiza estado
POST /api/platform-connect/disputesingerir disputecria PaymentDispute e actualiza estado

Fluxo operacional recomendado

  1. 11) Iniciar OAuth

    Chama oauth/start com organização e modo (test|live).
  2. 22) Validar callback

    A Beacon valida state, troca code por token e falha se o scope não incluir read_only.
  3. 33) Ingerir Stripe visível

    A conta ligada começa a alimentar Payment.kind=CHARGE|TRANSFER|PAYOUT e enriquecimento financeiro por balance_transactions.
  4. 44) Enriquecer quando faltar venda

    Se a conta ligada só vir efeito financeiro parcial, a plataforma envia Beacon Connect para completar Sale e contexto fiscal.

Validações obrigatórias

  • STRIPE_EXTENSION_ENABLED=true.
  • O callback OAuth exige read_only; read_write não é tratado como fallback funcional equivalente.
  • providerEventId é obrigatório em Beacon Connect.
  • Reconciliação de Payment segue prioridade: stripeChargeId -> stripePaymentIntentId -> providerEventId -> (platformIntegrationId, externalPaymentId).

Exemplo OAuth start

bash
curl -X POST "https://test.beacon.pt/api/stripe/oauth/start?org=acme&mode=test&lang=pt" \
  -H "Authorization: Bearer <beacon_session_token>"
json
{
  "ok": true,
  "redirectUrl": "https://connect.stripe.com/oauth/authorize?...",
  "expiresAt": "2026-03-18T11:00:00.000Z"
}

Exemplo Beacon Connect verify-mapping

bash
curl -X POST "https://app.beacon.pt/api/platform-connect/verify-mapping" \
  -H "Authorization: Bearer <platform_secret>" \
  -H "Content-Type: application/json" \
  -d '{"externalOrgRef":"seller_org_123"}'

Falhas comuns e mitigação

SinalCausa provávelMitigação
callback OAuth falhaapp Stripe sem configuração Extension ou sem read_onlycorrigir configuração Stripe e reiniciar fluxo
payment parcial sem Salevisibilidade limitada da conta ligadacompletar via Beacon Connect
429 em Beacon Connectquota da integração excedidarespeitar retryAfterSec e usar backoff com jitter