Saltar al contenido principal

Pruebas de pagos con tarjeta

Al integrar flujos de pago en el entorno Sandbox de TropiPay (https://sandbox.tropipay.me), debes usar tarjetas de pago de prueba dedicadas para simular ciclos de vida de transacciones, autenticaciones y escenarios de error.

Restricciones del entorno
  • Las tarjetas reales NO funcionarán en el entorno Sandbox.
  • Las tarjetas de prueba de Sandbox NO funcionarán en Producción.
  • Nunca intentes procesar datos reales de tarjetahabientes ni tarjetas de crédito/débito en vivo en Sandbox.

Enrutamiento de moneda y pasarela (TPV)

TropiPay enruta las transacciones dinámicamente a través de múltiples pasarelas de pago (TPVs) basándose en varios factores, incluyendo:

  • Moneda de la cuenta: cuentas en EUR, cuentas en USD, o cuentas denominadas en cripto/monedas estables (USDT / USDC).
  • Asignación de pasarela del comercio (TPV): Determinada por la paymentEntity asignada a tu cuenta de procesamiento.

Mapeo de entidad de pago y conjunto de tarjetas

Conjunto de tarjetasMonedas principales de la cuentapaymentEntityNotas
Conjunto #1Cuentas en EUR1Pasarela de autenticación 3DS multimarca
Conjunto #2Cuentas multidivisa2, 4Procesamiento Visa/Mastercard de doble escenario
Conjunto #3Cuentas multidivisa1, 3Simulador estándar y escenarios de error

Debido a que las reglas de procesamiento de pagos y las configuraciones de pasarelas pueden variar o cambiar dinámicamente, si una tarjeta de un conjunto no procesa como se espera en tu configuración de sandbox, prueba con una tarjeta de otro conjunto.

Directrices generales para tarjetas de prueba de Sandbox

A menos que se especifique lo contrario en un escenario de prueba:

  • Nombre del tarjetahabiente: Cualquier nombre (por ejemplo, John Doe).
  • Fecha de expiración: Cualquier fecha futura válida (por ejemplo, 12/30).
  • Código de seguridad (CVV / CVC): Cualquier número de 3 dígitos (por ejemplo, 123), o 4 dígitos para American Express (por ejemplo, 1234).
  • OTP 3D Secure (3DS): Cuando se solicite verificación SMS/OTP en Sandbox, usa 123456.

Conjuntos de tarjetas de prueba

Conjunto #1: Pruebas de pasarela multimarca (paymentEntity: 1, cuentas en EUR)

Este conjunto se usa principalmente en cuentas en EUR con paymentEntity: 1 y permite probar ciclos de vida de autenticación 3D Secure estándar en las principales redes de tarjetas.

Autenticación exitosa

MarcaNúmero de tarjetaEstado esperado
American Express (AMEX)340000000004001Exitoso (autenticación correcta)
Discover6573700000000009Exitoso (autenticación correcta)
Mastercard5591390000000504Exitoso (autenticación correcta)
Visa4900490000000501Exitoso (autenticación correcta)

Errores simulados (autenticación fallida)

MarcaNúmero de tarjetaEscenario / Resultado
American Express (AMEX)340000000004019Estado: N (Autenticación fallida / consulta 3DS fallida)
Discover6599999900000313Estado: N (Autenticación fallida)
Mastercard5591390000000520Estado: N (Autenticación fallida)
Visa4900490000000519Estado: N (Autenticación fallida)

Conjunto #2: Pruebas de pasarela de doble escenario (paymentEntity: 2 y 4)

Usa este conjunto al probar cuentas configuradas con paymentEntity: 2 y paymentEntity: 4.

MarcaEscenarioNúmero de tarjeta
VisaExitoso4000000000002503
MastercardExitoso5200000000002151
VisaFallido4000000000002420
MastercardFallido5200000000002664

Conjunto #3: Simulador estándar y escenarios de error específicos (paymentEntity: 1 y 3)

Usa este conjunto al probar cuentas configuradas con paymentEntity: 1 y paymentEntity: 3 para probar casos límite como rechazos generales de tarjetas, fondos insuficientes y expiración de tarjeta.

Transacciones exitosas

MarcaNúmero de tarjeta
Visa4111111111111111
Mastercard5555555555555555
Maestro6771290000000001

Simulación de escenarios de error

EscenarioNúmero de tarjeta / CondiciónDetalles
Tarjeta rechazada (general)4000000000000002Simula un rechazo genérico del emisor.
Fondos insuficientes4111111111111002Simula una transacción rechazada por saldo insuficiente.
Tarjeta expiradaCualquier número de tarjeta de prueba válidoIntroduce una fecha de expiración en un mes/año pasado (por ejemplo, 01/20).

Manejo de callbacks y eventos webhook

Consejo de pruebas

No necesitas disparar individualmente cada permutación posible de error de pago (por ejemplo, fondos insuficientes, error de autorización, timeout del desafío 3DS). En su lugar, asegúrate de que tus manejadores de callback y webhook procesen correctamente los esquemas de payload estándar para estados completados y fallidos.

Cuando cambia el estado de un pago con tarjeta o falla, TropiPay envía un evento de callback a tu endpoint configurado (notificationUrl o objetivo de webhook suscrito).

Ejemplo: Callback de cambio de estado / fallo de pago

A continuación se muestra un ejemplo del evento de callback recibido cuando ocurre una transición de estado de pago con tarjeta o falla:

{
"signature": "b2740b505314ef1577235b5c8d484e312b64ed3fade27324fe23ef1bb1f8f4cd",
"event_name": "payment_in_state_change",
"userId": "10951e80-6218-11ef-9e2f-7f00b2bfc1f3",
"date": 1786830266966,
"uuid": "ae4c6fdf-449d-496a-9622-03b863e366e6",
"data": {
"stateStr": "processing",
"state": 1,
"id": 5091118,
"reference": "TAB1508260286",
"bankOrderCode": "636452502154",
"conceptTransfer": null,
"service": 2,
"movementType": 2,
"destinationAmount": "4976"
}
}

Atributos del payload de callback

CampoTipoDescripción
signaturestringFirma HMAC-SHA256 para verificar que el payload se originó en TropiPay.
event_namestringNombre del evento despachado (por ejemplo, payment_in_state_change).
userIdstringIdentificador único del usuario comerciante de TropiPay.
datenumberTimestamp Unix (en milisegundos) de cuándo se despachó el callback.
uuidstringUUID único de seguimiento de la notificación.
data.idnumberID interno de la transacción/reserva.
data.referencestringTu referencia de orden interna proporcionada durante la creación del pago.
data.bankOrderCodestringCódigo de seguimiento de orden bancaria de TropiPay.
data.statenumberEstado numérico de la transacción.
data.stateStrstringCadena legible del estado (por ejemplo, processing, completed, failed).
data.destinationAmountstringMonto de la transacción liquidado.

Mejores prácticas para pruebas

  1. Devuelve siempre HTTP 200 inmediatamente: Tu endpoint receptor de webhook debe responder con un estado HTTP 200 OK inmediatamente al recibirlo para acusar recibo.
  2. Procesa de forma asíncrona: Aplaza las actualizaciones de base de datos, cumplimientos de pedidos y llamadas a APIs externas a colas en segundo plano después de devolver la respuesta 200.
  3. Valida firmas: Calcula y verifica siempre la firma del payload usando tu clave secreta para prevenir suplantaciones.
  4. Usa herramientas de inspección de webhooks: Herramientas como Webhook.site o ngrok facilitan inspeccionar payloads y depurar callbacks durante las pruebas en sandbox.