Completa pedidos
Aprende a ejecutar los pagos recibidos con la API Checkout Sessions.
Cuando recibes un pago con la API Checkout Sessions, es posible que tengas que tomar medidas para proporcionarle al 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.
Crea una función de confirmación de pedidoLado 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_
, pero puedes nombrarla como quieras.
La función fulfill_
debe hacer lo siguiente:
- Gestionar correctamente las llamadas múltiples con la mismo ID de la Checkout Session.
- Aceptar un ID de Checkout Session como argumento.
- Recuperar la Checkout Session de la API con la propiedad line_items expandida.
- Comprobar la propiedad payment_status para determinar si requiere gestión logística.
- Realizar la gestión logística de las partidas.
- 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_
. 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_
fulfillCheckout
o FulfillCheckout
según el idioma seleccionado, pero todos representan la misma función.
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_
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 pagoLado 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_
.
Cuando alguien te paga, se crea un evento checkout.
. 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.
También es posible que quieras gestionar y recibir notificaciones de eventos checkout.
. 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 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 el controlador de eventos a nivel local. 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:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Agrega el webhook secreto (whsec_
) a tu código de gestión de eventos y, a continuación, prueba la ejecución del pedido completando la compra como cliente.
Cuando se complete el pago, verifica lo siguiente:
- En la línea de comandos, donde se está ejecutando
stripe listen
, se muestra un eventocheckout.
reenviado a tu servidor local.session. completed - 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.
a tu servidor y luego vuelve a probar el flujo de compra.
Activa la ejecución del pedido en tu página de destinoRecomendado
Recibir notificaciones de webhooks es necesario para asegurarte de que siempre actives la ejecución de pedidos de cada pago, pero los webhooks a veces pueden demorarse. Para optimizar tu flujo de pago y garantizar la ejecución de pedidos inmediata cuando tu cliente esté presente, activa la ejecución también desde tu página de destino. Puedes configurar la página de destino especificando return_url al crear la sesión de Checkout o especificando returnUrl en confirm
en el front-end.
Usa el ID de la Checkout Session de la URL que especificaste para hacer lo siguiente:
- Cuando tu servidor reciba una solicitud para tu página de destino de Checkout, extrae el ID de la sesión de Checkout de la URL.
- Ejecuta la función
fulfill_
con el ID proporcionado.checkout - Renderiza la página una vez completado el intento de completar el pedido.
Al renderizar la página de destino, se puede mostrar lo siguiente:
- Detalles del proceso de ejecución de pedidos.
- 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 ejecución de pedidos solo desde la página de destino del proceso de compra, ya que tus clientes no tienen por seguro que la visiten. Por ejemplo, alguien puede pagar correctamente y luego perder su conexión a Internet antes de que se cargue tu página de destino.
Configura un controlador de eventos de webhook para que 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 webhook, Stripe lo reintenta varias veces.