Crie uma página de checkout personalizada que inclui o Link
Integre o Link usando o Payment Element ou o Link Authentication Element.
Este guia demonstra como aceitar pagamentos com o Link usando a API Payment Intents e o Payment Element ou o Link Authentication Element.
Há três maneiras de obter o endereço de e-mail de um cliente para autenticação e inscrição no Link:
- Passar um endereço de e-mail: você pode passar um endereço de e-mail para o Payment Element usando defaultValues. Se você já está coletando o endereço de e-mail e/ou o número de telefone do cliente no fluxo de checkout, recomendamos esta abordagem.
- Coletar um endereço de e-mail: você pode coletar um endereço de e-mail diretamente no Payment Element. Se você não coleta o endereço de e-mail em nenhum lugar do fluxo de checkout, recomendamos esta abordagem.
- Link Authentication Element: você pode usar o Link Authentication Element para criar um único campo de entrada de e-mail para coleta de e-mail e autenticação do Link. Recomendamos fazer isso se você usar o Address Element.

Coletar um endereço de e-mail do cliente para autenticação ou inscrição no Link
Configurar a StripeLado do servidor
Primeiro, crie uma conta Stripe ou entre.
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Criar um PaymentIntentLado do servidor
A Stripe usa um objeto PaymentIntent para representar sua intenção de coletar o pagamento de um cliente, acompanhando suas tentativas de cobrança e alterações no estado do pagamento durante todo o processo.
Se você coleta dados de cartão para uso futuro com Setup Intents, liste as formas de pagamento manualmente em vez de usar formas de pagamento dinâmicas. Para usar o Link sem formas de pagamento dinâmicas, atualize sua integração para passar link para payment_.
Ao criar uma PaymentIntent, ofereça dinamicamente aos clientes as formas de pagamento mais relevantes, incluindo o Link, usando formas de pagamento dinâmicas. Para usar formas de pagamento dinâmicas, não inclua o parâmetro payment_. Opcionalmente, você também pode habilitar automatic_.
Observação
Quando sua integração não define o parâmetro payment_, algumas formas de pagamento são ativadas automaticamente, incluindo cartões e carteiras.
Para adicionar o Link à sua integração do Elements usando formas de pagamento dinâmicas:
- Nas configurações de forma de pagamento do Dashboard, ative o Link.
- Se você tiver uma integração existente que lista manualmente as formas de pagamento, remova o parâmetro payment_method_types da integração.
Recuperar o segredo do cliente
O PaymentIntent inclui um segredo do cliente que o lado do cliente usa para concluir com segurança o processo de pagamento. Você pode usar abordagens diferentes para enviar a senha do cliente ao lado do cliente.
Coletar e-mail do cliente
O Link autentica um cliente usando o endereço de e-mail dele. Dependendo do seu fluxo de checkout, você tem as seguintes opções: passar um e-mail para o Payment Element, coletá-lo diretamente no Payment Element ou usar o Link Authentication Element. A Stripe recomenda passar um endereço de e-mail do cliente para o Payment Element, se disponível.
Configurar o formulário de pagamentoLado do cliente
Agora está tudo pronto para configurar o formulário de pagamento personalizado com os componentes de IU pré-incorporados do Elements. Para que sua integração funcione, o endereço da página de pagamento deve começar com https:// em vez de http://. Você pode testar sua integração sem usar HTTPS. Habilite HTTPS quando estiver pronto para aceitar pagamentos em tempo real.
OpcionalPreencher dados adicionais do clienteLado do cliente
Se tiver, o preenchimento prévio dos dados do cliente simplifica ainda mais o processo de checkout e reduz a inserção manual de dados.
OpcionalPersonalize a aparênciaLado do cliente
Depois de adicionar esses Elements à sua página, você pode personalizar sua aparência conforme o seu design:

