HomeGuíasAPI ReferenceChangelog
Log In
Guías

Referencia completa de la clase TokuCheckoutForm que expone el script. Para el flujo paso a paso revisa la Guía de integración.

Constructor

const form = new TokuCheckoutForm(settings);
NombreTipoRequeridoDescripción
environmentstringSíAmbiente al que apuntan los iframes. Valor: PROD.
cvvDivIdstringSíId del elemento donde se monta el iframe del CVV. Debe existir al construir el objeto.
cvvStyleobjectSíEstilos inline que se aplican al <input> del CVV dentro del iframe. Claves en formato CSS, por ejemplo 'border-radius'.
onSuccessfunction(result)SíSe llama cuando la operación termina con éxito. Ver onSuccess.
onErrorfunction(error)SíSe llama cuando la operación falla. Ver onError.
panDivIdstringNoId del elemento donde se monta el iframe del número de tarjeta. Si lo omites, el iframe se crea oculto; úsalo así solo para pagar con una tarjeta guardada.
panStyleobjectNoEstilos inline del <input> del número de tarjeta.
panStylesheetstringNoCSS que se inyecta como <style> dentro del iframe del número de tarjeta.
cvvStylesheetstringNoCSS que se inyecta como <style> dentro del iframe del CVV.
options.maskPanbooleanNoOculta el número de tarjeta cuando el campo pierde el foco. Por defecto false.
options.panPlaceholderstringNoPlaceholder del campo de número de tarjeta.
options.cvvPlaceholderstringNoPlaceholder del campo CVV.
organizationIdstringNoId público de la organización (org_…). Necesario para la validación del BIN.
accountIdstringNoId público de la cuenta (acc_…). Necesario para la validación del BIN.
onPanFocusfunction(form)NoEl campo de número de tarjeta recibe el foco. Recibe la instancia de TokuCheckoutForm.
onPanBlurfunction(form)NoEl campo de número de tarjeta pierde el foco.
onCvvFocusfunction(form)NoEl campo CVV recibe el foco.
onCvvBlurfunction(form)NoEl campo CVV pierde el foco.
onPanChangefunction(data)NoEl cliente cambia el número de tarjeta. Ver onPanChange.
onCvvChangefunction(data)NoEl cliente cambia el CVV. Ver onCvvChange.
onCardValidationLoadingfunction()NoComienza la validación del BIN.
onCardValidationCompletedfunction(data)NoTermina la validación del BIN. Ver onCardValidationCompleted.

El constructor lanza un Error si environment no es válido, si falta cvvDivId o cvvStyle, o si los contenedores indicados no existen en el DOM.

Callbacks

onSuccess

{
  "action": "OPERATION_FINISHED",
  "operationResult": "SUCCESS",
  "data": { "externalTransactionId": "…" }
}
OperaciónContenido de data
PAYMENTexternalTransactionId: identificador de la transacción creada.
INSCRIPTIONpaymentMethodId: identificador del medio de pago creado.

onError

{
  "action": "OPERATION_FINISHED",
  "operationResult": "FAILURE",
  "errorCode": "1001",
  "errorMessage": "An unexpected error ocurred"
}
CampoDescripción
errorCodeLos cuatro dígitos del código de respuesta de Toku, sin el prefijo de gravedad. Búscalo en Códigos de pago rechazado para conocer la causa, su gravedad y el mensaje sugerido al cliente. 9999 es un error no clasificado.
errorMessageTexto genérico. En los rechazos del medio de pago no trae el detalle del catálogo, así que no lo muestres al cliente tal cual: usa errorCode para obtener el mensaje desde el catálogo.

También se recibe onError cuando la operación no termina dentro de 5 minutos.

onPanChange

{
  "length": 16,
  "cardInstitution": "visa",
  "luhnCheck": true,
  "bin": "411111",
  "last4": "1111"
}
CampoTipoDescripción
lengthnumberDígitos ingresados hasta ahora.
cardInstitutionstringvisa, mastercard, americanexpress o "" si aún no se reconoce.
luhnCheckbooleantrue si el número ingresado pasa el algoritmo de Luhn.
binstringPrimeros seis dígitos. Presente cuando hay suficientes dígitos.
last4stringÚltimos cuatro dígitos. Presente cuando el número está completo.

onCvvChange

{ "length": 3 }

onCardValidationCompleted

{
  "success": true,
  "country": "MX",
  "type": "credit"
}
CampoTipoDescripción
successbooleantrue si la tarjeta está permitida para la cuenta.
countrystringPaís del banco emisor.
typestringcredit o debit.

Métodos

processOperation(type, parameters)

Ejecuta una operación con los datos ingresados en los iframes. Valida parameters de forma síncrona y lanza un Error si algo falta o es inválido; el resultado de la operación llega por onSuccess u onError.

