Prueba toda tu integración en modo Test
Ejecuta cada método de pago, webhook y payout que piensas usar con tu clave Test — sin mover dinero real — antes de pedir salir a producción.
Qué vas a hacer
Cada cuenta tiene un lado Live y uno Test. Test funciona desde el primer día, usa sandboxes y nunca le cobra a un comprador real. Al terminar este playbook habrás completado un pago de prueba con cada método que piensas ofrecer, recibido y verificado su webhook, y leído el resultado en tu saldo.
- Acceso al portal (el enlace de inicio de sesión que te envió VEXPay).
- Un servidor que pueda hacer solicitudes HTTPS y recibir un webhook HTTPS público (usa un túnel mientras desarrollas en local).
Pasos
- Cambia el portal a Test
Usa el selector Live | Test en el encabezado del portal. Sigues con la sesión iniciada. Todo lo que crees con Test seleccionado pertenece a tu cuenta Test.
- Crea una clave Test
Abre Credentials, ponle a la clave el nombre de la integración que la usará (por ejemplo "Backend") y haz clic en Create key. Copia la clave cuando se muestre y guárdala en el entorno de tu servidor como
VEXPAY_API_KEY. - Registra un endpoint de webhook en Test
Abre Webhooks → New endpoint, o llama a
POST /v1/webhookscon la clave Test. Guarda el secreto de firma: se muestra una sola vez. Luego haz clic en Send test. Detalle completo: Configurar webhooks. - Paga una vez con cada método que ofrecerás
Crea una sesión de checkout (o un enlace de pago) con la clave Test y págala. Los controles de prueba de cada método están en la tabla de abajo.
- Prueba también los caminos de error
Usa un código equivocado, deja que un pago expire o usa una tarjeta que se rechaza, y comprueba que tu sistema reacciona a
payment.failedypayment.canceledsin entregar el pedido. - Lee el resultado
Llama a
GET /v1/payments/:idyGET /v1/balancecon la clave Test. Las cuentas Test no tienen retención de saldo, así que los créditos de prueba están disponibles de inmediato.
curl --request POST "${API_URL}/v1/checkout/sessions" \
--header "content-type: application/json" \
--header "x-api-key: ${VEXPAY_API_KEY}" \
--data '{
"amountUsd": 5.00,
"description": "Pedido de prueba",
"reference": "test-order-1"
}'
# Abre la "url" de la respuesta y paga con los controles de prueba de abajo.| Método | Cómo completarlo en Test |
|---|---|
| Tarjeta | Usa los números de tarjeta de prueba en VPOS. Las tarjetas reales se rechazan sin cobrarse. |
| Débito Inmediato (C2P) | Ingresa el código vigente que muestra Portal → Sandbox. Cualquier otro código hace fallar el pago. |
| Pago Móvil (checkout alojado) | La pantalla de espera muestra datos de ejemplo: nunca les envíes dinero real. Presiona Simular pago recibido. |
| USDT / USDC | La página alojada de stablecoins muestra botones de prueba para confirmar, cancelar o simular un pago incompleto. Las direcciones de depósito todavía no se pueden simular; pruébalas con el checkout alojado. |
| Pesos colombianos | Nequi: cualquier dato válido (por ejemplo teléfono 3001234567, documento CC 1234567890) se completa cerca de un minuto después. Daviplata: código 123456. Nunca envíes pesos reales en Test. |
| Contracargo de tarjeta | Paga con 4000000000000259. Cerca de un minuto después se registra un contracargo de prueba y llega payment.chargeback. |
Comprueba que funcionó
- Cada pago de prueba aparece
COMPLETEDenGET /v1/payments/:id(COP:completedenGET /v1/cop/payments/:id) y en la página Payments del portal. - Tu endpoint recibió
payment.completedconlivemode: falsey tu verificación de firma pasó. Portal → Webhooks → Delivery history muestra la entrega como exitosa. - Tu pedido se marcó como pagado una sola vez, incluso cuando reenviaste el mismo evento.
Qué funciona distinto en Test
- Sin retención de saldo: los créditos de prueba están disponibles de inmediato (los créditos Live quedan retenidos 24 horas).
- Las conversiones a USDT se completan en la misma solicitud, y los payouts de stablecoins de prueba se completan al instante sin hash de transacción.
- Los microdepósitos de la cuenta de payout y de los vendedores, y los payouts en bolívares, mueven céntimos reales incluso en Test (siempre menos de Bs 0,50 en total). Usa un destino de Pago Móvil real y lee los montos en el estado de cuenta.
- USDT, USDC y pesos colombianos aparecen en Test solo cuando VEXPay los habilitó en tu cuenta.
Si algo sale mal
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
403 live_mode_not_activated | Estás enviando la clave Live | Usa la clave Test hasta que tu cuenta sea aprobada. |
| 401 en todas las llamadas | Clave faltante, mal escrita, revocada o rotada | Copia la clave de nuevo desde Credentials (con Test seleccionado). |
| Falta un método en el checkout de prueba | No está habilitado en tu cuenta, o está apagado en Payment methods | Mira Activar o desactivar métodos. Pide a VEXPay que habilite el método que necesitas. |
| Débito Inmediato falla con un error de código | El código cambió o se escribió mal | Usa el código que muestra Portal → Sandbox en ese momento. |
| El endpoint de webhook se rechaza con 400 | La URL es localhost, privada o no es http(s) | Usa una URL HTTPS pública, por ejemplo un túnel a tu máquina. |
Relacionado: Ruta de integración · Salir a producción · Salir a producción