Personalizar a aparência dos Elements
Enviar o pagamento para a StripeLado do cliente
Use stripe.confirmPayment para concluir o pagamento com os dados coletados do seu cliente nos diferentes formulários do Elements. Forneça um return_url a essa função para indicar para onde Stripe redireciona o usuário após a conclusão do pagamento.
Seu usuário pode ser redirecionado primeiro para um site intermediário, como uma página de autorização bancária, antes de a Stripe redirecioná-lo para o return_.
Por padrão, pagamentos por cartão e bancos são redirecionados imediatamente para o return_ quando um pagamento é finalizado. Se não quiser redirecionar para o return_, você pode usar if_required para alterar o comportamento.
O return_ corresponde a uma página no seu site que informa o status do pagamento do PaymentIntent quando você renderiza a página de retorno. Quando a Stripe redireciona o cliente para o return_, você pode usar os parâmetros de consulta de URL a seguir para verificar o status do pagamento. Você também pode anexar seus próprios parâmetros de consulta ao fornecer o return_. Esses parâmetros de consulta permanecem por meio do processo de redirecionamento.
| Parâmetro | Descrição |
|---|---|
payment_ | O identificador único do PaymentIntent |
payment_ | O segredo do cliente do objeto PaymentIntent. |
OpcionalSeparar autorização e capturaLado do servidor
O Link aceita autorização e captura separadas. Você deve capturar um pagamento autorizado do Link em 7 dias após a autorização. Caso contrário, a autorização será cancelada automaticamente e você não poderá capturar o pagamento.
Instruir a Stripe a autorizar somente
Para indicar que você quer separar a autorização da captura, defina capture_method como manual ao criar o PaymentIntent. Esse parâmetro instrui a Stripe a autorizar somente o valor na forma de pagamento do cliente.
Capturar os fundos
Após a autorização bem-sucedida, o status do PaymentIntent passa para requires_. Para capturar os fundos autorizados, faça uma solicitação de captura do PaymentIntent. O valor total autorizado é capturado por padrão. Você não pode capturar mais do que isso, mas pode capturar menos.
Optional Cancelar a autorização
Para cancelar uma autorização, você pode cancelar o PaymentIntent.
Gerenciar eventos pós-pagamentoLado do servidor
A Stripe envia um evento payment_intent.succeeded quando o pagamento é concluído. Use um webhook para receber esses eventos e executar ações, como enviar um e-mail de confirmação de pedido ao cliente, registrar a venda em um banco de dados ou iniciar um fluxo de trabalho de entrega.
Configure sua integração para escutar esses eventos em vez de aguardar um retorno de chamada do cliente. Quando você aguarda um retorno de chamada do cliente, ele pode fechar a janela do navegador ou sair do aplicativo antes da execução do retorno de chamada. Configurar sua integração para escutar eventos assíncronos permite aceitar diferentes tipos de formas de pagamento com uma única integração.
Além de gerenciar o evento payment_, você também pode gerenciar dois outros eventos importantes ao coletar pagamentos com o Payment Element:
| Evento | Descrição | Ação |
|---|---|---|
| payment_intent.succeeded | Enviado da Stripe quando um cliente conclui um pagamento. | Envie ao cliente uma confirmação de pedido e execute o pedido. |
| payment_intent.payment_failed | Enviado da Stripe quando um cliente tenta realizar um pagamento, mas o pagamento não é bem-sucedido. | Se um pagamento passou de processing para payment_, ofereça ao cliente outra tentativa para pagar. |
Teste a integração
Cuidado
Não armazene dados reais de usuários em contas do Link da área restrita. Trate-as como se estivessem disponíveis publicamente, pois essas contas de teste estão associadas à sua chave publicável.
No momento, o Link só funciona com cartões de crédito, cartões de débito e compras qualificadas de contas bancárias dos EUA. O Link requer registro de domínio.
Você pode criar contas de área restrita para o Link usando qualquer endereço de e-mail válido. A tabela a seguir mostra os valores fixos de senha de uso único que a Stripe aceita para autenticar contas de área restrita:
| Valor | Resultado |
|---|---|
| Quaisquer outros 6 dígitos não listados abaixo | Sucesso |
| 000001 | Erro, código inválido |
| 000002 | Erro, código expirado |
| 000003 | Erro, número máximo de tentativas excedido |
Para testar formas de pagamento específicas, consulte os exemplos de teste do Element Pagamento.
Várias fontes de fundos
À medida que a Stripe adiciona outras fontes de financiamento, você não precisa atualizar sua integração. A Stripe aceita essas fontes automaticamente com o mesmo tempo de liquidação de fundos da transação e com as mesmas garantias dos pagamentos com cartão e conta bancária.
Autenticação de cartões e 3D Secure
O Link aceita autenticação 3D Secure 2 (3DS2) para pagamentos com cartão. O 3DS2 exige que os clientes realizem uma etapa de verificação adicional com o emissor do cartão ao pagar. Os pagamentos autenticados com êxito por 3D Secure estão cobertos por uma transferência de responsabilidade.
Para acionar os fluxos de desafio de autenticação do 3DS2 com o Link em uma área restrita, use o seguinte cartão de teste com qualquer CVC, código postal e data de validade futura: .
Em uma área restrita, o processo de autenticação exibe uma página de autenticação fictícia. Nessa página, você pode autorizar ou cancelar o pagamento. A autorização do pagamento simula a autenticação bem-sucedida e redireciona você para o URL de retorno especificado. Clicar no botão Falha simula um erro na autenticação.
Para obter mais detalhes, consulte a página de autenticação de 3D Secure.
Observação
Ao testar fluxos do 3DS, somente cartões de teste para 3DS2 acionarão a autenticação no Link.
OpcionalExibir dados salvos pelo clienteLado do servidorLado do cliente
Além de exibir seus próprios endereços e formas de pagamento salvos para um cliente, você pode exibir os dados salvos pelo Link.
Se um cliente tiver mais de uma forma de pagamento salva, a Stripe exibe os três cartões usados mais recentemente salvos no Cliente, além de todas as formas de pagamento salvas pelo cliente com o Link.

