Los cargos automáticos requieren que el cliente haya proporcionado previamente su consentimiento y un método de pago
válido.
1. Crea un cliente
El primer paso es crear un cliente en tu sistema. Este cliente será quien proporcionará el método de pago para los cargos automáticos.POST /v1/customers
2. Recolecta un método de pago
Antes de realizar cargos automáticos, el cliente debe proporcionar un método de pago válido (tarjeta de crédito/débito o cuenta bancaria). Este paso se realiza a través del Portal de Clientes, donde se le solicita al usuario que guarde su método de pago para cargos futuros. Tienes 2 opciones para recolectar un método de pago:- En una sesión de pago (
PaymentSession
) - En una sesión de inscripción
Opción 1: En una sesión de pago (PaymentSession
)
POST /v1/payment-sessions
Opción 2: En una sesión de inscripción
Las sesiones de inscripción te permiten recolectar métodos de pago sin realizar un cobro inmediato. Esta opción es ideal para configurar suscripciones o periodos de prueba.Las sesiones de inscripción son una característica experimental y pueden estar sujetas a cambios.
POST /v1/setup-sessions
Consulta la guía completa de sesiones de inscripción para aprender cómo implementar esta funcionalidad paso a paso.
3. Obtén los métodos de pago del cliente
Una vez que el cliente ha guardado un método de pago, puedes consultarlos para obtener elpaymentMethodId
que necesitarás para realizar cargos automáticos.
Ejemplo de respuesta
Respuesta
Campos importantes
id
: El identificador del método de pago que usarás en el campopaymentMethodId
al realizar cargos.type
: El tipo de método de pago (CARD
para tarjetas oMEXICAN_BANK_ACCOUNT
para cuentas bancarias).default
: Indica si es el método de pago predeterminado del cliente.confirmed
: Indica si el método de pago ha sido confirmado con al menos un pago exitoso.expired
: Indica si el método de pago ha expirado (solo aplica para tarjetas).cardDetail
: Detalles de la tarjeta (cuandotype
esCARD
).bankAccount
: Detalles de la cuenta bancaria (cuandotype
esMEXICAN_BANK_ACCOUNT
).
El método de pago con
default: true
será el que se use automáticamente en las suscripciones si no se especifica uno diferente.4. Realiza un cargo automático
Una vez que tienes un cliente con un método de pago válido, puedes realizar cargos automáticos usando el endpoint de pagos.El endpoint de pagos (
/v1/payments
) se encuentra actualmente en etapa beta y puede estar sujeto a cambios.Ejemplo de solicitud
POST /v1/payments
Campos relevantes
amount
: El monto a cobrar en centavos. Por ejemplo, $3,999.00 MXN = 399900 centavos.paymentMethodId
: El identificador del método de pago previamente recolectado del cliente.customerId
: El identificador del cliente al que se le realizará el cargo.description
: Una descripción clara del concepto que se está cobrando.makeAttempt
: Si estrue
, se hará el intento de cargo al enviar la petición. Si esfalse
, se creará el pago pero no se hará el intento de cargo.metadata
: Información adicional que quieras asociar con el pago para tu referencia.
Posibles respuestas
Intento exitoso
Cuando el cargo es exitoso, verás la propiedadattempt.success
como true
.
Respuesta (intento exitoso)
Intento fallido
Para identificar un cargo fallido, debes revisar el camposuccess
. Puedes obtener el motivo del rechazo usando el campo errorType
del objeto attempt
.
Toma en cuenta que cuando un intento es fallido, el código HTTP de la respuesta será
200
Respuesta (intento fallido)
Intento iniciado
Cuando el método de pago que se usa es de tipoDIRECT_DEBIT
, el pago se creará con estado INITIATED
y la propiedad attempt
será null
.
En estos casos, para monitorear el resultado, debes usar un webhook de tipo PAYMENT_ATTEMPT_SUCCEEDED
o PAYMENT_ATTEMPT_FAILED
.
Esto solo aplica para pagos con domiciliación bancaria (tipo
DIRECT_DEBIT
). Los pagos con tarjeta de crédito o débito se procesan de forma inmediata.Respuesta (intento iniciado)
Formas de pago soportadas
Este endpoint soporta dos formas de pago, cada una con diferentes tiempos de procesamiento:Lo que determina qué forma de pago se usa es el tipo del método de pago (
PaymentMethod.type
) que proporcionas en el
campo paymentMethodId
al mandar el pago.Tarjetas de crédito/débito (CARD
)
Los pagos con tarjeta de crédito o débito se procesan de forma inmediata. Obtienes la confirmación del resultado del pago en tiempo real a través de la respuesta de la petición a POST /v1/payments
.
Domiciliación bancaria (DIRECT_DEBIT
)
Los pagos mediante domiciliación bancaria (cuentas CLABE) no se confirman inmediatamente. El proceso funciona así:
- Al crear el pago: Recibes una respuesta con estado
INITIATED
- Procesamiento: El cargo se envía al sistema bancario
- Confirmación: Debes esperar hasta el siguiente día hábil para obtener la respuesta definitiva (mediante webhooks)
Ejemplo de respuesta
Para pagos con domiciliación bancaria, los webhooks son esenciales ya que no obtienes confirmación inmediata. Debes
monitorear los eventos
PAYMENT_ATTEMPT_SUCCEEDED
y PAYMENT_ATTEMPT_FAILED
para conocer el resultado final del
cargo.Estados del pago
Después de crear un cargo automático, el pago pasará por diferentes estados:- INCOMPLETE: El pago está siendo procesado por el sistema bancario.
- COMPLETE: El pago se completó exitosamente.
- INITIATED: El pago ha sido programado y está pendiente de procesamiento.
- CANCELED: El pago fue cancelado; no se admitirá.
Monitoreo con webhooks
Para mantener tu integración sincronizada con el estado de los pagos, puedes suscribirte a los siguientes webhooks:Eventos de intentos de pago
PAYMENT_ATTEMPT_SUCCEEDED
: Se envía cuando un intento de cobro automático es exitoso.PAYMENT_ATTEMPT_FAILED
: Se envía cuando un intento de cobro automático falla, incluyendo el código de error correspondiente.
Eventos de métodos de pago
PAYMENT_METHOD_CREATED
: Se envía cuando un cliente guarda un nuevo método de pago (tarjeta o cuenta bancaria) que podrás usar para cargos automáticos.
Consulta la documentación completa de webhooks para ver todos los eventos disponibles y sus
estructuras.
Para casos de uso más complejos con pagos recurrentes programados, considera usar suscripciones con pagos
definidos que ofrecen mayor flexibilidad y control.