# Diferencia entre API Charges y API Payment Intents Descubre las diferencias entre las dos API de pago principales y cuándo utilizarlas. ## Cómo son las API de pago de Stripe Actualmente, existen tres formas de aceptar pagos en Stripe: - 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) es una página de pago prediseñada a la cual puedes redireccionar a tus clientes para compras y *suscripciones* (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) simples. Ofrece muchas funcionalidades, como Apple Pay, Google Pay, internacionalización y validación de formularios. La API [Charges](https://docs.stripe.com/api/charges.md) y la API [Payment Intents](https://docs.stripe.com/api/payment_intents.md) te permiten diseñar experiencias y flujos de pago personalizados. La API Payment Intents es la API que unifica todos los productos y métodos de pago de Stripe. Si bien no dejaremos de usar la API Charges, las nuevas funcionalidades solo estarán disponibles en la API Payment Intents. Para ver un cuadro comparativo de todas las funciones, mira la tabla que aparece a abajo: | API Charges | API Payment Intents | | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Se utiliza por empresas con clientes principalmente de Estados Unidos y Canadá que buscan una forma simple de aceptar tarjetas. | Obligatorio para empresas que aceptan varios métodos de pago y tarjetas que exigen autenticación (por ejemplo, debido a la *autenticación reforzada de clientes* (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) en Europa). | | Funciona en la web, en iOS y en Android. | Funciona en la web, en iOS y en Android y también se puede utilizar para aceptar pagos en la tienda con Terminal. | | Acepta tarjetas y todos los métodos de pago en la [API Sources](https://docs.stripe.com/sources.md). | Acepta tarjetas, tarjetas que requieren 3DS, iDEAL, SEPA y [muchos otros métodos de pago](https://docs.stripe.com/payments/payment-methods/overview.md). | | **no está lista para SCA** | *Está lista para 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) | ## Cómo migrar el código que lee objetos Charge Si tienes una aplicación con múltiples flujos de pago y quieres migrar cada flujo de manera gradual de la API Charges a la [API Payment Intents](https://docs.stripe.com/payments/payment-intents.md), primero debes actualizar el código que lea desde el objeto [Charge](https://docs.stripe.com/api/charges.md). Para facilitar la tarea, el objeto Charge tiene dos propiedades más, [payment_method_details](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details) y [billing_details](https://docs.stripe.com/api/charges/object.md#charge_object-billing_details), que brindan una interfaz uniforme para leer los datos del método de pago utilizado para el cargo. Estos campos están disponibles en todas las versiones de la API y en los objetos Charge creados con la API Charges y la API Payment Intents. La siguiente tabla muestra las propiedades más utilizadas en un cargo y cómo se puede acceder a la misma información utilizando las propiedades adicionales: #### Tarjetas y cuentas bancarias | Descripción | Antes de | Después de | | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | Detalles del método de pago utilizado para crear un cargo | `charge.source` | `charge.payment_method_details` | | ID del método de pago utilizado para el cargo | `charge.source.id` | `charge.payment_method` | | Tipo de método de pago utilizado | `charge.source.object` (por ejemplo, `card` o `bank_account`) | `charge.payment_method_details.type` | | Información de facturación para el cargo (por ejemplo, código postal de facturación) | `charge.source.address_zip` | `charge.billing_details.address.postal_code` | | Nombre del titular de la tarjeta | `charge.source.name` | `charge.billing_details.name` | | Últimos cuatro dígitos de la tarjeta utilizada | `charge.source.last4` | `charge.payment_method_details.card.last4` | | Huella de la tarjeta | `charge.source.fingerprint` | `charge.payment_method_details.card.fingerprint` | | Estado de la verificación del CVC para el cargo | `charge.source.cvc_check` | `charge.payment_method_details.card.checks.cvc_check` | | Valores de la marca de tarjeta | La propiedad `charge.source.brand` puede ser de `American Express`, `Diners Club`, `Discover`, `JCB`, `MasterCard`, `UnionPay`, `Visa` | La propiedad `charge.payment_method_details.card.brand` puede ser de `amex`, `diners`, `discover`, `jcb`, `mastercard`, `unionpay`, `visa` | | Valor de enumeración de Google Pay | La propiedad `charge.source.tokenization_method` es `android_pay` | La propiedad `card.wallet.type` dentro de `charge.payment_method_details` es `google_pay` | #### Sources | Descripción | Antes de | Después de | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | Detalles del método de pago utilizado para crear un cargo | `charge.source` | `charge.payment_method_details` | | ID del método de pago utilizado para el cargo | `charge.source.id` (`charge.source.three_d_secure.card` si se utilizó la fuente 3D Secure) | `charge.payment_method` | | Tipo de método de pago utilizado | `charge.source.object == 'source' && charge.source.type` (a menos que `charge.source.type` sea `three_d_secure`) | `charge.payment_method_details.type` | | Información de facturación para el cargo (por ejemplo, código postal de facturación) | `charge.source.owner.address.postal_code` | `charge.billing_details.address.postal_code` | | Nombre del titular de la tarjeta | `charge.source.owner.name` | `charge.billing_details.name` | | Últimos cuatro dígitos de la tarjeta utilizada | `charge.source.card.last4` `charge.source.three_d_secure.last4` | `charge.payment_method_details.card.last4` | | Se haya completado o no la autenticación con 3D Secure | `charge.source.object == 'source' && charge.source.type == 'three_d_secure'` | `charge.payment_method_details.card.three_d_secure.succeeded` | | Huella de la tarjeta | `charge.source.card.fingerprint` | `charge.payment_method_details.card.fingerprint` | | Estado de la verificación del CVC para el cargo | `charge.source.card.cvc_check` | `charge.payment_method_details.card.checks.cvc_check` | | Valores de la marca de tarjeta | La propiedad `charge.source.card.brand` puede ser de `American Express`, `Diners Club`, `Discover`, `JCB`, `MasterCard`, `UnionPay`, `Visa` | La propiedad `charge.payment_method_details.card.brand` puede ser de `amex`, `diners`, `discover`, `jcb`, `mastercard`, `unionpay`, `visa` | | Valor de enumeración de Google Pay | La propiedad `charge.source.card.tokenization_method` es `android_pay` | La propiedad `card.wallet.type` dentro de `charge.payment_method_details` es `google_pay` | ## See also - [Migra a Payment Intents](https://docs.stripe.com/payments/payment-intents/migration.md)