Eseguire la migrazione dell'integrazione di base della carta
Esegui la migrazione a un'integrazione in grado di gestire richieste delle banche per l'autenticazione delle carte.
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 inizi a rilevare un discreto numero di pagamenti non andati a buon fine, come quello nella Dashboard di seguito, o associati al codice di errore requires_
nell’API, aggiorna l’integrazione di base per gestirli anziché rifiutarli.
Utilizza questa guida per scoprire come aggiornare l’integrazione creata con l’aiuto della guida precedente in modo da aggiungere codice lato server e client per chiedere al cliente di autenticare il pagamento mostrando una finestra modale.
Nota
Fai riferimento a un esempio completo di questa integrazione su GitHub.
Verifica se il pagamento richiede l'autenticazioneLato server
Apporta due modifiche all’endpoint sul server che crea il PaymentIntent:
- Rimuovi il parametro error_on_requires_action in modo che i pagamenti che richiedono l’autenticazione non abbiano più esito negativo. Lo stato PaymentIntent diventa
requires_
.action - Aggiungi il parametro
confirmation_
per indicare che vuoi riconfermare (manualmente) in modo esplicito il pagamento sul server dopo aver gestito le richieste di autenticazione.method
Quindi aggiorna la funzione “generate response” per gestire lo stato requires_
affinché non venga generato un errore:
Chiedi al cliente di eseguire l'autenticazioneLato client
Ora aggiorna il codice lato cliente per fare in modo che Stripe mostri una finestra modale se il cliente deve eseguire l’autenticazione.
Usa stripe.handleCardAction quando un PaymentIntent ha lo stato requires_
. Se l’operazione va a buon fine, il PaymentIntent avrà lo stato requires_
e dovrai confermare nuovamente il PaymentIntent sul server per completare il 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 } }
Riconferma il PaymentIntentLato server
Utilizzando lo stesso endpoint configurato in precedenza, riconferma il PaymentIntent per finalizzare il pagamento ed evadere l’ordine. Il tentativo di pagamento non va a buon fine e torna allo stato requires_
se la riconferma non avviene entro un’ora.
Testa l'integrazione
Usa le nostre carte di test in modalità di test per verificare che la tua integrazione sia stata correttamente aggiornata. Stripe visualizza una pagina di autenticazione fittizia nella finestra modale in modalità di test che ti consente di simulare un tentativo di autenticazione con esito positivo o negativo. In modalità live, la banca controlla l’interfaccia utente di ciò che è visualizzato all’interno della finestra modale.
Numero | Descrizione |
---|---|
La transazione ha esito positivo e il pagamento viene elaborato immediatamente. | |
La transazione ha sempre esito negativo con un codice di rifiuto insufficient_ . | |
Richiede l’autenticazione, che in questa integrazione non andrà a buon fine restituendo il codice di rifiuto authentication_ . |