Ir a contenido
Crea una cuenta
o
Inicia sesión
Logotipo de Stripe Docs
/
Pregúntale a la IA
Crear una cuenta
Iniciar sesión
Empieza ahora
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Herramientas para desarrolladores
Resumen
Acerca de Stripe Payments
Actualiza tu integración
Análisis de pagos
Pagos electrónicos
ResumenEncuentra tu caso de usoPagos administrados
Usa Payment Links
Crea una página del proceso de compra
    Resumen
    Guías de inicio rápido
    Personaliza el estilo
    Recopila información adicional
    Cobrar impuestos
    Actualiza en forma dinámica el proceso de compra
    Gestiona tu catálogo de productos
    Suscripciones
    Gestiona los métodos de pago
    Permite que los clientes paguen en su moneda local
    Agrega descuentos, ventas adicionales y artículos opcionales
    Configurar pagos futuros
    Guardar los datos de pago durante el pago
    Aprueba pagos manualmente en tu servidor
    Después del pago
      Completa pedidos
      Envía recibos y facturas pagadas
      Personaliza el comportamiento de redireccionamiento
      Recuperar carritos abandonados
      Analiza el canal de conversión
    Elements con registro de cambios beta de la API Checkout Sessions
    Migrar desde un proceso de compra heredado
    Migrar Checkout para usar Prices
Desarrolla una integración avanzada
Desarrolla una integración en la aplicación
Métodos de pago
Agrega métodos de pago
Gestiona los métodos de pago
Finalización de compra más rápida con Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Elements en la aplicación
Escenarios de pago
Flujos de pago personalizados
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
Otros productos de Stripe
Financial Connections
Criptomonedas
Climate
InicioPagosBuild a checkout pageAfter the payment

Completa pedidos

Aprende a ejecutar los pagos recibidos con la API Checkout Sessions.

Copiar página

Cuando recibes un pago con la API Checkout Sessions (incluida Payment Links), es posible que tengas que tomar medidas para proporcionarle a tu cliente lo que pagó. Por ejemplo, es posible que tengas que concederle acceso a un servicio o que tengas que enviarle bienes físicos. Este proceso se conoce como ejecución de un pedido y tienes dos maneras de gestionarlo:

  • Manual: puedes completar los pedidos manualmente con la información que Stripe pone a tu disposición. Por ejemplo, puedes supervisar el Dashboard, verificar los correos electrónicos de notificación de pagos, consultar los informes y, luego, completar los pedidos.
  • Automático: puedes crear un sistema de ejecución de pedidos automatizado. Recommended

La primera opción funciona para empresas experimentales o de bajo volumen, pero, para la mayoría de las situaciones, recomendamos automatizar la ejecución de pedidos. El resto de esta guía te muestra cómo crear un sistema de ejecución de pedidos automática.

Cumplimiento de ejecución de un pedido

El sistema de cumplimiento de pedidos automático que se describe a continuación usa una combinación de webhooks y un redireccionamiento a tu sitio web para activar el cumplimiento del pedido. Debes usar webhooks para asegurarte de que cada pago se cumpla y redireccionamientos para permitir que tus clientes accedan a los servicios o a los detalles de ejecución del pedido inmediatamente después de pagar.

Nota

Payment Links usa Checkout, por lo que toda la información que se encuentra a continuación se aplica tanto a Payment Links como a Checkout, a menos que se indique lo contrario.

Crea una función de confirmación de pedido
Lado del servidor

Crea una función en tu servidor para completar los pagos efectuados correctamente. Los webhooks activan esta función, y se la llama cuando se remite a los clientes a tu sitio web después de completar el proceso de compra. Esta guía se refiere a esta función como fulfill_checkout, pero puedes nombrarla como quieras.

Evita la necesidad de completar más pedidos

Completa el pedido solo una vez por pago. Debido a cómo funcionan esta integración e Internet, es posible que se llame a la función fulfill_checkout varias veces, posiblemente al mismo tiempo, para la misma Checkout Session. Realizar el proceso de compra una sola vez garantiza que esto no provoque un comportamiento no deseado.

La función fulfill_checkout debe hacer lo siguiente:

  1. Gestionar correctamente las llamadas múltiples con la mismo ID de la Checkout Session.
  2. Aceptar un ID de Checkout Session como argumento.
  3. Recuperar la Checkout Session de la API con la propiedad line_items expandida.
  4. Comprobar la propiedad payment_status para determinar si requiere gestión logística.
  5. Realizar la gestión logística de las partidas.
  6. Registrar el estado de la gestión logística para la Checkout Session proporcionada.

Usa el código que aparece a continuación como punto de partida para tu función fulfill_checkout. Los comentarios TODO indican cualquier funcionalidad que debes implementar.

