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
      Cómo funcionan los PaymentIntents
      Actualizaciones del estado del pago
      Captura asíncrona
      Comparar con cargos
    API Setup Intents
    Métodos de pago
    API anteriores
    Fases de lanzamiento
Creación de modelos de lenguaje
Utiliza Stripe sin necesidad de programación
Configura Stripe
Crea una cuenta
Productos y precios
Dashboard web
Dashboard móvil
Migrar a Stripe
Migrar datos de clientes
Migrar datos de pago
Migra las suscripciones
Gestiona el riesgo de fraude
Comprender el fraude
Protección antifraude de Radar
Gestiona disputas
Verificar identidades
Regulatory support
InicioEmpezarAbout the APIsPayment Intents API

Actualizaciones del estado del pago

Controla y verifica el estado del pago para poder responder tanto a los pagos realizados correctamente como a los fallidos.

Copia la página

Los PaymentIntents se actualizan en respuesta a acciones ejecutadas por el cliente o el método de pago. Tu integración puede inspeccionar el PaymentIntent para determinar el estado del proceso de pago y que puedas tomar medidas comerciales o responder a estados que requieran mayor intervención.

También puedes usar el Dashboard de Stripe para configurar tu cuenta para que te envíe un correo electrónico sobre el estado de un pago, como los pagos realizados correctamente. Cambia tus notificaciones por correo electrónico en tu configuración de usuario.

Comprueba el estado del PaymentIntent del lado del cliente

Cuando el cliente completa un pago con la función confirmCardPayment, puedes inspeccionar el PaymentIntent devuelto para determinar su estado actual:

