Migrar sua integração básica de cartões
Migre para uma integração que gerencie solicitações bancárias para autenticação de cartão.
If you followed the Card payments without bank authentication guide, your integration creates payments that decline when a bank asks the customer to authenticate the purchase.
Se começarem a aparecer muitos pagamentos com falha, como o que aparece abaixo no Dashboard ou com o código de erro requires_
na API, faça upgrade da sua integração básica para aceitar esses pagamentos, em vez de recusá-los.
Use este guia para saber como atualizar a integração criada no guia anterior para adicionar código de servidor e cliente que mostre um modal para solicitar ao cliente que autentique o pagamento.
Observação
Veja um exemplo completo da integração no GitHub.
Verifique se o pagamento requer autenticaçãoLado do servidor
Faça duas alterações no endpoint de seu servidor que cria o PaymentIntent:
- Remova o parâmetro error_on_requires_action para não gerar uma falha nos pagamentos que exigem autenticação. O status do PaymentIntent muda para
requires_
.action - Adicione o parâmetro
confirmation_
para indicar que você deseja confirmar explicitamente (manualmente) o pagamento mais uma vez no servidor depois de aceitar as solicitações de autenticação.method
Em seguida, atualize a função “gerar resposta” para aceitar o estado requires_
em vez de gerar um erro:
Solicite a autenticação do clienteLado do cliente
Em seguida, atualize o código do lado do cliente para indicar à Stripe que é preciso mostrar um modal se o cliente precisar se autenticar.
Use stripe.handleCardAction quando o status de um PaymentIntent for requires_
. Se funcionar, o status do PaymentIntent será requires_
, e você deve confirmar o PaymentIntent outra vez no seu servidor para finalizar o pagamento.
const handleServerResponse = async (responseJson) => { if (responseJson.error) { // Show error from server on payment form } else if (responseJson.requiresAction) { // Use Stripe.js to handle the required card action const { error: errorAction, paymentIntent } = await stripe.handleCardAction(responseJson.clientSecret); if (errorAction) { // Show error from Stripe.js in payment form } else { // The card action has been handled // The PaymentIntent can be confirmed again on the server const serverResponse = await fetch('/pay', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ payment_intent_id: paymentIntent.id }) }); handleServerResponse(await serverResponse.json()); } } else { // Show success message } }
Confirmar o PaymentIntent novamenteLado do servidor
Usando o mesmo endpoint configurado anteriormente, confirme o PaymentIntent mais uma vez para finalizar o pagamento e executar o pedido. A tentativa de pagamento apresenta falha e o PaymentIntent retorna para o status requires_
se não for confirmado novamente em até uma hora.
Testar a integração
Use nossos cartões de teste no modo de teste para verificar se sua integração foi atualizada corretamente. A Stripe exibe uma página falsa de autenticação no modal em modo de teste que permite simular uma tentativa de autenticação com êxito ou com falha. No modo de produção, o banco controla a IU do que é exibido no modal.
Número | Descrição |
---|---|
Finaliza e processa o pagamento imediatamente. | |
Sempre falha, com o código de recusa insufficient_ . | |
Exige autenticação, que nesta integração falha com o código de recusa authentication_ . |