Hosted Checkout

Referencia

Estados, identificadores, métodos de pago, URLs de redirección y códigos de error de Hosted Checkout.

Referencia de los estados, identificadores, métodos de pago, redirecciones y errores de Hosted Checkout.

Estados: sesión vs. transacción

El status de una sesión y el transaction_status de un intento de pago representan dos cosas distintas:

  • El estado de la sesión es el checkout completo: el pedido en espera de pago. Empieza en pending y solo puede terminar en completed o expired.
  • El estado de la transacción es el resultado del intento de pago más reciente del cliente. Un cliente puede hacer varios intentos en una sesión.

Para la entrega de pedidos, basa tu lógica en el estado de la transacción, no únicamente en el status de la sesión. Antes del primer intento, transaction_status es una cadena vacía ("") en cuentas de API Direct, y Pending o "" en cuentas legacy.

Estado de la sesión

EstadoDescripción
pendingLa sesión está abierta. La URL está activa y el cliente puede pagar.
completedEl cliente pagó, o guardó la tarjeta en una sesión de registro de tarjeta. Estado final.
expiredSe alcanzó el límite de tiempo (24 horas como máximo). La sesión ya no puede pagarse. Estado final.

Estado de la transacción

EstadoDescripción
PendingEl pago se inició pero aún no se confirma (en espera de 3D Secure, de un voucher o de una transferencia).
SuccessEl pago se autorizó y se procesó.
DeclinedEl pago fue rechazado. El cliente puede reintentar.
ExpiredEl intento no se completó a tiempo.

Identificadores clave

IdentificadorQué es
id de la sesiónIdentifica la sesión, p. ej. cs_97_41528_42434d…. Úsalo con Consultar una sesión.
payment_idUn número que identifica el pago de una sesión de pago. Existe desde la creación, nunca cambia y se mantiene igual cuando el cliente reintenta con otra tarjeta. Úsalo con Consultar un pago, para conciliación y con soporte. 0 en las sesiones de registro de tarjeta.
external_idTu propia referencia del pedido, p. ej. ORD-001 (se genera por ti si no envías una). Envíala también como metadata.external_id para que regrese en los webhooks.
direct_transaction_idSolo en cuentas de API Direct: el id del intento de pago más reciente del cliente (un UUID). Cambia cuando el cliente reintenta.
payment_flowdirect cuando tu cuenta se procesa con la API Direct; en otro caso no está presente. Queda fijo al crear la sesión.

Un pedido (external_id) corresponde a una sesión y a un payment_id, que puede tener varios intentos.

Métodos de pago

Valores para payment_method_types. Un método se muestra solo cuando está activo para tu negocio en el Dashboard y aparece en la lista de la sesión.

ValorMétodoTipo
cardTarjeta de crédito / débitoTarjeta
saved_cardsLas tarjetas guardadas del clienteTarjeta
apple_payManaged Apple Pay, sobre el Merchant ID de Tonder — en el diseño v2, para cuentas que procesan por la API Direct, en dispositivos AppleBilletera
oxxopayOXXO PayVoucher en efectivo
speiSPEITransferencia bancaria
mercadopagoMercado PagoRedirección externa
safetypayCashSafetyPay CashEfectivo
safetypayTransferSafetyPay TransferTransferencia bancaria
neosurfNeosurfVoucher prepagado

Opciones de Mercado Pago

Se envían en payment_method_config.mercadopago:

CampoTipoDescripción
payment_methods.excluded_payment_methods[].idstringMétodos a ocultar, p. ej. master.
payment_methods.excluded_payment_types[].idstringTipos de método a ocultar, p. ej. ticket.
payment_methods.default_payment_method_idstringMétodo preseleccionado.
payment_methods.installmentsnumberMáximo de mensualidades.
binary_modebooleanSolo aprobado o rechazado, nunca pendiente.
statement_descriptorstringTexto en el estado de cuenta de la tarjeta.
auto_returnstringCuándo regresar automáticamente: approved o all.

URLs de redirección

URLEl cliente es enviado ahí cuando…
success_urlel pago es exitoso.
pending_urlel pago está pendiente (por ejemplo, un voucher de OXXO o una transferencia SPEI).
cancel_urlel cliente cancela o el pago es rechazado en Mercado Pago.
return_urlno aplica ninguna de las URLs específicas anteriores. Es la única que usan las sesiones de registro de tarjeta.

Con redirect_on_completion: "always" (por defecto) el checkout redirige automáticamente al final. Con "never" no redirige; tu página decide qué hacer a partir de los eventos del checkout embebido.

Códigos de error

Estado HTTPCódigoSignificado
400E004La petición es inválida. metadata.errors tiene una entrada por problema.
400E0014Pediste el pago de una sesión de registro de tarjeta.
401 / 403—Llave API faltante o inválida, o una llave de otro entorno.
404E003No hay ninguna sesión ni pago con este id.
500E001Error inesperado. Reintenta con la misma x-idempotency-key.

Entornos

SandboxProducción
URL base de la APIhttps://api-stage.tonder.iohttps://api.tonder.io
Origen de la página de checkouthttps://stage-payflow.tonder.iohttps://payflow.tonder.io
Dashboardhttps://dashboard-stage.tonder.iohttps://dashboard.tonder.io

Conviene saber

  • Una sesión puede pagarse una sola vez y dura 24 horas como máximo.
  • El monto, la moneda y los artículos de una sesión no se pueden cambiar. En su lugar, crea una sesión nueva.
  • Si el cliente reintenta, la sesión reporta solo el intento más reciente; el payment_id nunca cambia.
  • Prueba todo en Sandbox con tu llave API de prueba antes de salir a producción.

Siguientes pasos

¿Te resultó útil esta página?

En esta página