Inicio rápido
De cero a un pago de prueba: crea la sesión, redirige al cliente y confirma el resultado.
Hosted Checkout es la forma más rápida de cobrar: Tonder aloja la página de pago, así que nunca tocas los datos de la tarjeta. Este inicio rápido te lleva de cero a un pago de prueba verificado en cuatro pasos.
Lo que construirás: un servidor que crea una sesión de pago, redirige al cliente a Tonder y confirma el estado final cuando regresa.
Usa tus llaves API de prueba para esta guía —todos los ejemplos usan URLs del entorno de prueba. Nunca uses llaves de producción para pruebas.
Antes de empezar
- Una cuenta de Tonder — inicia sesión en dashboard-stage.tonder.io (Sandbox).
- Tu llave API de prueba desde Developers → API Keys.
Flujo de integración
El diagrama muestra el intercambio completo entre tu cliente, tu aplicación y Tonder. Cada paso de abajo corresponde al diagrama.
Paso 1: Crear una sesión de pago
Desde tu servidor, llama al endpoint de creación de sesión. Registra el pago con Tonder y devuelve una URL segura a la que redirigir al cliente.
| Campo | Descripción | Ejemplo |
|---|---|---|
customer | Datos del cliente: nombre, apellido, email | { first_name, last_name, email } |
amount_total | Monto total a cobrar, en formato decimal | 150.00 (para $150.00) |
currency | Código de moneda ISO | "MXN" |
line_items | Productos del carrito | Arreglo de { name, quantity, unit_price, product_id } |
return_url | A dónde enviar al cliente tras el pago (o success_url) | "https://tu-tienda.com/checkout/complete" |
external_id | (Opcional) Tu ID de pedido interno | "ORD-001" |
curl -X POST 'https://api-stage.tonder.io/checkout/v1/sessions' \
-H 'Authorization: Token YOUR_TEST_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com"
},
"amount_total": 150.00,
"currency": "MXN",
"line_items": [
{ "name": "Producto de prueba", "quantity": 1, "unit_price": 150.00, "product_id": "your internal product id" }
],
"return_url": "https://tu-tienda.com/checkout/complete",
"external_id": "ORD-001"
}'curl -X POST 'https://api.tonder.io/checkout/v1/sessions' \
-H 'Authorization: Token YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"customer": {
"first_name": "Jane",
"last_name": "Doe",
"email": "jane.doe@example.com"
},
"amount_total": 150.00,
"currency": "MXN",
"line_items": [
{ "name": "Producto de prueba", "quantity": 1, "unit_price": 150.00, "product_id": "your internal product id" }
],
"return_url": "https://tu-tienda.com/checkout/complete",
"external_id": "ORD-001"
}'Tonder responde con un objeto de sesión. Guarda el id (para verificar después) y la url (para
redirigir):
{
"id": "cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d",
"url": "https://stage-payflow.tonder.io/checkout/cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d",
"status": "pending",
"payment_id": 41521,
"amount_total": 150.00,
"currency": "MXN",
"external_id": "ORD-001",
"transaction_status": "Pending",
"created_at": 1751478543567
}Paso 2: Redirigir al cliente a Tonder
Envía al cliente a la url de la respuesta —normalmente con un redirect HTTP 302:
res.redirect(data.url);Paso 3: Completar el pago de prueba
En la página de Tonder el cliente ingresa sus datos. Tonder gestiona la verificación con el banco adquirente y 3DS automáticamente; si un pago es rechazado, el cliente puede reintentar con otra tarjeta en la misma página. Para completar un pago de prueba:
Llena el formulario con un número de tarjeta de prueba de la página de Tarjetas de prueba.
Por ejemplo, 12/30.
Por ejemplo, 123.
Tras enviarlo, Tonder procesa el pago, lo verifica con el proveedor y redirige al cliente a tu
return_url (o success_url).
Paso 4: Verificar el estado del pago
Cuando el cliente regresa a tu return_url, la URL incluye el ID de la sesión:
https://tu-tienda.com/checkout/success?session_id=cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113dUsa ese session_id para llamar a Get a Session desde tu servidor. Es más fiable que asumir que
el redirect significa éxito:
curl -X GET 'https://api-stage.tonder.io/checkout/v1/sessions/cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d' \
-H 'Authorization: Token YOUR_TEST_API_KEY'curl -X GET 'https://api.tonder.io/checkout/v1/sessions/cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d' \
-H 'Authorization: Token YOUR_API_KEY'Un pago completado devuelve status: "completed" con el payment_id:
{
"id": "cs_97_41521_d11ba771527b4056c7f85786cfbb980bc105efaf42af113d",
"status": "completed",
"payment_id": 41521,
"amount_total": 150.00,
"currency": "MXN",
"external_id": "ORD-001",
"transaction_status": "Success",
"paid_at": 1751478550234
}Los webhooks son la forma más fiable de confirmar el resultado. Concilia por metadata.external_id
y responde 200. Consulta Escuchar webhooks.
