Configurar pagamentos futuros
Para coletar dados de pagamento do cliente para reutilização posterior, use o modo de configuração do Checkout. O modo de configuração usa a Setup Intents API para criar Payment Methods.
Confira nosso exemplo completo e funcional no GitHub.
Configurar a StripeLado do servidor
Primeiro, você precisa de uma conta Stripe. Inscreva-se aqui.
Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo:
Criar uma sessão de checkoutLado do clienteLado do servidor
Adicione um botão de checkout ao seu site para invocar um endpoint do lado do servidor e criar uma Sessão do Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
To create a setup mode Session, use the mode
parameter with a value of setup
when creating the Session. You can optionally specify the customer parameter to automatically attach the created payment method to an existing customer. Checkout uses Dynamic payment methods by default, which requires you to pass the currency parameter when using setup
mode.
Anexe a variável de modelo {CHECKOUT_SESSION_ID}
a success_url
para acessar o ID da sessão depois que o cliente finalizar uma Sessão do Checkout. Depois de criar a Sessão do Checkout, redirecione o cliente para o URL retornado na resposta.
Acessar a sessão do CheckoutLado do servidor
Depois que o cliente finaliza a sessão do Checkout, você precisa acessar o objeto Session, o que pode ser feito de duas formas:
- Assíncrona: gerencie webhooks
checkout.session.completed
, que contêm um objeto Session. Saiba mais sobre configuração de webhooks. - Síncrona: obtenha o ID da sessão de
success_url
quando um usuário é redirecionado de volta ao seu site. Use o ID da sessão para acessar o objeto Session.
A melhor opção depende de sua tolerância a abandono de sessão, porque nem sempre o cliente chega a success_url
depois de concluir o pagamento. É possível que o cliente feche a guia do navegador antes do redirecionamento. Gerenciar webhooks impede que sua integração sofra esse tipo de abandono de sessão.
Depois de acessar o objeto Session, obtenha o valor da chave setup_intent
, que é o ID do SetupIntent criado durante a sessão do Checkout. Um SetupIntent é um objeto usado para configurar os dados da conta bancária do cliente para pagamentos futuros.
Exemplo de conteúdo de checkout.session.completed
:
{ "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "cancel_url": "https://example.com/cancel", "client_reference_id": null, "customer": "", "customer_email": null, "display_items": [], "mode": "setup", "setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
Registre o ID de setup_intent
para a próxima etapa.
Acessar o SetupIntentLado do servidor
Usando o ID setup_intent
ID, recupere o objeto SetupIntent. O objeto retornado contém um ID payment_method
que você pode anexar a um cliente na próxima etapa.
Observação
Se estiver solicitando esses dados de forma síncrona a partir da API Stripe (e não gerenciando webhooks), você pode combinar a etapa anterior com esta, expandindo o objeto SetupIntent na solicitação para o endpoint /v1/checkout/session. Dessa forma, você não precisa fazer duas solicitações de rede para acessar o ID do PaymentMethod recém-criado.
Use a forma de pagamentoLado do servidor
Se não tiver criado a sessão do Checkout com um cliente existente, use o ID do payment_method
para anexar o PaymentMethod a um Customer. Após vincular o PaymentMethod a um cliente, você pode cobrar o PaymentMethod usando um PaymentIntent.
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.