Nota

Los fragmentos de código que aparecen a continuación podrían denominar a la función fulfill_checkout fulfillCheckout o FulfillCheckout según el idioma seleccionado, pero todos representan la misma función.

Ruby
def fulfill_checkout(session_id) # 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'
puts "Fullfilling Checkout Session #{session_id}" # TODO: Make this function safe to run multiple times, # even concurrently, with the same session ID # TODO: Make sure fulfillment hasn't already been # performed for this Checkout Session # Retrieve the Checkout Session from the API with line_items expanded checkout_session = Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items'], }) # Check the Checkout Session's payment_status property # to determine if fulfillment should be performed if checkout_session.payment_status != 'unpaid' # TODO: Perform fulfillment of the line items # TODO: Record/save fulfillment status for this # Checkout Session end end

Nota

Si una Checkout Session tiene muchas partidas, usa la paginación automática con la API de partidas de Checkout para recuperarlas todas.

Según los métodos de pago que aceptes y las necesidades de tu empresa, es posible que te convenga que la función fulfill_checkout haga lo siguiente:

  • Proporcionar acceso a los servicios.
  • Activar el envío de mercancías.
  • Guardar una copia de los datos de pago y las partidas en tu propia base de datos.
  • Enviar al cliente un correo electrónico de recibo personalizado si no tienes habilitados los recibos de Stripe.
  • Conciliar las partidas y las cantidades compradas si permites que los clientes ajusten las cantidades en Checkout.
  • Actualizar el inventario o los registros de existencias.

Crea un controlador de eventos de pago
Lado del servidor

Para activar la gestión logística, crea un controlador de eventos de webhooks que reciba notificaciones de los eventos de pago y active tu función fulfill_checkout.

Cuando alguien te paga, se crea un evento checkout.session.completed. Configura un punto de conexión en tu servidor para aceptar, procesar y confirmar la recepción de estos eventos.

Métodos de pago inmediatos versus métodos de pago diferidos

Algunos métodos de pago no son instantáneos, como el ACH direct debit y otras transferencias bancarias. Esto significa que los fondos no estarán disponibles de inmediato cuando se complete el proceso de compra. Los métodos de pago diferidos generan un evento de checkout.session.async_payment_succeeded cuando el pago se realiza con éxito más tarde. El estado del objeto es en proceso hasta que el estado del pago se confirma o falla.

Nota

El secreto de webhooks (whsec_...) que aparece en el código a continuación procede de la CLI de Stripe o de tu punto de conexión de webhooks. Puedes usar la CLI de Stripe para pruebas locales, y Stripe usa un punto de conexión de webhook para enviar eventos a tu controlador cuando se está ejecutando en un servidor. Consulta la siguiente sección para obtener más información.

Ruby
require 'sinatra' # Use the secret provided by Stripe CLI for local testing # or your webhook endpoint's secret. endpoint_secret = 'whsec_...' post '/webhook' do event = nil # Verify webhook signature and extract the event # See https://stripe.com/docs/webhooks#verify-events for more information. begin sig_header = request.env['HTTP_STRIPE_SIGNATURE'] payload = request.body.read event = Stripe::Webhook.construct_event(payload, sig_header, endpoint_secret) rescue JSON::ParserError => e # Invalid payload return status 400 rescue Stripe::SignatureVerificationError => e # Invalid signature return status 400 end if event['type'] == 'checkout.session.completed' || event['type'] == 'checkout.session.async_payment_succeeded' fulfill_checkout(event['data']['object']['id']) end status 200 end

También es posible que quieras gestionar y recibir notificaciones de eventos checkout.session.async_payment_failed. Por ejemplo, puedes enviar un correo electrónico a tu cliente cuando falle un pago retrasado.

Prueba el controlador de eventos a nivel local

La forma más rápida de desarrollar y probar tu controlador de eventos de webhooks es con la CLI de Stripe. Si no tienes la CLI de Stripe, sigue la guía de instalación para empezar.

Cuando la CLI de Stripe está instalada, puedes probar tu controlador de eventos localmente. Ejecuta tu servidor (por ejemplo, en localhost:4242) y, luego, ejecuta el comando stripe listen para que la CLI de Stripe reenvíe los eventos a tu servidor local:

Command Line
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)

Agrega el secreto de webhooks (whsec_...) a tu código de gestión de eventos y, a continuación, prueba la gestión logística accediendo a Checkout como cliente:

  • Presiona el botón de confirmación de compra que te lleva a Checkout, o visita tu Payment Link
  • Proporciona los siguientes datos de prueba en Checkout:
    • Introduce 4242 4242 4242 4242 como número de tarjeta
    • Introduce cualquier fecha futura como fecha de vencimiento de la tarjeta
    • Introduce cualquier número de tres dígitos para el CVC
    • Introduce cualquier código postal de pagos (90210)
  • Presiona el botón Paga