(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();

A continuación, indicamos algunos de los posibles resultados al utilizar la función confirmCardPayment:

EventoQué ha ocurridoIntegración prevista
Resuelve con un PaymentIntentEl cliente completó el pago en la página de proceso de compraInforma al cliente de que el pago se efectuó correctamente
Resuelve con un errorEl pago del cliente no pudo completarse en la página de proceso de compraMuestra un mensaje de error y solicita al cliente que vuelva a intentar el pago

La promesa devuelta por confirmCardPayment se resuelve cuando el proceso de pago finaliza o falla con un error. Cuando se completa con éxito y devuelve un PaymentIntent, el estado siempre será succeeded (o requires_capture si se captura más tarde). Cuando el pago requiere un paso adicional, como la autenticación, la promesa no se resuelve hasta que se completa ese paso o se agota el tiempo de espera.

Comprueba el estado del PaymentIntent del lado del cliente sin usar confirmCardPayment

Para comprobar el estado de un PaymentIntent sin usar la función confirmCardPayment, recupéralo de forma independiente usando la función retrievePaymentIntent y pasando el secreto del cliente .

Estos son algunos de los posibles estados del PaymentIntent después de una confirmación:

Qué ha ocurridoEstado previsto del PaymentIntent
El cliente completó el pago en la página de proceso de comprasucceeded
El cliente no completó el proceso de comprarequires_action
El pago del cliente no pudo completarse en la página de proceso de comprarequires_payment_method

Obtén más información sobre los estados de PaymentIntent.

(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();

Supervisa un PaymentIntent con webhooks

Stripe puede enviar eventos de webhooks a tu servidor para notificarte los cambios que se produzcan en el estado de un PaymentIntent. Esto resulta útil, por ejemplo, para determinar cuándo entregar bienes y servicios.

No intentes gestionar la ejecución de pedidos del lado del cliente porque el cliente puede salir de la página después de efectuar el pago, pero antes de que se inicie el proceso de ejecución de pedidos. En lugar de iniciarlo del lado del cliente, utiliza webhooks para supervisar el evento payment_intent.succeeded y gestionar la ejecución del pedido de forma asincrónica.

Precaución

Aunque es posible usar el sondeo en lugar de webhooks para supervisar los cambios provocados por las operaciones asincrónicas (es decir, recuperar repetidamente un PaymentIntent para que puedas comprobar su estado), esto es mucho menos fiable y puede causar problemas de limitación de velocidad. Stripe aplica límites de velocidad en las solicitudes de API, así que ten cuidado si usas el sondeo.

Para gestionar un evento de webhook, crea una ruta en tu servidor y configura el punto de conexión de webhook correspondiente en el Dashboard. Stripe envía el evento payment_intent.succeeded cuando el pago se realiza correctamente y el evento payment_intent.payment_failed cuando el pago falla.

La carga del webhook incluye el objeto PaymentIntent. El siguiente ejemplo muestra cómo gestionar ambos eventos:

Ruby
require 'sinatra' require 'stripe' post '/webhook' do payload = request.body.read sig_header = request.env['HTTP_STRIPE_SIGNATURE'] event = nil begin event = Stripe::Webhook.construct_event( payload, sig_header, endpoint_secret ) rescue JSON::ParserError => e # Invalid payload status 400 return rescue Stripe::SignatureVerificationError => e # Invalid signature status 400 return end case event['type'] when 'payment_intent.succeeded' intent = event['data']['object'] puts "Succeeded:", intent['id'] # Fulfill the customer's purchase when 'payment_intent.payment_failed' intent = event['data']['object'] error_message = intent['last_payment_error'] && intent['last_payment_error']['message'] puts "Failed:", intent['id'], error_message # Notify the customer that payment failed end status 200 end

Cuando el pago falla, puedes encontrar más detalles si inspeccionas la propiedad last_payment_error del PaymentIntent. Asimismo, puedes notificar al cliente que el pago no se completó y animarlo a intentarlo de nuevo con otro método de pago. Reutiliza el mismo PaymentIntent para continuar el seguimiento de la compra del cliente.

Cómo gestionar eventos de webhook específicos

La siguiente lista describe cómo gestionar eventos de webhook:

EventoDescripciónSiguientes pasos
processingEl pago del cliente se envió a Stripe correctamente. Solo se aplica a métodos de pago con notificación de confirmación diferida.Espera hasta saber si el pago iniciado se hizo efectivo o no.
succeededEl pago del cliente se ha realizado correctamenteCompleta el pedido de los productos o servicios comprados
amount_capturable_updatedSe autorizó el pago del cliente y está listo para la capturaCaptura los fondos disponibles para el pago
payment_failedLa red de tarjeta rechazó el pago del cliente o este caducóContacta con el cliente mediante un correo electrónico o una notificación emergente, y solicítale que proporcione otro método de pago

Para probar los webhooks localmente, puedes utilizar la CLI de Stripe. Después de instalarla, puedes reenviar los eventos a tu servidor:

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)

Obtén más información sobre cómo configurar webhooks.

Cómo identificar cargos en un PaymentIntent

Cuando intentas cobrar un pago a un cliente, el PaymentIntent crea un cargo. Para obtener el ID del cargo más reciente, inspecciona la propiedad latest_charge del PaymentIntent:

Ruby
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
intent = Stripe::PaymentIntent.retrieve('{{PAYMENT_INTENT_ID}}') latest_charge = intent.latest_charge

Para ver todos los cargos asociados con un PaymentIntent, incluidos los cargos fallidos, haz una lista de todos los cargos y especifica el parámetro payment_intent​.

Command Line
cURL
curl -G https://api.stripe.com/v1/charges \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_intent=
{{PAYMENT_INTENT_ID}}

Cómo llevar a cabo las siguientes acciones

Para completar el proceso de pago, algunos métodos de pago requieren pasos adicionales, como la autenticación. Stripe.js se encarga de estos pasos automáticamente al confirmar el PaymentIntent, pero si tiene una integración avanzada, puede que sea recomendable gestionarlos de forma manual.

La propiedad next_action del PaymentIntent muestra el siguiente paso que tu integración debe llevar a cabo para completar el pago. El tipo de próximas acciones posibles puede variar entre los distintos métodos de pago. Puedes encontrar una lista completa de las próximas acciones posibles en la documentación de la API.

Puedes consultar la documentación sobre los métodos de pago para obtener más información sobre cómo gestionar las próximas acciones necesarias.

¿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