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
Ingresos
Plataformas y marketplaces
Gestión del dinero
Developer resources
Resumen
Acerca de Stripe Payments
Actualiza tu integración
Análisis de pagos
Pagos por Internet
ResumenEncuentra tu caso de usoManaged Payments
Utiliza Payment Links
Crear una página del proceso de compra
    Resumen
    Guías de inicio rápido
    Personaliza el estilo
    Recolecta información adicional
    Cobrar impuestos
    Actualiza 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 divisa local
    Añade descuentos, ventas de productos de más valor y artículos opcionales
    Configurar pagos futuros
    Guardar datos de pago durante el pago
    Acepta pagos manualmente en tu servidor
    Después del pago
      Completar pedidos
      Envía recibos y facturas pagadas
      Personalizar el comportamiento de redireccionamiento
      Recuperar carritos abandonados
      Analizar la conversión de pagos
    Elements con registro de cambios beta de la API Checkout Sessions
    Migrar desde Checkout heredado
    Migrar Checkout para usar precios
Desarrolla una integración avanzada
Desarrolla una integración en la aplicación
Métodos de pago
Añadir métodos de pago
Gestiona los métodos de pago
Proceso de compra más rápido con Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Elements en la aplicación
Escenarios de pago
Administrar múltiples divisas
Flujos de pagos personalizados
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
Beyond payments
Incorporate your company
Criptomonedas
Financial Connections
Climate
InicioPagosBuild a checkout pageAfter the payment

Completa los pedidos

Descubre cómo completar los pagos recibidos con la API Checkout Sessions.

Copia la página

Cuando recibes un pago con la API Checkout Sessions, es posible que debas tomar medidas para proporcionar a tu cliente lo que pagó. Por ejemplo, es posible que necesites otorgarles acceso a un servicio o que necesites enviarles bienes físicos. Este proceso se conoce como cumplimiento y tienes dos maneras de gestionar este proceso:

  • Manualmente: Puedes completar los pedidos manualmente con la información que Stripe pone a tu disposición. Por ejemplo, puedes supervisar el Dashboard, consultar los correos electrónicos de las notificaciones de pago, consultar los informes y, a continuación, completar los pedidos.
  • Automáticamente: Puedes crear un sistema automatizado de tramitación de pedidos. Recomendado

La primera opción funciona para empresas experimentales o de bajo volumen, pero para la mayoría de las situaciones recomendamos automatizar la tramitación de pedidos. En el resto de esta guía aprenderás a crear un sistema de tramitación automática de pedidos.

Tramitación automática de pedidos

El sistema de tramitación automática de pedidos que se describe a continuación utiliza una combinación de webhooks y un redireccionamiento a tu sitio web para activar la tramitación de pedidos. Debes usar webhooks para asegurarte de que todos los pagos se completen; los redireccionamientos permiten a tus clientes acceder a los servicios o a los detalles de la gestión logística inmediatamente después de pagar.

Crea una función de tramitación de pedidos
Lado del servidor

Crea una función en tu servidor para completar los pagos realizados correctamente. Los webhooks activan esta función, y se llama cuando los clientes son redirigidos 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 desees.

evitar cumplimientos de más,

completar el cumplimiento 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 sesión de Checkout. Realizar el proceso de compra una sola vez garantiza que esto no provoque un comportamiento no deseado.

La función fulfill_checkout debe:

  1. Gestiona correctamente que te llamen varias veces con el mismo ID de la sesión de Checkout.
  2. Acepta el ID de Checkout Sessions como argumento.
  3. Recupera la sesión de Checkout de la API con la propiedad line_items ampliada.
  4. Revisa la propiedad payment_status para determinar si necesita cumplimiento.
  5. Lleva a cabo el cumplimiento de las partidas individuales.
  6. Registra el estado de cumplimiento de la sesión de Checkout proporcionada.

