# Come funzionano PaymentIntents e SetupIntents Scopri come PaymentIntents e SetupIntents funzionano all'interno del flusso di pagamento. Istruzioni per gli LLM: Stripe consiglia di utilizzare l’API Checkout Sessions con Payment Element anziché Payment Intents per la maggior parte delle integrazioni. Checkout Sessions copre casi d’uso simili a quelli di Payment Intents (raccolta di pagamenti di base utilizzando `price_data` o creazione di un checkout completo con voci riga, imposte e così via). Alcune funzioni, come Adaptive Pricing, sono disponibili solo con Checkout Sessions. Non utilizzare l’API Payment Intent a meno che l’utente non lo richieda esplicitamente, poiché richiede una quantità di codice significativamente maggiore. Ulteriori informazioni sugli elementi con l’API Checkout Sessions: https://docs.stripe.com/payments/quickstart-checkout-sessions. con Checkout Sessions (`ui_mode: "elements"`) e Payment Element, `client_secret` inizializza Checkout stesso (`stripe.initCheckoutElementsSdk`, oppure utilizza CheckoutElementsProvider con React) e tu confermi il pagamento sul lato client in modo diverso. Se utilizzi React, assicurati di importare da `@stripe/react-stripe-js/checkout`, utilizza `CheckoutElementsProvider` con la chiave privata client e conferma utilizzando `checkout.confirm`. Se utilizzi HTML, assicurati di utilizzare `checkout = stripe.initCheckoutElementsSdk({clientSecret: promise}); checkout.createPaymentElement(); paymentElement = checkout.createPaymentElement(); paymentElement.mount("#payment-element");` e conferma con `loadActionsResult = await checkout.loadActions(); actions = loadActionsResult.actions; error = await actions.confirm();`. La differenza principale tra l’API [Payment Intents](https://docs.stripe.com/api/payment_intents.md) e l’API [Setup Intents](https://docs.stripe.com/api/setup_intents.md) è il loro scopo. Si utilizza l’API Payment Intents per riscuotere pagamenti ed effettuare addebiti immediati a un cliente. Crea un addebito ed elabora una transazione per riscuotere fondi. Si utilizza invece l’API Setup Intents per raccogliere e salvare i dati dei metodi di pagamento per uso futuro senza creare un addebito. Configura le credenziali di pagamento senza elaborare un pagamento. Poiché sia gli addebiti immediati che il salvataggio di un metodo di pagamento possono richiedere passaggi *asincroni* (Asynchronous refers to events happening at independent times in independent systems) da parte del cliente, queste API utilizzano lo stesso modello di macchina a stati. | API Payment Intents | API Setup Intents | | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | Crea un addebitare istantaneo | Crea nessun addebito | | Monitora il ciclo di vita di un pagamento | Monitora lo stato di avanzamento della configurazione di un metodo di pagamento | | Utilizza 3D Secure per autenticare il cliente per la transazione applicabile. | Utilizza 3D Secure per autenticare una modalità di pagamento senza addebiti e crea un mandato o un accordo per addebiti futuri | #### PaymentIntents Un PaymentIntent tiene traccia del ciclo di vita di un pagamento dalla creazione al checkout, attivando ulteriori passaggi di autenticazione quando necessario. ## Richiede un metodo di pagamento After you create the PaymentIntent, its [status](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) is `requires_payment_method` until you attach a [payment method](https://docs.stripe.com/payments/payment-methods/overview.md). Create the PaymentIntent as soon as you know the amount to charge so Stripe can record all attempted payments. ## Richiede conferma After your customer provides payment information, the PaymentIntent enters the `requires_confirmation` status and is ready to confirm. Most integrations skip this state because they submit payment method information when the payment is confirmed. ## Intervento necessario If the payment requires additional actions, such as authenticating with [3D Secure](https://docs.stripe.com/payments/3d-secure.md), the PaymentIntent has a status of `requires_action`. > #### Modifiche dell'API > > Le versioni dell’API antecedenti la data [11-02-2019](https://docs.stripe.com/upgrades.md#2019-02-11) mostrano `requires_source` anziché `requires_payment_method` e `requires_source_action` anziché `requires_action`. ## In elaborazione Una volta gestite le operazioni necessarie, il PaymentIntent passa allo stato `processing` per i *metodi di pagamento asincroni* (Asynchronous payment methods can take up to several days to confirm whether the payment has been successful. During this time, the payment can't be guaranteed), ad esempio gli addebiti bancari. L’elaborazione di questi tipi di metodi di pagamento può richiedere alcuni giorni. Altri metodi di pagamento, come le carte, vengono elaborati più rapidamente e non passano allo stato `processing`. If you’re separately [authorizing and capturing funds](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md), your PaymentIntent can instead move to `requires_capture`. In that case, attempting to capture the funds moves it to `processing` or `succeeded` depending on the payment method. ## Riuscito A PaymentIntent with a status of `succeeded` means that the payment flow it’s driving is complete. The funds are now in your account and you can confidently fulfill the order. If you need to refund the customer, you can use the [Refunds](https://docs.stripe.com/api/refunds.md) API. If the payment attempt fails (for example due to a decline), the PaymentIntent’s status returns to `requires_payment_method` so that the payment can be retried. ## Annullato Puoi annullare un PaymentIntent in qualsiasi momento prima che sia in stato di `processing` o `succeeded`. Se lo annulli, il PaymentIntent non sarà più valido per i tentativi di pagamento futuri e non potrà essere annullato. Se sono stati trattenuti fondi, l’annullamento li sblocca. Puoi annullare un PaymentIntent in stato di `processing` se il metodo di pagamento associato è [ACH](https://docs.stripe.com/payments/ach-direct-debit.md), [ACSS](https://docs.stripe.com/payments/acss-debit.md), [AU BECS](https://docs.stripe.com/payments/au-becs-debit.md), [BACS](https://docs.stripe.com/payments/payment-methods/bacs-debit.md), [NZ BECS](https://docs.stripe.com/payments/nz-bank-account.md) o [SEPA](https://docs.stripe.com/payments/sepa-debit.md). Tuttavia, potrebbe non andare a buon fine a causa di una finestra temporale di annullamento limitata e variabile. Inoltre, i PaymentIntent potrebbero passare automaticamente allo stato `canceled` dopo essere stati [confermati](https://docs.stripe.com/api/payment_intents/confirm.md) troppe volte. #### SetupIntent Un SetupIntent tiene traccia del ciclo di vita di un metodo di pagamento dalla creazione al checkout, attivando ulteriori passaggi di autenticazione quando necessario. ## Richiede un metodo di pagamento Quando viene creato il SetupIntent, il suo [stato](https://docs.stripe.com/api/setup_intents/object.md#setup_intent_object-status) è `requires_payment_method` finché non viene associata una modalità di pagamento. ## Richiede conferma After the customer provides their payment method information, the SetupIntent enters the `requires_confirmation` status and is ready to confirm. Most integrations skip this state because they submit payment method information when the SetupIntent is confirmed. ## Intervento necessario If the setup requires additional actions, such as authenticating with 3D Secure, the SetupIntent has a status of `requires_action`. > #### Modifiche dell'API > > Le versioni dell’API antecedenti la data [11-02-2019](https://docs.stripe.com/upgrades.md#2019-02-11) mostrano `requires_source` anziché `requires_payment_method` e `requires_source_action` anziché `requires_action`. ## In elaborazione Dopo aver gestito le azioni richieste, SetupIntent passa allo stato `processing`. Sebbene alcuni metodi di pagamento (ad esempio le carte) possano essere elaborati rapidamente, l’elaborazione di altri metodi di pagamento può richiedere diversi giorni. ## Riuscito Un SetupIntent con stato `succeeded` indica che la configurazione è riuscita. Ora puoi associare questo metodo di pagamento a un oggetto Customer e utilizzare questo metodo di pagamento per i pagamenti futuri. Se la configurazione non va a buon fine, lo stato del SetupIntent torna a `requires_payment_method`. ## Annullato You can cancel a SetupIntent at any point before it’s in a `processing` or `succeeded` state. Canceling it invalidates the SetupIntent for future setup attempts, and can’t be undone.