Integração

Conectando seu gateway de pagamento.

Cada empresa usa o próprio gateway (Stripe, PagBank, Asaas, MercadoPago, checkout próprio). A Refera não sabe qual você usa — ela precisa apenas ser avisada quando uma venda aconteceu, com o referral_code do vendedor. Existem dois padrões:

A. Proxy via seu backend (recomendado)

Seu backend recebe o webhook do gateway, faz o que precisa fazer, e chama a Refera. Assim você tem controle total, log, retry — e a Refera é apenas mais um sistema que você notifica.

node·pages/api/webhooks/stripe.ts
import Stripe from 'stripe'
import { reportSale } from '@/lib/refera' // seu wrapper

export async function POST(req: Request) {
  const rawBody = await req.text()
  const sig = req.headers.get('stripe-signature')!
  const evt = stripe.webhooks.constructEvent(rawBody, sig, process.env.STRIPE_WEBHOOK_SECRET!)

  if (evt.type === 'checkout.session.completed') {
    const session = evt.data.object as Stripe.Checkout.Session
    const meta = session.metadata ?? {}

    if (meta.refera_referral_code) {
      await reportSale({
        referralCode: meta.refera_referral_code,
        campaignId: meta.refera_campaign_id!,
        planId: meta.refera_plan_id!,
        amountBrl: (session.amount_total ?? 0) / 100,
        externalRef: session.id, // idempotência
      })
    }
  }
  return new Response('ok')
}

Coloca refera_referral_code, refera_campaign_id e refera_plan_id como metadata do Checkout Session no Stripe. Quando a compra completar, seu handler acima resolve tudo.

B. Webhook direto no Refera (atalho pra Stripe)

Se você não quer manter um handler intermediário, aponta o webhook do Stripe pra refera.com.br/api/webhooks/stripe. A Refera valida a assinatura (você cadastra o STRIPE_WEBHOOK_SECRET em Configurações → API keys), extrai o metadata e cria a venda.

Trade-off: você perde flexibilidade (não pode fazer lógica adicional no meio), mas o setup é 1 URL no Stripe + 1 field no dashboard.

PagBank / Asaas / MercadoPago

Não temos adaptador dedicado ainda. Use o padrão A (proxy no seu backend). Cada gateway BR tem um jeito próprio de webhook — pega o valor e o metadata que você guardou na criação do pedido, e chama POST /api/v1/sales.