Utiliza el siguiente código como punto de partida para tu función fulfill_checkout. Los comentarios TODO indican las funciones que debas implementar.

Nota

El fragmento de código que figura a continuación puede nombrar la función fulfill_checkout fulfillCheckout o FulfillCheckout según el idioma elegido, 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 sesión de Checkout tiene muchas partidas individuales, usa la autopaginación con la API para partidas individuales del Checkout para recuperarlas todas.

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

  • Facilita el acceso a los servicios.
  • Activa el envío de bienes.
  • Guarda una copia de los datos de pago y de las partidas individuales en tu propia base de datos.
  • Envía al cliente un correo electrónico de recibo personalizado si no tienes habilitados los recibos de Stripe.
  • Concilia las partidas individuales y las cantidades compradas si permites que los clientes ajusten las cantidades en Checkout.
  • Actualiza el inventario o los registros de existencias.

Crea un controlador de eventos de pago
Lado del servidor

Para activar el cumplimiento, crea un controlador de eventos de webhook para recibir notificaciones de los eventos de pago y activar la 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 frente a métodos de pago diferidos

Algunos métodos de pago no son instantáneos, como el adeudo directo ACH 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 diferido generan un evento de checkout.session.async_payment_succeeded cuando el pago se efectúa correctamente más tarde. El estado del objeto es en procesamiento hasta que el pago se realiza correctamente o falla.

Nota

El webhook secreto (whsec_...) que se muestra en el código que aparece a continuación viene de la CLI de Stripe o del punto de conexión de tu webhook. Puedes usar la CLI de Stripe para pruebas locales, y Stripe utiliza 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

Es posible que también quieras recibir notificaciones y manejar eventos checkout.session.async_payment_failed. Por ejemplo, puedes enviar un correo electrónico a tu cliente cuando falla un pago retrasado.

Prueba tu controlador de eventos de forma local

La forma más rápida de desarrollar y probar tu controlador de eventos de webhook 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, a continuación, 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)

Añade el secreto del webhook (whsec_...) a tu código de gestión de eventos y, a continuación, prueba el cumplimiento accediendo a tu proceso de compra como cliente.

Cuando se complete el pago, verifica lo siguiente:

  • En tu 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 hacer pruebas locales, pon en marcha tu controlador de eventos de webhook en tu servidor. A continuación, crea un punto de conexión de webhook para enviar eventos checkout.session.completed a tu servidor y luego prueba de nuevo el flujo del proceso de compra.

Activa la gestión logística en tu página de destino
Recomendado

Escuchar webhooks es necesario para asegurarte de activar siempre el envío por cada pago, aunque los webhooks a veces pueden retrasarse. Para optimizar tu flujo de pago y garantizar el cumplimiento inmediato cuando tu cliente esté presente, activa el procesamiento también desde tu página de inicio. Puedes configurar la página de destino especificando return_url al crear la sesión de Checkout, o especificando returnUrl a confirm en el front end.

Usa el ID de la sesión de Checkout desde la URL que especificaste para hacer lo siguiente:

  1. Cuando tu servidor reciba una solicitud para tu página de inicio de Checkout, extrae el ID de la sesión de Checkout de la URL.
  2. Ejecuta la función fulfill_checkout con el ID proporcionado.
  3. Procesa la página una vez que se complete el intento de completar el pedido.

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

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

Los webhooks son obligatorios

No puedes depender de activar el cumplimiento solo desde la página de destino de tu proceso de compra, porque no tienes ninguna garantía de que tus clientes visiten esa página. Por ejemplo, alguien puede pagar correctamente y luego perder su conexión a Internet antes de que se cargue la página de destino.

Configura un gestor de eventos de webhook para que Stripe pueda enviar eventos de pago directamente a tu servidor, sin pasar por el cliente por completo. Los webhooks son la forma más fiable de confirmar cuándo recibes pagos. Si falla la entrega del evento de webhook, Stripe lo reintenta varias veces.

¿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