Configurar uma assinatura com o PayPal
Saiba como criar e cobrar uma assinatura com o PayPal.
Cuidado
Para começar a aceitar assinaturas do PayPal na Stripe, pagamentos recorrentes do PayPal devem estar habilitados no Dashboard.
Use este guia para configurar uma assinatura usando PayPal como forma de pagamento.
Criar produto e preçoDashboard
Produtos representam o item ou serviço que você está vendendo. Preços definem quanto e com que frequência você cobra por um produto. Você estabelece quanto custa o produto, qual moeda você aceita e se a cobrança é avulsa ou recorrente. Se você tiver apenas alguns produtos e preços, crie e gerencie-os no Dashboard.
Este guia usa um serviço de banco de imagens como exemplo e cobra dos clientes uma assinatura mensal de 15 EUR. Para modelar isso:
- Navegue até a página Adicionar um produto.
- Insira um Nome para o produto.
- Insira 15 para o preço.
- Selecione EUR como moeda.
- Clique em Salvar produto.
Depois de criar o produto e o preço, registre o ID do preço para utilizá-lo nas etapas subsequentes. A página de preços exibe o ID, que tem esta estrutura: price_
.
Criar ou recuperar um Customer antes da configuraçãoLado do servidor
Para reutilizar uma forma de pagamento PayPal para pagamentos futuros, vincule-a a um Cliente.
Crie um objeto Customer quando um cliente abrir uma conta em sua empresa. Associar o ID do objeto Customer à sua própria representação interna de um cliente permitirá que você recupere e use posteriormente os dados da forma de pagamento armazenados. Se o cliente não criou uma conta, você pode criar um objeto Customer agora e associá-lo posteriormente à sua representação interna da conta do cliente.
Criar um SetupIntentLado do servidor
Um SetupIntent é um objeto que representa sua intenção e acompanha as etapas de configuração da forma de pagamento do cliente para pagamentos futuros.
Crie um SetupIntent no servidor com payment_method_types definido como paypal
e especifique o id do cliente.
O objeto SetupIntent contém um client_secret, uma chave única que você precisa passar para a Stripe no lado do cliente para redirecionar seu comprador para o PayPal e autorizar a instrução.
Redirecionar o clienteLado do cliente
Quando um cliente tenta configurar sua conta PayPal para pagamentos futuros, recomendamos que você use o Stripe.js para confirmar o SetupIntent. Stripe.js é a nossa biblioteca JavaScript básica para criar fluxos de pagamento. Ele processa automaticamente fluxos complexos, como o redirecionamento descrito abaixo, e facilita a ampliação da integração para incluir outras formas de pagamento no futuro.
Para incluir o script Stripe.js na página de checkout, adicione-o ao head do arquivo HTML.
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
Crie uma instância de Stripe.js com o JavaScript a seguir em sua página de checkout.
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
, {} );'pk_test_TYooMQauvdEDq54NiTphI7jx'
Para confirmar a configuração no lado do cliente, passe o segredo do cliente no objeto SetupIntent criado na etapa 3.
O segredo do cliente é diferente das chaves de API que autenticam as solicitações da API Stripe. Mesmo assim, use-o com cuidado, pois ele permite finalizar a cobrança. Não registre em log, incorpore em URLs nem exponha esse segredo a ninguém, exceto para o próprio cliente.
Confirmar configuração do PayPal
Para autorizar você a usar a conta PayPal para pagamentos futuros, o cliente será redirecionado para uma página de contrato de cobrança do PayPal, que precisará ser aprovada antes de ser redirecionado de volta ao seu site. Use stripe.confirmPayPalSetup para prosseguir da sua página para a conclusão da configuração. Adicione um return_
a esta função para indicar aonde a Stripe deve redirecionar o usuário depois que ele aprovar o contrato de faturamento no site do PayPal.
// Redirects away from the client const {error} = await stripe.confirmPayPalSetup( '{{SETUP_INTENT_CLIENT_SECRET}}', { return_url: 'https://example.com/setup/complete', mandate_data: { customer_acceptance: { type: 'online', online: { infer_from_client: true } } }, } ); if (error) { // Inform the customer that there was an error. }
Você pode encontrar o ID do pagador da forma de pagamento e o ID do contrato de cobrança no Mandate resultante, na propriedade payment_method_details. O e-mail e o ID do pagador do comprador também podem ser encontrados na propriedade paypal do PaymentMethod.
Campo | Valor |
---|---|
payer_ | O e-mail do pagador na conta PayPal dele. |
payer_ | Um ID único da conta PayPal do pagador. |
billing_ | O ID do contrato de faturamento (BAID) do PayPal. Um ID gerado pelo PayPal para representar o mandato entre a empresa e o cliente. |
Monitorar webhooksLado do servidor
Use um método, como webhooks, para confirmar que o contrato de cobrança foi autorizado pelo cliente, em vez de esperar que o cliente volte à página de status do pagamento. Quando um cliente autoriza o contrato de cobrança, o SetupIntent emite o evento webhook setup_intent.succeeded. Se um cliente não autorizar o contrato de cobrança, o SetupIntent emitirá o evento de webhook setup_intent.setup_failed e voltará ao status de requires_
. Quando um cliente revoga o contrato de cobrança da sua conta PayPal, o mandate.updated é emitido.
Criar a assinaturaLado do servidor
Crie uma assinatura com preço e cliente:
A criação de assinaturas cobra automaticamente os clientes porque a forma de pagamento padrão está definida. Depois de um pagamento bem-sucedido, o status no Stripe Dashboard muda para Ativo. O preço que você criou anteriormente determina as cobranças seguintes.
Gerenciar o status da assinaturaLado do cliente
Se o pagamento inicial bem-sucedido, o estado da assinatura é active
e nenhuma ação adicional é necessária. Quando o pagamento falha, o status é alterado para o valor de Status da assinatura definido nas configurações de cobrança automática. Notifique a falha ao cliente e cobrá-lo com outra forma de pagamento.
Atualizar uma assinaturaLado do servidor
Quando você atualiza uma assinatura, é preciso especificar off_
. Caso contrário, qualquer novo pagamento exige um redirecionamento do usuário ao PayPal para confirmação. Por exemplo, se quiser alterar a quantidade de um item incluído na assinatura, você pode usar:
Testar a integração
Teste a integração do PayPal com as chaves de API de teste visualizando a página de redirecionamento. Para testar o caso de pagamento bem-sucedido, autentique o pagamento na página de redirecionamento. O PaymentIntent fará a transição de requires_
para succeeded
.
Para testar o que acontece quando a autenticação do usuário falha, use as chaves de API de teste e visualize a página de redirecionamento. Nessa página, clique em Falhar pagamento de teste. O PaymentIntent mudará de requires_
para requires_
.