# Confronto tra l'API Charges e l'API Payment Intents Differenze tra le due API di pagamento principali di Stripe e informazioni su quando utilizzarle ## Come funzionano le API Stripe per i pagamenti Attualmente Stripe consente di accettare i pagamenti in tre modi: - Stripe Checkout - API Charges - *API Payment Intents* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) è una pagina di pagamento predefinita a cui puoi reindirizzare il cliente per acquisti e *abbonamenti* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) semplici. Offre molte funzionalità, come Apple Pay, Google Pay, internazionalizzazione e convalida moduli. Le API [Charges](https://docs.stripe.com/api/charges.md) e [Payment Intents](https://docs.stripe.com/api/payment_intents.md) ti permettono di creare flussi ed esperienze di pagamento personalizzati. Payment Intents è l’API che accomuna tutti i prodotti e i metodi di pagamento Stripe. L’API Charges non diventerà obsoleta, ma le nuove funzioni saranno disponibili solo con l’API Payment Intents. Per un confronto completo delle funzionalità, vedi la tabella seguente: | API Charges | API Payment Intents | | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Utilizzata dalle aziende con clienti principalmente negli Stati Uniti e in Canada che desiderano un modo semplice per accettare le carte. | Richiesta per le aziende che accettano più modalità di pagamento e carte che richiedono l’autenticazione (ad esempio. l’*autenticazione forte del cliente (SCA)* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase) in Europa). | | Funziona su Web, iOS e Android. | Funziona su Web, iOS e Android. Può essere utilizzata anche per accettare pagamenti in negozio con Terminal. | | Supporta le carte e tutti i metodi di pagamento nell’[API Sources](https://docs.stripe.com/sources.md). | Supporta carte, carte che richiedono 3DS, iDEAL, SEPA e [molti altri metodi di pagamento](https://docs.stripe.com/payments/payment-methods/overview.md). | | **Non è compatibile con la SCA** | *È compatibile con la SCA* (Strong Customer Authentication (SCA) is a regulatory requirement in effect as of September 14, 2019, that impacts many European online payments. It requires customers to use two-factor authentication like 3D Secure to verify their purchase) | ## Migrare il codice che legge dagli addebiti Se la tua applicazione ha più flussi di pagamento che intendi migrare in modo incrementale dall’API Charges all’[Payment Intents API](https://docs.stripe.com/payments/payment-intents.md), devi prima aggiornare il codice che legge dall’oggetto [Charge](https://docs.stripe.com/api/charges.md). A tale scopo, l’oggetto Charge presenta due proprietà aggiuntive, [payment_method_details](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details) e [billing_details](https://docs.stripe.com/api/charges/object.md#charge_object-billing_details), che forniscono un’interfaccia coerente per la lettura dei dettagli del metodo di pagamento utilizzato per l’addebito. Questi campi sono disponibili in tutte le versioni API e negli oggetti Charge creati sia con l’API Charges sia con l’API Payment Intents. La tabella seguente indica le proprietà comunemente utilizzate in un addebito e come accedere alle stesse informazioni utilizzando le proprietà aggiuntive: #### Carte e conti bancari | Descrizione | Prima | Dopo | | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | Dettagli della modalità di pagamento utilizzata per creare un addebito | `charge.source` | `charge.payment_method_details` | | ID della modalità di pagamento utilizzata per l’addebito | `charge.source.id` | `charge.payment_method` | | Tipo di modalità di pagamento utilizzato | `charge.source.object` (ad esempio, `card` o `bank_account`) | `charge.payment_method_details.type` | | Informazioni di addebito (ad esempio, codice postale) | `charge.source.address_zip` | `charge.billing_details.address.postal_code` | | Nome del titolare della carta | `charge.source.name` | `charge.billing_details.name` | | Ultime quattro cifre della carta utilizzata | `charge.source.last4` | `charge.payment_method_details.card.last4` | | Impronta della carta | `charge.source.fingerprint` | `charge.payment_method_details.card.fingerprint` | | Stato della verifica CVC per l’addebito | `charge.source.cvc_check` | `charge.payment_method_details.card.checks.cvc_check` | | Valori circuito carta | `charge.source.brand` può avere uno dei seguenti valori: `American Express`, `Diners Club`, `Discover`, `JCB`, `MasterCard`, `UnionPay`, `Visa` | `charge.payment_method_details.card.brand` può avere uno dei seguenti valori: `amex`, `diners`, `discover`, `jcb`, `mastercard`, `unionpay`, `visa` | | Valore enum Google Pay | `charge.source.tokenization_method` ha il valore `android_pay` | `card.wallet.type` in `charge.payment_method_details` ha il valore `google_pay` | #### Sources | Descrizione | Prima | Dopo | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | Dettagli della modalità di pagamento utilizzata per creare un addebito | `charge.source` | `charge.payment_method_details` | | ID della modalità di pagamento utilizzata per l’addebito | `charge.source.id` (`charge.source.three_d_secure.card` se è utilizzata l’origine 3D Secure) | `charge.payment_method` | | Tipo di modalità di pagamento utilizzato | `charge.source.object == 'source' && charge.source.type` (a meno che `charge.source.type` non abbia il valore `three_d_secure`) | `charge.payment_method_details.type` | | Informazioni di addebito (ad esempio, codice postale) | `charge.source.owner.address.postal_code` | `charge.billing_details.address.postal_code` | | Nome del titolare della carta | `charge.source.owner.name` | `charge.billing_details.name` | | Ultime quattro cifre della carta utilizzata | `charge.source.card.last4` `charge.source.three_d_secure.last4` | `charge.payment_method_details.card.last4` | | Riuscita o meno dell’autenticazione 3D Secure | `charge.source.object == 'source' && charge.source.type == 'three_d_secure'` | `charge.payment_method_details.card.three_d_secure.succeeded` | | Impronta della carta | `charge.source.card.fingerprint` | `charge.payment_method_details.card.fingerprint` | | Stato della verifica CVC per l’addebito | `charge.source.card.cvc_check` | `charge.payment_method_details.card.checks.cvc_check` | | Valori circuito carta | `charge.source.card.brand` può avere uno dei seguenti valori: `American Express`, `Diners Club`, `Discover`, `JCB`, `MasterCard`, `UnionPay`, `Visa` | `charge.payment_method_details.card.brand` può avere uno dei seguenti valori: `amex`, `diners`, `discover`, `jcb`, `mastercard`, `unionpay`, `visa` | | Valore enum Google Pay | `charge.source.card.tokenization_method` ha il valore `android_pay` | `card.wallet.type` in `charge.payment_method_details` ha il valore `google_pay` | ## See also - [Eseguire la migrazione a Payment Intents](https://docs.stripe.com/payments/payment-intents/migration.md)