Métodos de pago del Customer Portal
Permite que un cliente gestione sus métodos de pago guardados en el portal — listar, agregar y eliminar tarjetas usando tokenización en el navegador.
Estos endpoints permiten que un cliente autenticado gestione sus propios métodos de pago: listar los instrumentos guardados, agregar uno nuevo y eliminar uno. Agregar una tarjeta usa la misma tokenización en el navegador que el checkout — los datos de la tarjeta se cifran en iframes aislados y nunca llegan a tus servidores ni a Tokeflow en texto claro.
Lo que el cliente ve es el resumen no sensible — marca, últimos cuatro dígitos, vencimiento — nunca la tarjeta completa. La eliminación de un instrumento contra el que todavía cobra una suscripción está protegida, para que una renovación no quede huérfana.
Estos endpoints impulsan el Customer Portal — la superficie de self-service que usan tus clientes finales, bajo tu marca. Se autentican mediante una cookie de sesión del portal, establecida a través del flujo de magic-link (solicitar un enlace y luego verificar el token), y no mediante una clave de API. Consulta Sesiones y configuración.
El objeto del método de pago
Devuelto por los endpoints de listado y consulta de esta página.
| Field | Type | Description |
|---|---|---|
id | string | — |
instrument_type | string | — |
card_brand | string | null | — |
last4 | string | null | — |
exp_month | number | null | — |
exp_year | number | null | — |
is_default | boolean | — |
status | string | — |
Endpoints
GET/api/v1/portal/payment-methods
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Lista las tarjetas guardadas.
Ejemplo de solicitud
curl https://api.tokeflow.com/api/v1/portal/payment-methods \
-H "Cookie: tf_portal_session=…"Ejemplo de respuesta — 200
{
"data": [
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}
]
}POST/api/v1/portal/payment-methods
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Registra una nueva tarjeta.
Campos de la solicitud
| Field | Type | Required | Description |
|---|---|---|---|
card_ciphertext_id | string | Sí | el id de card-ciphertext del proveedor de cifrado, proveniente del SDK del cliente. |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/portal/payment-methods \
-H "Cookie: tf_portal_session=…" \
-H "Content-Type: application/json" \
-d '{
"card_ciphertext_id": "tok_8f3c2a1b9d4e"
}'Ejemplo de respuesta — 201
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}DELETE/api/v1/portal/payment-methods/:id
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Elimina una tarjeta guardada.
Parámetros de ruta
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X DELETE https://api.tokeflow.com/api/v1/portal/payment-methods/obj_1a2b3c4d \
-H "Cookie: tf_portal_session=…"Ejemplo de respuesta — 204 No Content
Se devuelve un cuerpo vacío en caso de éxito.
POST/api/v1/portal/payment-methods/:id/set-default
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Establece una tarjeta como predeterminada de la billetera.
Parámetros de ruta
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Sí | — |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/portal/payment-methods/obj_1a2b3c4d/set-default \
-H "Cookie: tf_portal_session=…"Ejemplo de respuesta — 200
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}POST/api/v1/portal/tokenization/session
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Inicia una sesión de tokenización (credenciales de cifrado).
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/portal/tokenization/session \
-H "Cookie: tf_portal_session=…"Ejemplo de respuesta — 201
{
"session_id": "sess_...",
"sdk": {
"js_url": "https://vault.tokeflow.com/v2",
"sri_expires_at": 1
},
"expires_at": "2026-01-15T12:30:00.000Z"
}POST/api/v1/portal/tokenization/tokens
Autenticación: Customer Portal session (cookie establecida por el flujo de magic-link).
Registra una tarjeta cifrada.
Campos de la solicitud
| Field | Type | Required | Description |
|---|---|---|---|
session_id | string | Sí | Id de la sesión de tokenización del portal. |
encryptedCard | object | Sí | — |
metadata | object | Sí | — |
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/portal/tokenization/tokens \
-H "Cookie: tf_portal_session=…" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess_...",
"encryptedCard": {
"number": "ev:QkTC:q6/SoVBehipxsy6j:...",
"cvc": "ev:QkTC:JfW5fyt5eOb2vXAX:...",
"expiryMonth": "12",
"expiryYear": "25",
"name": "ev:QkTC:..."
},
"metadata": {
"brand": "visa",
"last4": "4242",
"expiryMonth": "12",
"expiryYear": "2025",
"bin": "424242"
}
}'Ejemplo de respuesta — 201
{
"token_id": "tok_8f3c2a1b9d4e",
"brand": "visa",
"last4": "4242",
"exp_month": "12",
"exp_year": "2027"
}Errores
Los errores usan el sobre estándar. Los casos más comunes aquí:
| HTTP | Meaning |
|---|---|
400 | Parámetros inválidos o un estado que no permite esta operación. |
401 | Token de Dashboard session faltante, expirado o inválido. |
403 | Autenticado, pero el usuario que inició sesión no tiene acceso a esta entidad. |
404 | El registro no existe o no es visible para esta entidad. |