Ir a contenido
Crea una cuenta
o
inicia sesión
Logotipo de la documentación de Stripe
/
Pregúntale a la IA
Crear cuenta
Iniciar sesión
Empezar
Pagos
Automatización de finanzas
Plataformas y marketplaces
Gestión del dinero
Herramientas para desarrolladores
Empezar
Pagos
Automatización de finanzas
Empezar
Pagos
Automatización de finanzas
Plataformas y marketplaces
Gestión del dinero
ResumenExplora todos los productos
Start building
Empezar a desarrollar
Proyectos de muestra
Acerca de las API
    Visita a la API
    API Payment Intents
    API Setup Intents
    Métodos de pago
    Productos y precios
    API anteriores
      Cargos
      Fuentes
        Transición a nuevas API
        Fuentes de tarjetas
        Fuentes y clientes
        Adeudo directo ACH
        Plataformas Connect
        Mejores prácticas
        iOS
        Android
    Fases de lanzamiento
Crear con LLM
Utiliza Stripe sin necesidad de programación
Configura Stripe
Crea una cuenta
Dashboard web
Dashboard móvil
Migrar a Stripe
Gestiona el riesgo de fraude
Comprender el fraude
Protección antifraude de Radar
Gestiona disputas
Verificar identidades
InicioEmpezarAbout the APIsOlder APIsSources

Mejores prácticas para usar SourcesObsoleto

Mejores prácticas para aceptar varios métodos de pagos con una única integración.

Advertencia

We deprecated the Sources API and plan to remove support for local payment methods. If you currently handle any local payment methods using the Sources API, you must migrate them to the Payment Methods API.

While we don’t plan to remove support for card payments, we recommend replacing any use of the Sources API with the PaymentMethods API, which provides access to our latest features and payment method types.

La flexibilidad de la API Sources te ayuda a minimizar los cambios necesarios para admitir otros métodos de pago mientras los añades.

Flujo habitual para los pagos con tarjeta

En un flujo habitual del proceso de compra para pagos con tarjeta (sin incluir 3D Secure), tu integración recopila información de la tarjeta y crea una fuente, y la utiliza para hacer una solicitud de cargo. Dado que no requiere ninguna medida adicional por parte del cliente y los pagos con tarjeta ofrecen una confirmación sincrónica, podemos confirmar de inmediato si el pago es satisfactorio y que los fondos están garantizados; no es necesario usar webhooks.

El uso obligatorio de webhooks

Es posible que otros métodos de pago requieran que tu cliente tome medidas adicionales (por ejemplo, un redireccionamiento) antes de que la fuente pase a ser chargeable y pueda usarse para hacer una solicitud de cargo (por ejemplo, iDEAL). Esta transición suele ser asíncrona y puede incluso ocurrir después de que el cliente abandone tu sitio web. Por estos motivos, tu integración debe recurrir a los webhooks para determinar el momento en el que una fuente pasa a ser cobrable antes de crear un cargo.

Stripe envía los siguientes eventos de webhook para notificarte sobre los cambios en el estado de la fuente:

EventoDescripciónAcción sugerida
source.chargeableUn objeto Source pasa a ser chargeable después de que el cliente autentica y verifica el pago.Crea un Charge.
source.failedEl objeto Source no se ha convertido en cobrable porque tu cliente no ha querido autenticar el pago.Cancela el pedido y, opcionalmente, reincorpora al cliente a tu flujo de pagos.
source.canceledHa vencido un objeto Source y no puedes usarlo para crear un cargo.Cancela el pedido y, opcionalmente, reincorpora al cliente a tu flujo de pagos.

De la misma manera, al crear un cargo, algunos métodos de pago asíncronos pueden tardar días en confirmar los fondos y efectuar el pago, lo que exige que los webhooks sepan cuándo confirmar y, finalmente, cuándo completar el pedido.

Stripe envía los siguientes eventos de webhook para notificarte sobre los cambios en el estado del cargo:

EventoDescripciónAcción sugerida
charge.pendingEl Charge está pendiente (solo pagos asíncronos).No se requiere ninguna acción.
charge.succeededEl Charge se ha efectuado correctamente y se ha completado el pago.Completa el pedido y envíale una confirmación al cliente por correo electrónico.
charge.failedEl Charge ha fallado y no se ha podido completar el pago.Cancela el pedido y, opcionalmente, reincorpora al cliente a tu flujo de pagos.

Creación de una integración flexible

Para asegurarte de que tu proceso de compra es flexible y está listo para aceptar varios métodos de pago, te recomendamos el siguiente enfoque:

Creación de la fuente

Al crear Sources, registra el ID de la fuente en la representación interna de tu pedido para que puedas recuperar el pedido cuando recibas y proceses webhooks source.chargeable. Asegúrate de indexar los objetos de tu pedido en función del atributo de esta source para que la búsqueda sea eficaz.

Creación del cargo

Con la entrega del webhook source.chargeable, se cobra a la Source. Al recibir el webhook, recupera la representación interna de tu pedido mediante una búsqueda basada en el ID de la fuente recibido y verifica que el pedido está a la espera de pago.

Al hacer una solicitud de un cargo, utiliza tu ID interno del pedido como clave de idempotencia para evitar posibles conflictos. Asimismo, si la fuente es reutilizable y quieres reutilizarla, asegúrate de vincularla a un Customer antes de cargarla. Consulta las guías de Reutilizables o de un solo uso y de Sources y Customers para obtener más información sobre cómo gestionar las Sources de un solo uso o reutilizables y sobre cómo interactuar con Customers.