Para fazer isso, crie uma chave efêmera e envie-a ao seu frontend com o ID do Cliente. As informações no objeto customer diferenciam maiúsculas, e não é possível recuperá-las diretamente no Stripe.js. Uma chave efêmera concede acesso temporário aos dados do customer.
No lado do cliente, obtenha customerOptions com clientSecret.
(async () => { const response = await fetch('/secret'); const {clientSecret, customerOptions} = await response.json(); })
Em seguida, passe os valores customerOptions. e customerOptions. para a opção customerOptions no grupo do Elements. Você também precisa passar o sinalizador beta elements_ ao carregar a instância Stripe.
OpcionalSalvar formas de pagamento do LinkLado do servidorLado do cliente
Você pode salvar as formas de pagamento do Link para pagamentos fora da sessão ou assinaturas futuros, mas não para pagamentos na sessão futuros. Para fazer isso, você deve anexá-lo a um Customer. Crie um objeto customer quando o cliente abrir uma conta na sua empresa. Em seguida, especifique customer quando criar seu PaymentIntent.
Quando um novo cliente tiver a primeira transação com sua empresa, crie um objeto customer na Stripe para armazenar os dados para uso futuro.
Na versão mais recente da API, especificar o parâmetro automatic_ é opcional porque a Stripe habilita sua funcionalidade por padrão.
Quando estiver pronto para cobrar o cliente novamente, use o ID customer e o PaymentMethod resultante para criar um novo PaymentIntent. Defina off_session como true. Isso faz com que o PaymentIntent envie um erro se a autenticação for exigida quando o cliente não estiver ativo no site ou aplicativo.
Divulgue a Stripe para seus clientes
A Stripe coleta informações sobre interações do cliente com o Elements para fornecer serviços a você, evitar fraudes e melhorar os serviços. Isso inclui o uso de cookies e endereços IP para identificar quais Elements o cliente visualizou durante uma única sessão de checkout. Você é responsável por divulgar e obter todos os direitos e consentimentos necessários para que a Stripe use os dados dessas maneiras. Para saber mais, acesse nossa central de privacidade.

