Guarda el método de pago de un cliente sin realizar un pago
Más información sobre cómo guardar un método de pago y cobrar más tarde.
La API Checkout Sessionsen modo de
configuración te permite guardar los datos de pago de un cliente sin que se haya realizado un pago inicial. Esta opción resulta útil si quieres hacer el onboarding de clientes ahora, realizar la configuración de pagos y cobrarles más adelante usando la API Payment Intents cuando no estén conectados.
Utiliza esta integración para configurar pagos recurrentes o crear pagos puntuales cuyo importe final se determinará más adelante, por lo general, después de que el cliente reciba el servicio.
Transacciones con tarjeta presente
Las transacciones con tarjeta presente, como la recopilación de datos de la tarjeta mediante Stripe Terminal, se procesan de manera diferente para guardar el método de pago.
Cumplimiento de la normativa
Al guardar los datos de pago de un cliente, eres responsable del cumplimiento de todas las leyes, normativas y reglas de red aplicables. Estos requisitos generalmente se aplican si deseas guardar el método de pago de tu cliente para su uso futuro, como para mostrarle el método de pago de un cliente en el flujo del proceso de compra para una compra futura o aceptar un pago cuando no esté utilizando activamente su sitio web o aplicación. Añade a tu sitio web o aplicación las condiciones que detallen cómo planeas guardar los datos del método de pago y permitir que los clientes acepten.
Cuando guardas un método de pago, solo puedes usarlo para el consumo específico que has incluido en tus condiciones. Para cargar un método de pago cuando un cliente está desconectado y guardarlo como una opción para futuras compras, asegúrate de obtener explícitamente el consentimiento del cliente para este uso específico. Por ejemplo, incluye una casilla de verificación que indique «Guardar mi método de pago para usarlo en el futuro» para obtener el consentimiento.
Para cobrar a un cliente cuando esté desconectado, asegúrate de que tus condiciones incluyan lo siguiente:
- La aceptación por parte del cliente de que inicies un pago o una serie de pagos en su nombre para transacciones específicas.
- El plazo de pagos y la frecuencia previstos (por ejemplo, si los cargos son por cuotas programadas, pagos por suscripción o recargas no programadas).
- Cómo determinas el importe del pago.
- Tu Política de cancelación, si el método de pago es para un servicio de suscripción.
Asegúrate de mantener un registro de la aceptación por escrito de estas condiciones por parte de tu cliente.
Nota
Si necesitas usar la confirmación manual del lado del servidor o tu integración requiere presentar los métodos de pago por separado, consulta nuestra guía alternativa.
Configurar StripeLado del servidor
Primero, crea una cuenta de Stripe o inicia sesión.
Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación:
Crea un objeto CustomerLado del servidor
Para configurar un método de pago para pagos futuros, debes adjuntarlo a un cliente. Crea un objeto de Customer
cuando tu cliente cree una cuenta en tu empresa. Los objetos de Customer
permiten reutilizar los métodos de pago y hacer el seguimiento de múltiples pagos.
Usa el modo de configuraciónLado del servidor
Crea una Checkout Session con mode=setup.
Vincula el método de pago a un clienteLado del servidor
Si no creaste la Checkout Session con un cliente existente, usa el ID del PaymentMethod para vincular el método de pago a un cliente.
De lo contrario, el método de pago se adjunta automáticamente al cliente que proporcionaste al crear la Checkout Session.
Recupera el método de pagoLado del servidor
Una vez que el cliente completa correctamente su Checkout Session, gestiona el webhook checkout.session.completed. Recupera el objeto Session en el webhook y, a continuación, haz lo siguiente:
- Obtén el valor de la clave setup_intent, que es el ID de SetupIntent creado durante la Checkout Session.
- Usa el ID del SetupIntent para recuperar el objeto SetupIntent. El objeto devuelto contiene un ID del payment_method que puedes adjuntar a un cliente en el siguiente paso.
Obtén más información sobre cómo configurar webhooks.
Carga el método de pago más tardeLado del servidor
Después de vincular el PaymentMethod a un cliente, puedes hacer un pago fuera de sesión con un PympyIntent:
- Establece cliente al ID del cliente y payment_method al ID del método de pago.
- Define off_session como
true
para indicar que el cliente no está en tu flujo del proceso de compra durante un intento de pago y no puede completar una petición de autenticación realizada por un socio, como un emisor de tarjeta, un banco u otra institución de pago. Si, durante tu flujo del proceso de compra, un socio solicita autenticación, Stripe solicita exenciones utilizando información del cliente de una transacción anterior de durante la sesión. Si no se cumplen las condiciones de exención, el PaymentIntent podría generar un error. - Establece el valor de la propiedad confirmar del PaymentIntent como
true
, lo que hace que la confirmación se produzca inmediatamente al crear el PaymentIntent.
Cuando se produce un error en un intento de pago, también falla la petición con un código de estatus HTTP 402, y el estatus del PaymentIntent es requires_payment_method. Debes enviar una notificación al cliente para que vuelva a tu aplicación (por ejemplo, mediante un correo electrónico o una notificación en la aplicación) y dirija a tu cliente a una nueva sesión de pago para que seleccione otro método de pago.