Pagamentos & Checkout
Claude 3.5 Sonnet
Stripe Connect para Marketplace: Onboarding e Taxas da Plataforma
Backend completo de marketplace com Stripe Connect: onboarding do vendedor, checkout que retém a taxa da plataforma e repasse automático.
0cópias
0joinhas
0favoritos
O prompt
Escreva o backend em Node.js/TypeScript para um marketplace {{nome_marketplace}} usando Stripe Connect (conta Standard).
Parâmetros:
- Nome do Marketplace: {{nome_marketplace}}
- Taxa da Plataforma: {{taxa_plataforma}}% sobre cada venda
- Moeda: {{moeda}} (BRL ou USD)
Requisitos Críticos:
1. Rota POST /api/sellers/onboard que cria o account no Stripe Connect (type 'standard', capabilities card_payments + transfers), guarda o account_id no banco vinculado ao usuário e retorna a URL de onboarding para redirecionar o vendedor.
2. Webhook /api/webhooks/connect processando account.updated: quando o status da conta vira 'verified', libera o vendedor para anunciar (flag can_sell no banco); se 'rejected', desativa com motivo legível.
3. Checkout: POST /api/checkout/session criando a sessão de pagamento em nome do marketplace, com transfer_data.destination = account_id do vendedor e application_fee_amount calculado como {{taxa_plataforma}}% — o repasse é automático no pagamento aprovado.
4. Webhook charge.succeeded registrando a venda (tabela Sale { sellerId, buyerId, gross, fee, net, stripeChargeId }) com idempotência por charge.id; endpoint GET /api/sellers/me/sales listando vendas líquidas do vendedor autenticado.
5. Tratamento de estorno: refund.created recalcula a venda (fee proporcional) e notifica o vendedor via e-mail (Resend, se configurado).
6. Segurança: validação rigorosa da assinatura stripe-signature em todos os webhooks; nunca confiar em dados do front para calcular fee/transfer.
Como usar
- Substitua {{nome_marketplace}}, {{taxa_plataforma}} (ex.: 10) e {{moeda}}.
- Cole no Claude/Cursor; antes de rodar, ative Stripe Connect na sua conta (Dashboard → Developers → Connect) e use a chave de teste.
- Defina STRIPE_SECRET_KEY + STRIPE_WEBHOOK_SECRET; localmente: stripe listen --forward-to localhost:3000/api/webhooks/connect.
- Fluxo de teste completo: crie vendedor → finalize onboarding na URL retornada (conta Standard de teste) → compre um item dele → confira a Sale com gross/fee/net corretos e o repasse no dashboard.
Exemplo de saída
Backend (~260 linhas): POST /sellers/onboard criando conta Standard + URL de onboarding, webhook account.updated liberando can_sell só quando 'verified', checkout session com transfer_data.destination e application_fee_amount = 10%, Sale idempotente por charge.id com gross/fee/net, refund recalculando fee proporcional + e-mail ao vendedor e validação de stripe-signature em tudo.