De manera similar a la creación de la fuente, registra el ID del cargo en la representación interna de tu pedido para que puedas recuperar el pedido cuando recibas y proceses webhooks charge.succeeded.

Página de confirmación

Después de que tu cliente tome las medidas necesarias para autorizar un pago (por ejemplo, ha seguido un redireccionamiento), deberías presentar una página de confirmación en la que se muestre el estado del pedido. Puedes hacerlo sondeando el pedido internamente.

Como la latencia de la entrega del webhook no está garantizada, si quieres seguir acelerando tu página de confirmación, puedes sondear el estado de la Source asociada en el código del lado del cliente. Cuando detectes que tu Source se ha convertido en chargeable, puedes iniciar la creación de un Charge usando dicha Source sin esperar a que llegue el webhook source.chargeable.

Ten en cuenta que algunos tipos de Sources tardan minutos (e incluso días) en convertirse en chargeable. Si decides sondear la Source, te recomendamos que pares en algún momento y que le comuniques al cliente que su pedido está a la espera de confirmación del pago; luego, envíale un correo electrónico con la confirmación del pago de forma asíncrona. Puedes consultar nuestra mensajería recomendada para clientes para cada estado de la Source en la tabla que aparece a continuación.

Los sondeos del lado del cliente se detienen si el cliente abandona tu página. Esto significa que también debes integrarlo con el webhook source.chargeable para asegurarte de que no pierdes el seguimiento del pedido de tu cliente.

Si utilizas Stripe.js, puedes usar stripe.retrieveSource() para implementar tu propio sondeo:

// In order-confirmation-page.js const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // After some amount of time, we should stop trying to resolve the order synchronously: const MAX_POLL_COUNT = 10; let pollCount = 0; const pollForSourceStatus = async () => { const {source} = await stripe.retrieveSource({id: SOURCE_ID, client_secret: CLIENT_SECRET}) if (source.status === 'chargeable') { // Make a request to your server to charge the Source. // Depending on the Charge status, show your customer the relevant message. } else if (source.status === 'pending' && pollCount < MAX_POLL_COUNT) { // Try again in a second, if the Source is still `pending`: pollCount += 1; setTimeout(pollForSourceStatus, 1000); } else { // Depending on the Source status, show your customer the relevant message. } }; pollForSourceStatus();

La tabla que aparece a continuación contiene recomendaciones para mensajes para posibles clientes que puedes mostrar en función del estado de la Source.

EstadoMensajería para el cliente
La fuente es chargeableSe ha recibido tu pedido y está a la espera de confirmación del pago.
La fuente está canceled.Tu pago ha fallado y no puede procesarse tu pedido.
La fuente está failed.Tu pago ha fallado y no puede procesarse tu pedido.
La fuente sigue estando pending tras varios sondeosSe ha recibido tu pedido y está a la espera de confirmación del pago.

Tras crear un Charge (y en caso de que el usuario siga en la página de confirmación), puedes mostrar los siguientes mensajes en función del estado del Charge:

EstadoMensajería para el cliente
El cargo está pendingSe ha recibido tu pedido y está a la espera de confirmación del pago.
El cargo está failedTu pago ha fallado y no puede procesarse tu pedido.
El cargo está succeededTu pago se ha confirmado y tu pedido se ha completado.

Confirmación del pedido

Confirma tu pedido solo después de que hayas recibido el webhook charge.succeeded (esto puede ocurrir de forma instantánea, pero también es posible que no sea así). Envía un correo electrónico al cliente en este punto porque la confirmación del pago puede tardar días en el caso de pagos asíncronos.

Cancelaciones y errores

Escucha los webhooks source.canceled y source.failed, y asegúrate de cancelar el pedido asociado a la fuente correspondiente. Si sigues las mejores prácticas indicadas anteriormente, no deberías recibir un source.canceled webhook para fuentes que antes eran chargeable (ya que el gestor de tu source.chargeable debería haber creado un cargo inmediatamente, evitando así que la fuente se cancele). Igualmente, recibirás webhooks source.canceled para fuentes que nunca han sido chargeable y que se mantienen como pending, que, por lo general, suele indicar que tu cliente ha abandonado el flujo del proceso de compra anticipadamente. También puedes recibir un webhook source.failed cuando el Customer rechace el pago o cuando haya un error técnico en el esquema del pago.

También debes escuchar los webhooks charge.failed para asegurarte de cancelar el pedido asociado al cargo recibido.

Para cada uno de estos eventos, te recomendamos que notifiques a tu cliente que ha habido un error con el pedido y lo invites a volver a tu flujo de pago si lo desea.

Véase también

  • Métodos de pago aceptados
  • Referencia de la API Sources
  • Consideraciones para las plataformas de Stripe Connect
¿Te ha sido útil la página?
SíNo
¿Necesitas ayuda? Ponte en contacto con el equipo de soporte.
Únete a nuestro programa de acceso anticipado.
Echa un vistazo a nuestro registro de cambios.
¿Tienes alguna pregunta? Ponte en contacto con el equipo de ventas.
¿LLM? Lee llms.txt.
Con tecnología de Markdoc