ArgumentoTipoDescripción
typestringPAYMENT o INSCRIPTION.
parametersobjectDepende del tipo. Ver Operaciones.

setPanStyle(style) / setCvvStyle(style)

Reemplazan los estilos inline del <input> correspondiente. Reciben un objeto con las mismas claves que panStyle y cvvStyle.

changeStyle(panStyle, cvvStyle)

Equivale a llamar setPanStyle y setCvvStyle en una sola operación.

setPanStylesheet(css) / setCvvStylesheet(css)

Inyectan un <style> adicional dentro del iframe correspondiente. Cada llamada agrega una hoja nueva; no reemplaza las anteriores.

Operaciones

PAYMENT

Cobra amount con la tarjeta ingresada o con una tarjeta guardada.

NombreTipoRequeridoDescripción
organizationIdstringSíId público de la organización (org_…).
accountIdstringSíId público de la cuenta (acc_…).
amountnumberSíMonto a cobrar.
customerIdstringSíId público del cliente (cus_…).
subscriptionIdstringNoId público de la suscripción (sub_…). Solo si el pago es de invoices.
expirationDatestringSíVencimiento en formato MM/YY.
customerNamestringSí, salvo con paymentInstrumentIdNombre del titular.
invoiceIdsstring[]NoDeudas que paga este cobro (in_…).
installmentsnumberNoNúmero de cuotas. Por defecto 1.
tokuProductsstring[]SíProducto Toku con el que se procesa el cobro, por ejemplo ['payment_orchestration_onetime']. Dejará de ser necesario cuando Toku lo resuelva desde checkoutSessionId.
paymentInstrumentIdstringNoTarjeta guardada con la que se cobra (pin_…). Requiere expirationDate y exige omitir panDivId en el constructor.
flowNamestringNoNombre del flujo de pago, solo si Toku te indicó uno.
checkoutSessionIdstringNocheckout_session_id de la Checkout Session desde la que nace el pago. Recomendado: Toku lo usará para validar la operación y resolver la configuración de la sesión a partir de octubre 2026.

Sin paymentInstrumentId, el constructor debe tener panDivId para que el cliente pueda escribir el número de tarjeta.

Pago identificado solo por la Checkout Session

Disponible a partir de octubre de 2026. Con checkoutSessionId, Toku resolverá customerId, invoiceIds y tokuProducts desde la sesión, y esos campos pasarán a ser opcionales.

form.processOperation('PAYMENT', {
  organizationId: 'org_…',
  checkoutSessionId: 'checkout_session_id de la sesión',
  expirationDate: '09/28',
  customerName: 'Nombre del titular',
});

INSCRIPTION

Inscribe la tarjeta como medio de pago de una suscripción.

NombreTipoRequeridoDescripción
organizationIdstringSíId público de la organización (org_…).
accountIdstringSíId público de la cuenta (acc_…).
customerIdstringSíId público del cliente (cus_…).
subscriptionIdstringSíId público de la suscripción (sub_…).
tokuProductsstring[]SíProducto Toku con el que se inscribe, por ejemplo ['cards_batch_mx_recurring_pst'].
expirationDatestringSíVencimiento en formato MM/YY.
customerNamestringSíNombre del titular.

Formato de los ids

Todos los ids son públicos: un prefijo, un guion bajo y 32 caracteres. processOperation rechaza los que no cumplen el formato.

EntidadPrefijo
Organizaciónorg_
Cuentaacc_
Clientecus_
Suscripciónsub_
Invoicein_
Instrumento de pago guardadopin_

Errores de validación

Mensajes que processOperation puede lanzar como Error. Ocurren antes de contactar a Toku, así que no llegan por onError.

MensajeCausa
customerId or subscriptionId is requiredPAYMENT sin ninguno de los dos.
customerId is requiredINSCRIPTION sin customerId.
Invalid customerId / subscriptionId is not valid / Invalid accountIdEl id no cumple el formato.
organizationId is required / accountId is requiredFalta el id.
amount must be set to validate that it matches invoices amount and prevent errors.PAYMENT sin amount.
invoiceIds must be array of invoicesinvoiceIds no es un arreglo de ids in_….
either expirationDate or paymentMethodId must be setPAYMENT sin expirationDate.
paymentInstrumentId is not validEl id no cumple el formato pin_….
expirationDate must be set with paymentInstrumentIdPago con tarjeta guardada sin vencimiento.
paymentInstrumentId and a visible PAN iframe (panDivId) cannot be used togetherEl constructor tiene panDivId y se envió paymentInstrumentId.
either paymentInstrumentId, paymentMethodId or a visible PAN iframe (panDivId) must be setNo hay de dónde obtener el número de tarjeta.
subscriptionId must be set / expirationDate must be set / tokuProducts must be setINSCRIPTION sin el campo.

Did this page help you?