Integrações — Gateways

Conectar o Stripe

Como pegar as chaves pk_live_/sk_live_ do Stripe e validar a conexão na CopyFunnel (Pix + cartão à vista em BRL).

O que é a integração

Ao conectar o Stripe na CopyFunnel, seu checkout passa a oferecer Pix e cartão de crédito internacional à vista em BRL. O número do cartão é tokenizado no navegador do comprador (endpoint /v1/tokens do Stripe, com a Publishable Key — o mesmo que o Stripe.js usa) e o dado cru nunca chega ao servidor da CopyFunnel, que confirma o PaymentIntent só com o token (tok_...). No Pix, o PaymentIntent é criado direto pelo servidor e o comprador paga pela string copia-e-cola/QR (limite de R$ 3.000 por transação — acima disso o checkout usa o próximo gateway da sua rota). O reembolso de vendas feitas pelo Stripe é suportado (POST /v1/refunds). Boleto não é coberto por este gateway — use um gateway brasileiro para isso.

Atalho sem credencial nenhuma: com o Stripe Connect ativo (intermediação da CopyFunnel), sua conta Stripe Express é criada automaticamente na aprovação da curadoria — você completa o onboarding hospedado a partir de Financeiro e passa a receber Pix e cartão com saldo e saque na própria Stripe, sem configurar API key, webhook ou nada desta página. Esta página é para o caminho avançado (sua própria credencial Stripe, sem split da comissão).

Onde pegar as credenciais

O Stripe usa duas credenciais:

  1. Publishable Key (pk_live_...) — chave pública usada para tokenizar o cartão no navegador do comprador.
  2. Secret Key (sk_live_...) — chave secreta usada pelo servidor (autenticação Bearer na API).

Para pegar as duas:

  1. Faça login no painel do Stripe (dashboard.stripe.com) com a conta que recebe o dinheiro.
  2. Procure por Developers → API keys.
  3. Copie a Publishable key e revele/copie a Secret key de produção. Chaves de teste (sk_test_/pk_test_) só funcionam em modo de teste.

Conectar na CopyFunnel

  1. No painel da CopyFunnel, entre em Integrações.
  2. Clique no card do Stripe (status do card: Não configurado, Configurado ou Conectado).
  3. No drawer que abre, preencha:
    • Publishable Key (placeholder: "Publishable Key (pk_live_...)") — campo visível, obrigatório.
    • Secret Key (placeholder: "sk_live_...") — campo de senha, cifrado na CopyFunnel e nunca exibido de novo (só os 4 últimos dígitos).
  4. Se estiver usando chaves sk_test_, marque Usar sandbox (credenciais de teste) — desmarque para produção. Obs.: o prefixo da Secret Key (sk_test_/sk_live_) decide o ambiente na API do Stripe.
  5. Clique em Testar conexão. O teste consulta o saldo da conta (GET /balance) — a chamada mínima da API Stripe, que prova que a Secret Key autentica. Com a chave válida aparece "Conexão realizada com sucesso."
  6. Clique em Salvar. Ao salvar, a conexão é testada de novo: com sucesso você vê "Credenciais salvas e conexão verificada." e o card passa a Conectado.

Só a credencial Conectado entra no checkout. Se o teste falhar ao salvar, a credencial fica Configurado — corrija e teste novamente.

O que acontece depois

Com a conexão validada, o checkout exibe Pix (QR + copia-e-cola, sem custo de configuração extra) e cartão à vista em BRL (sem parcelamento — a API do Stripe Brasil não expõe parcelamento para este caso, então o seletor de parcelas é escondido no checkout Stripe). O botão de cartão só aparece com a Publishable Key salva; o de Pix entra sozinho quando a rota do Pix inclui o Stripe.

A confirmação usa webhook do Stripe validado por assinatura HMAC-SHA256 (stripe-signature, janela de 5 minutos) — e nenhuma notificação aprova a venda sozinha: a CopyFunnel sempre reconfirma o status do PaymentIntent direto na API do Stripe. Se a notificação atrasar, há polling automático (botão "Conferir pgto." + cron de reconciliação). Cada cobrança leva metadata[order_id] = ID do pedido da CopyFunnel (auditoria no painel Stripe).

Para finalizar, faça uma compra de teste de R$ 1,00 (em produção: um cartão real; em sandbox, use os cartões de teste do Stripe) e confira se ela aparece em Vendas no painel com o status correto.

Dicas de erro comuns

  • "Informe Publishable Key." — o campo visível ficou vazio ao salvar. Os dois campos são obrigatórios.
  • "Informe Secret Key para conectar." — o segredo ficou vazio. Deixá-lo vazio em um save posterior preserva a chave já salva.
  • "Falha na autenticação. Verifique as credenciais." — a Secret Key foi rejeitada (401). Confira se copiou a chave completa (começa com sk_live_ ou sk_test_) e se o sandbox está marcado só para chaves de teste.
  • Public e Secret de ambientes diferentes — pk_live_ com sk_test_ (ou o contrário) quebra a tokenização no navegador: o teste de conexão pode passar, mas a venda falha. Use o par do mesmo ambiente.
  • Cartão recusado (HTTP 402) — o Stripe devolve a recusa com o código (decline_code) e mensagem do emissor; a CopyFunnel registra o pedido como recusado mantendo o vínculo com o PaymentIntent real (permitindo reembolso/consulta depois). É recusa do emissor, não erro de integração.
  • Erro na mensagem da API — quando o Stripe devolve error.message, a CopyFunnel repassa a mensagem; leia-a com atenção (geralmente aponta o campo ou parâmetro exato que falhou).