Configurar futuros pagos
Para recopilar los datos de pago de los clientes que puedes reutilizar más tarde, utiliza el modo de configuración de Checkout. El modo de configuración utiliza la API Setup Intents para crear métodos de pago.
Mira nuestro ejemplo completo y en funcionamiento en GitHub.
Configurar StripeLado del servidor
Primero, necesitas una cuenta de Stripe. Inscríbete ahora.
Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación:
Crear una sesión de CheckoutLado del clienteLado del servidor
Agrega un botón de pago en tu sitio web que llame a un punto de conexión del lado del servidor para crear una sesión de Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
To create a setup mode Session, use the mode
parameter with a value of setup
when creating the Session. You can optionally specify the customer parameter to automatically attach the created payment method to an existing customer. Checkout uses Dynamic payment methods by default, which requires you to pass the currency parameter when using setup
mode.
Agrega la variable de plantilla {CHECKOUT_SESSION_ID}
a la success_url
para acceder al ID de la sesión después de que el cliente finaliza con éxito la sesión de Checkout. Después de haber creado la sesión, redirige a tu cliente a la URL recibida en la respuesta.
Recuperar la sesión de CheckoutLado del servidor
Una vez que el cliente completa con éxito su sesión de Checkout, tienes que recuperar el objeto Session. Hay dos formas de hacerlo:
- Asincrónica: gestiona webhooks
checkout.session.completed
que contienen un objeto Session. Más información sobre cómo configurar webhooks. - Sincrónicamente: obtén el ID de sesión del
success_url
cuando un usuario vuelva a tu sitio. Usa el ID de sesión para recuperar el objeto Session.
La opción correcta depende de tu tolerancia a los abandonos, ya que los clientes no siempre llegan al success_url
después de haber efectuado correctamente el pago. Es posible que cierren la pestaña del navegador antes de ser redirigidos. La gestión de webhooks evita que tu integración sea susceptible a este tipo de abandonos.
Después de haber recuperado el objeto Session, obtén el valor de la clave setup_intent
, que es el ID del SetupIntent creado durante la sesión de Checkout. El SetupIntent es un objeto que se utiliza para configurar los datos de la cuenta bancaria del cliente para pagos futuros.
Ejemplo de carga de checkout.session.completed
:
{ "id": "evt_1Ep24XHssDVaQm2PpwS19Yt0", "object": "event", "api_version": "2019-03-14", "created": 1561420781, "data": { "object": { "id": "cs_test_MlZAaTXUMHjWZ7DcXjusJnDU4MxPalbtL5eYrmS2GKxqscDtpJq8QM0k", "object": "checkout.session", "billing_address_collection": null, "cancel_url": "https://example.com/cancel", "client_reference_id": null, "customer": "", "customer_email": null, "display_items": [], "mode": "setup", "setup_intent": "seti_1EzVO3HssDVaQm2PJjXHmLlM", "submit_type": null, "subscription": null, "success_url": "https://example.com/success" } }, "livemode": false, "pending_webhooks": 1, "request": { "id": null, "idempotency_key": null }, "type": "checkout.session.completed" }
Ten en cuenta el ID del setup_intent
para el siguiente paso.
Recuperar el SetupIntentLado del servidor
Recupera el objeto SetupIntent con el ID del setup_intent
. El objeto devuelto contiene un ID del payment_method
que puedes asociar a un cliente en el siguiente paso.
Nota
Si solicitas esta información de manera sincrónica desde la API de Stripe (en lugar de usar webhooks), puedes combinar el paso anterior con este paso expandiendo el objeto SetupIntent en la solicitud al punto de conexión /v1/checkout/session. Si haces esto, no tendrás que hacer dos solicitudes a la red para acceder al ID del PaymentMethod recién creado.
Usar el método de pagoLado del servidor
Si no creaste la sesión de Stripe Checkout con un cliente existente, usa el ID del payment_method
para asociar el PaymentMethod a un Customer. Después de asociar el PaymentMethod a un cliente, puedes cobrar al PaymentMethod usando un PaymentIntent.
Cuéntales a tus clientes qué es Stripe
Stripe recopila información sobre las interacciones de los clientes con Elements para proporcionarte servicios, mejorarlos y prevenir el fraude. Esto incluye el uso de cookies y direcciones IP para identificar qué Elements vio un cliente durante una sola sesión de finalización de compra. Tienes la responsabilidad de divulgar y obtener todos los derechos y consentimientos necesarios para que Stripe use los datos para dichos fines. Si deseas obtener más información, visita nuestro centro de privacidad.