Cuando se efectivice el pago, verifica lo siguiente:

  • En la línea de comandos, donde se está ejecutando stripe listen, se muestra un evento checkout.session.completed reenviado a tu servidor local.
  • Los registros de tu servidor muestran el resultado esperado de tu función fulfill_checkout.

Crea un punto de conexión de webhooks

Después de realizar la prueba local, pon en marcha tu controlador de eventos de webhook en tu servidor. A continuación, crea un punto de conexión de webhooks para enviar eventos checkout.session.completed a tu servidor y luego vuelve a probar el flujo de compra.

Configura la URL de la página de destino
Recomendado

Configura el Checkout para que se remita al cliente a una página en tu sitio web después de que complete el proceso de compra. Incluye el marcador de posición {CHECKOUT_SESSION_ID} en la URL de tu página, que se reemplaza con el ID de la sesión de Checkout cuando se redirige al cliente desde el Checkout.

Proceso de compra alojado

En el caso de las Checkout Sessions con la ui_mode predeterminada de hosted, establece el valor success_url.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d mode=payment \ --data-urlencode success_url="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Nota

Cuando tienes un punto de conexión de webhook configurado para recibir notificaciones de los eventos checkout.session.completed y estableces un success_url, Checkout espera hasta 10 segundos a que tu servidor responda al evento de entrega del webhook para redirigir al cliente. Si usas este enfoque, asegúrate de que tu servidor responda a los eventos checkout.session.completed lo más rápido posible.

Este comportamiento no se admite para los puntos de conexión de webhook registrados en una cuenta de organización. Stripe no espera a que los puntos de conexión de webhooks de la organización que reciben notificaciones de checkout.sessions.completed respondan cuando se redirige a los clientes de Checkout.

Payment Links

Para Payment Links que crees con la API, establece el after_completion.redirect.url.

Command Line
cURL
curl https://api.stripe.com/v1/payment_links \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price]"=
{{PRICE_ID}}
\ -d "line_items[0][quantity]"=1 \ -d "after_completion[type]"=redirect \ --data-urlencode "after_completion[redirect][url]"="https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID}"

Para Payment Links que crees en el Dashboard:

  1. Ve a la pestaña Después del pago.
  2. Selecciona No mostrar página de confirmación.
  3. Proporciona la URL de tu página de destino que incluya el marcador de posición {CHECKOUT_SESSION_ID} (por ejemplo, https://example.com/after-checkout?session_id={CHECKOUT_SESSION_ID})

Activa la ejecución del pedido en tu página de destino
Recomendado

La recepción de notificaciones de eventos webhooks es necesaria para asegurarte de que siempre actives la gestión logística de cada pago, pero los webhooks a veces pueden retrasarse. Para optimizar tu flujo de pagos y garantizar la gestión logística inmediata cuando tu cliente esté presente, activa la gestión logística también desde tu página de inicio.

Usa el ID de la Checkout Session de la URL que especificaste en el paso anterior para hacer lo siguiente:

  1. Cuando tu servidor reciba una solicitud para tu página de inicio de Checkout, extraer el ID de la Checkout Session de la URL.
  2. Ejecutar la función fulfill_checkout con el ID proporcionado.
  3. Renderizar la página una vez completado el intento de gestión logística.

Al renderizar la página de inicio, se puede mostrar lo siguiente:

  • Detalles del proceso de gestión logística.
  • Enlaces o información sobre los servicios a los que el cliente ahora tiene acceso.
  • Detalles logísticos o de envío de bienes físicos.

Los webhooks son obligatorios

No puedes confiar en activar la gestión logística solo desde tu página de destino de Checkout, porque no es seguro que tus clientes visiten esa página. Por ejemplo, alguien puede pagar correctamente en Checkout y luego perder su conexión a Internet antes de que se cargue tu página de inicio.

Configura un controlador de eventos de webhooks para Stripe pueda enviar eventos de pago directamente a tu servidor sin pasar por el cliente. Los webhooks son la forma más confiable de confirmar cuándo recibes un pago. Si falla el envío de eventos de webhooks, Stripe lo reintenta varias veces.

¿Te fue útil esta página?
SíNo
¿Necesitas ayuda? Ponte en contacto con soporte.
Únete a nuestro programa de acceso anticipado.
Echa un vistazo a nuestro registro de cambios.
¿Tienes alguna pregunta? Contacto.
¿LLM? Lee llms.txt.
Con tecnología de Markdoc