Passa al contenuto
Crea account
o
Accedi
Il logo della documentazione Stripe
/
Chiedi all'IA
Crea un account
Accedi
Inizia
Pagamenti
Ricavi
Per piattaforme e marketplace
Gestione del denaro
Strumenti di sviluppo
Panoramica
Informazioni sui pagamenti con Stripe
Eseguire l'upgrade dell'integrazione
Analisi dei dati sui pagamenti
Pagamenti online
PanoramicaTrovare il caso d'uso più adattoManaged Payments
Utilizzare Payment Links
Creare una pagina di pagamento
Creare un'integrazione iniziale
Creare un'integrazione in-app
Modalità di pagamento
Aggiungere modalità di pagamento
Gestire i metodi di pagamento
Pagare più velocemente con Link
Interfacce di pagamento
Payment Links
Checkout
Elements per il Web
Elements in-app
Scenari di pagamento
Flussi di pagamento personalizzati
    Panoramica
    Pagamenti per clienti esistenti
    Autorizzare e acquisire un pagamento separatamente
    Creare un'esperienza di conferma in due passaggi
    Raccogliere i dati di pagamento prima di creare un intento
    Finalizzare i pagamenti sul server
    Accettare ordini per posta e per telefono (MOTO)
    Carte statunitensi e canadesi
      Salvare carte senza autenticazione
      Eseguire l'upgrade per gestire l'autenticazione
    Inoltra i dati della carta agli endpoint dell'API di terze parti
    Voci riga di pagamenti
Acquisizione flessibile
Orchestrazione
Pagamenti di persona
Terminal
Altri prodotti Stripe
Financial Connections
Criptovaluta
Climate
Pagina inizialePagamentiCustom payment flows

Pagamenti con carta senza autorizzazione della banca

Crea un'integrazione più semplice con limitazioni legate all'area geografica.

Copia pagina

Questa integrazione è compatibile con le attività che accettano solo carte statunitensi e canadesi. Inizialmente è più semplice, ma non permette l’espansione per accettare una base di clienti internazionale.

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ù metodi di pagamento.

Creare un modulo di pagamento
Lato client

Elements, parte di Stripe.js, offre componenti dell’interfaccia integrati per la raccolta dei dati sulla carta dai clienti. 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.

Innanzitutto, includi lo script Stripe.js nell’intestazione di ogni pagina del sito.

<script src="https://js.stripe.com/v3/"></script>

Così facendo puoi utilizzare le funzionalità antifrode avanzate di Stripe e avrai la possibilità di rilevare comportamenti di navigazione anomali.

Requisiti di sicurezza

Questo script va sempre caricato direttamente da js.stripe.com per garantire la conformità PCI. Non puoi includere lo script in un pacchetto né utilizzarne una copia in self-hosting.

Quando usi Elements, tutti i dati di pagamento vengono inviati tramite una connessione HTTPS sicura.

L’indirizzo della pagina che contiene Elements deve inoltre iniziare con https:// e non con http://. Per ulteriori informazioni sulla ricezione dei certificati SSL e sull’integrazione con il tuo server per attivare una connessione HTTPS sicura, consulta la documentazione sulla sicurezza.

Aggiungere Elements alla pagina

Poi, devi creare un account Stripe. Registrati ora.

Creare elementi DOM (contenitori) vuoti con ID univoci all’interno del modulo di pagamento

payment.html
<form id="payment-form"> <div id="card-element"><!-- placeholder for Elements --></div> <button id="card-button">Submit Payment</button> <p id="payment-result"><!-- we'll pass the response from the server here --></p> </form>

Crea un’istanza dell’oggetto Stripe, fornendo la tua chiave API pubblicabile come primo parametro. In seguito, crea un’istanza dell’oggetto Elements e usalo per montare un elemento carta nel contenitore vuoto dell’elemento DOM della pagina.

client.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');

Usa stripe.createPaymentMethod sul client per acquisire i dati della carta e creare un PaymentMethod quando il cliente invia il modulo di pagamento. Invia l’ID del PaymentMethod al tuo server.

client.js
const form = document.getElementById("payment-form"); var resultContainer = document.getElementById('payment-result'); // cardElement is defined in the previous step cardElement.on('change', function(event) { if (event.error) { resultContainer.textContent = event.error.message; } else { resultContainer.textContent = ''; } }); form.addEventListener('submit', async event => { event.preventDefault(); resultContainer.textContent = ''; const result = await stripe.createPaymentMethod({ type: 'card', card: cardElement, }); handlePaymentMethodResult(result); }); const handlePaymentMethodResult = async ({ paymentMethod, error }) => { if (error) { // An error happened when collecting card details, show error in payment form resultContainer.textContent = result.error.message; } else { // Send paymentMethod.id to your server (see Step 3) const response = await fetch("/pay", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ payment_method_id: paymentMethod.id }) }); const responseJson = await response.json(); handleServerResponse(responseJson); } }; const handleServerResponse = async responseJson => { if (responseJson.error) { // An error happened when charging the card, show it in the payment form resultContainer.textContent = responseJson.error; } else { // Show a success message resultContainer.textContent = 'Success!'; } };

Configurare Stripe
Lato server

Utilizza una libreria ufficiale per inviare richieste all’API Stripe dalla tua applicazione:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Effettuare un pagamento
Lato 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 tutta la 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:

Command Line
curl
# Check the status of the PaymentIntent to make sure it succeeded curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \ -d amount=1099 \ -d currency=usd \ # A PaymentIntent can be confirmed some time after creation, # but here we want to confirm (collect payment) immediately. -d confirm=true \ -d payment_method="{{PAYMENT_METHOD_ID}}" \ # If the payment requires any follow-up actions from the # customer, like two-factor authentication, Stripe will error # and you will need to prompt them for a new payment method. -d error_on_requires_action=true

Avviso

Se imposti error_on_requires_action su true durante la conferma di 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://docs.stripe.com/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://docs.stripe.com/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

Stripe fornisce numerose carte di test che puoi utilizzare in una sandbox per verificare che l’integrazione sia pronta per l’uso. Utilizzale con un CVC, un codice postale e una data di scadenza futura qualsiasi.

NumeroDescrizione
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.

Questa pagina è stata utile?
SìNo
Hai bisogno di aiuto? Contatta l'assistenza clienti.
Partecipa al nostro programma di accesso anticipato.
Dai un'occhiata al nostro registro delle modifiche.
Domande? Contattaci.
LLM? Leggi llms.txt.
Realizzato da Markdoc