Guarda el método de pago de un cliente sin realizar un pago
Aprende a guardar un método de pago y a aceptar pagos más tarde.
La API Checkout Sessions en el modo de configuración
te permite guardar los datos de pago de un cliente sin un pago inicial. Esto es útil si deseas incorporar clientes ahora, configurarlos para los pagos, y cobrarles utilizando la API Payment Intents en el futuro (cuando están fuera de línea).
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 recibe el servicio.
Transacciones con tarjeta presente
Las transacciones con tarjeta presente, como recopilar los datos de la tarjeta a través del Terminal de Stripe, utilizan un proceso diferente para guardar el método de pago.
Cumplimiento de la normativa
Al guardar los datos de pago de un cliente, eres responsable de cumplir 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 mostrarle el método de pago de un cliente en el flujo de confirmación de compra para una compra futura o cobrarle cuando no esté utilizando activamente tu sitio web o aplicación. Agrega condiciones a tu sitio web o aplicación que indiquen cómo planeas guardar los datos del método de pago y permite que los clientes las acepten.
Cuando guardas un método de pago, solo puedes usarlo para el uso específico que hayas 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 no está conectado, asegúrate de que sus Condiciones incluyen lo siguiente:
- El acuerdo del cliente para que puedas iniciar un pago o una serie de pagos en su nombre para transacciones específicas.
- El momento y la frecuencia previstos de los pagos (por ejemplo, si los cargos son por cuotas programadas, pagos de suscripción o recargas no programadas).
- Cómo determinas el importe de 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 del acuerdo por escrito de tu cliente en relación con estos términos.
Nota
Si necesitas utilizar la confirmación manual del lado del servidor o su 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:
Crear 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.
Utiliza el modo de configuraciónLado del servidor
Crea una Checkout Session con mode=setup.
Adjuntar el método de pago a un clienteLado del servidor
Si no has creado la sesión de Checkout con un cliente existente, utiliza el identificador del PaymentMethod para adjuntar el método de pago a un cliente.
De lo contrario, el método de pago se vincula automáticamente al cliente que proporcionaste al crear la Checkout Session.
Recuperar el método de pagoLado del servidor
Después de que un cliente complete con éxito su proceso de compra, 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.
- Utiliza el ID de SetupIntent para recuperar el objeto SetupIntent. El objeto devuelto contiene un ID depayment_method que puedes adjuntar a un cliente en el siguiente paso.
Más información sobre configuración de webhooks.
Cobra al método de pago más tardeLado del servidor
Después de adjuntar el PaymentMethod a un cliente, puedes realizar un pago off-session utilizando un PaymentIntent:
- Establece customer como ID del cliente y payment_method como ID del método de pago.
- Establece off_session como
true
para indicar que el cliente no se encuentra en su flujo de compra durante un intento de pago y no puede autenticar una solicitud realizada por un socio, como un emisor de tarjeta, un banco u otra entidad de pago. Si, durante tu flujo de compra, un socio solicita la autenticación, Stripe solicita exenciones utilizando la información del cliente de una transacción anterior durante la sesión. Si no se cumplen las condiciones para la exención, el PaymentIntent podría dar lugar a un error. - Establece el valor de la propiedad confirm del PaymentIntent como
true
, lo que hace que la confirmación se produzca inmediatamente al crear el PaymentIntent.
Si un intento de pago falla, la solicitud también falla con un código de estado HTTP 402, y el estado de PaymentIntent es requires_payment_method. Notifica a tu cliente que regrese a tu solicitud (por ejemplo, mediante un correo electrónico o una notificación dentro de la aplicación) y dirígelo a una nueva Checkout Session para que seleccione otro método de pago.