Pagamenti con carta senza autorizzazione della banca
This integration supports businesses accepting only US and Canadian cards. It’s simpler up front, but does not scale to support a global customer base.
Come funziona questa integrazione?
In che cosa si differenzia dall'integrazione globale?
Le aziende in crescita o internazionali dovrebbero usare l’integrazione globale di Stripe per poter accettare le richieste di autenticazione a due fattori delle banche e consentire ai clienti di utilizzare più modalità di pagamento.
Creare un modulo di pagamentoLato client
Elements, parte di Stripe.js, offre componenti dell’interfaccia integrati per la raccolta dei dati sulla carta dai clienti. Essi sono in hosting su Stripe e inseriti nel tuo modulo di pagamento come iframe, pertanto i dati della carta del cliente non toccheranno mai il tuo codice.
Configurare StripeLato server
Utilizza una libreria ufficiale per inviare richieste all’API Stripe dalla tua applicazione:
Effettuare un pagamentoLato server
Configura un endpoint sul tuo server per ricevere la richiesta dal cliente.
Stripe utilizza un oggetto PaymentIntent per rappresentare la tua intenzione di riscuotere un pagamento da un cliente, monitorando i tentativi di addebito e le modifiche dello stato del pagamento durante l’intera procedura.
Decidi sempre quanto addebitare al cliente sul server, un ambiente affidabile rispetto a quello del client. In questo modo eviti che eventuali malintenzionati possano scegliere un proprio prezzo.
Crea un endpoint HTTP per rispondere alla richiesta AJAX della fase 1. In quell’endpoint, devi decidere quanto addebitare al cliente. Per creare un pagamento, crea un PaymentIntent utilizzando l’ID del PaymentMethod della fase 1 con il codice seguente:
Avviso
Se imposti error_on_requires_action su true
quando confermi un pagamento, Stripe genera automaticamente un errore nel pagamento se questo richiede l’autenticazione a due fattori da parte dell’utente.
Risposta dell’API Payment Intents
Quando effettui un pagamento con l’API, la risposta include lo stato del PaymentIntent. Se il pagamento è riuscito, lo stato sarà succeeded
.
{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }
Se il pagamento viene rifiutato, la risposta include il codice e il messaggio di errore. Ecco un esempio di pagamento non riuscito perché la carta richiedeva l’autenticazione a due fattori.
{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://stripe.com/docs/error-codes/authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://stripe.com/docs/error-codes/authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }
Testa l'integrazione
Sono disponibili numerose carte di test che puoi utilizzare in modalità di test per verificare che l’integrazione sia pronta per l’uso. Utilizzale con un CVC, un codice postale e una data di scadenza futura qualsiasi.
Numero | Descrizione |
---|---|
La transazione ha esito positivo e il pagamento viene elaborato automaticamente. | |
Con un codice di rifiuto insufficient_funds , la transazione ha sempre esito negativo. | |
Richiede l’autenticazione che in questa integrazione non va a buon fine restituendo il codice di rifiuto authentication_not_handled . |
Consulta l’elenco completo delle carte di test.
Aggiornare l'integrazione per gestire l'autenticazione delle carte
Congratulazioni. Hai completato un’integrazione per i pagamenti di base con carta. Tieni presente che questa integrazione rifiuta le carte che impongono l’autenticazione durante il pagamento.
Se inizi a vedere pagamenti nella Dashboard contrassegnati dalla dicitura Failed
, è il momento di aggiornare l’integrazione. L’integrazione globale di Stripe gestisce questi pagamenti invece di rifiutarli automaticamente.