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.
Consulta nuestro ejemplo completo y funcional en GitHub.
Configurar StripeLado del servidor
Primero, necesitas una cuenta de Stripe. Regístrate 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
Añade un botón de finalización de compra 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.
Añade 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 haya completado correctamente la sesión de Checkout. Después crear la sesión de Checkout, redirige a tu cliente a la URL devuelta 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 se redirija a tu sitio. Usa el ID de sesión para recuperar el objeto Session.
La opción correcta depende de tu tolerancia al abandono de los clientes, ya que los clientes no siempre llegan al success_url
después de haber efectuado el pago. Es posible que cierren la pestaña del navegador antes de que se les redirija. La gestión de webhooks evita que tu integración sea susceptible a este tipo de abandono de los clientes.
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 adjuntar a un cliente en el siguiente paso.
Nota
Si solicitas esta información de manera síncrona desde la API de Stripe (en lugar de usar webhooks), puedes combinar el paso anterior con este paso expandiendo el objecto 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 que se acaba de crear.
Usar el método de pagoLado del servidor
Si no has creado la sesión de Checkout con un cliente existente, usa el ID de payment_method
para adjuntar el método de pago a un cliente. Después de adjuntar el PaymentMethod a un cliente, puedes hacer el cargo en el PaymentMethod usando un PaymentIntent.
Comunica a tus clientes qué es Stripe
Stripe recoge información sobre las interacciones de los clientes con Elements para brindarte servicios, prevenir el fraude y mejorar sus servicios. Entre los datos recogidos, se incluyen el uso de cookies y direcciones IP para identificar qué Elements ha visto un cliente durante una sola sesión del proceso de compra. Tú eres responsable de divulgar y obtener todos los derechos y consentimientos necesarios para que Stripe use los datos de estas maneras. Para obtener más información, visita nuestro centro de privacidad.