Acepta un pago con tarjeta mediante VPOS
Envía los datos de la tarjeta desde un flujo de servidor que cumpla con los requisitos de PCI.
Crea un pago
curl --request POST "${API_URL}/v1/payments/vpos" \
--header "content-type: application/json" \
--header "x-api-key: ${VEXPAY_API_KEY}" \
--data '{
"usdAmount": 24.00,
"cardNumber": "4111111111111111",
"expirationMonth": 12,
"expirationYear": 2030,
"cvv": "123",
"cardHolderName": "CLIENTE PRUEBA",
"cardHolderId": "V12345678",
"accountType": 0,
"cardType": 1,
"externalRef": "order_demo_1043"
}'accountType acepta 0, 10 o 20. cardType acepta 1, 2 o 3. cardPin es opcional (4 dígitos); si se omite, el gateway envía 0000. La tarifa de débito o crédito se determina por la tarjeta y el tipo de cuenta que elige el comprador: accountType 10 o 20 paga la tarifa de débito y accountType 0 la de crédito, pero una tarjeta que VEXPay sabe que es de crédito siempre paga la tarifa de crédito. Sin accountType, VEXPay se guía por la tarjeta, y una tarjeta que no puede identificar paga la tarifa de crédito (ver Precios).
Tarjeta de prueba
Con una clave Test, las tarjetas reales se rechazan y nunca se cobran. Tienes dos tipos de tarjeta de prueba: esta tarjeta Débito Maestro, que va al ambiente de pruebas del banco y siempre se aprueba, y los escenarios de tarjetas de prueba de abajo, que devuelven cada aprobación y rechazo. Ambas aparecen en tu portal, en Sandbox.
| Campo | Valor |
|---|---|
| Marca de la tarjeta | Débito Maestro |
| cardNumber | 6276093058088765 |
| expirationMonth / expirationYear | 12 / 2025 |
| cvv | 467 |
| cardPin | 1234 |
| cardHolderName | Julian Esteves |
| cardHolderId | V23000760 |
| accountType | 20 |
| cardType | 3 |
curl --request POST "${API_URL}/v1/payments/vpos" \
--header "content-type: application/json" \
--header "x-api-key: TU_CLAVE_API_TEST" \
--data '{
"vesAmount": 32.95,
"cardNumber": "6276093058088765",
"expirationMonth": 12,
"expirationYear": 2025,
"cvv": "467",
"cardPin": "1234",
"cardHolderName": "Julian Esteves",
"cardHolderId": "V23000760",
"accountType": 20,
"cardType": 3,
"externalRef": "test_card_1"
}'Escenarios de tarjetas de prueba. Como las tarjetas de prueba de Stripe: con una clave Test, VEXPay responde estos números sin llegar al banco, para que pruebes cada resultado que tu checkout debe manejar. Usa cualquier vencimiento futuro y cualquier CVV. Envía cardPin 1234 o ningún PIN.
| cardNumber | Escenario | Resultado |
|---|---|---|
4242424242424242 | Aprobada (tarjeta de crédito) | Pago COMPLETED |
4000056655665556 | Aprobada (tarjeta de débito) | Pago COMPLETED |
4000000000009995 | Fondos insuficientes | 422 G51 |
4000000000005506 | PIN incorrecto | 422 G55 |
4000000000000382 | Intentos de PIN excedidos | 422 G38 |
4000000000000069 | Tarjeta caducada | 422 G54 |
4000000000009987 | Tarjeta extraviada | 422 G41 |
4000000000009979 | Tarjeta robada | 422 G43 |
4100000000000019 | Sospecha de fraude | 422 G59 |
4000000000000366 | Tarjeta restringida | 422 G36 |
4000000000000580 | Transacción no permitida | 422 G58 |
4000000000000002 | Referirse al banco emisor | 422 G02 |
4000000000000119 | Falla del sistema del banco | 422 G96 |
4000000000000689 | Respuesta tardía del banco | 422 G68 |
4000000000000259 | Aprobada y luego contracargada | COMPLETED, luego payment.chargeback |
- Un rechazo se comporta igual que en Live: HTTP 422 con el código del banco en
code, el pagoFAILEDcon el mismofailureCodey un webhookpayment.failed. - Una aprobación se completa como un cobro Live:
payment.completed, el crédito en tu ledger y la comisión de ese tipo de tarjeta (la de débito usa tu tarifa de débito; las demás, tu tarifa de crédito). - En cualquier tarjeta de prueba, un vencimiento pasado se rechaza con
G54y uncardPindistinto de1234, conG55. 4000000000000259se completa y luego recibe un contracargo total en cerca de un minuto: se envíanpayment.chargebackypayment.reversed, y se debita tu saldo Test.- Los rechazos cuentan para la protección contra pruebas de tarjetas: tras 3 tarjetas distintas fallidas para un mismo
cardHolderIden 24 horas, ese pagador recibe 429CARD_VELOCITY_BLOCKEDdurante las siguientes 24 horas. Usa uncardHolderIddistinto en cada prueba. - Los checkouts y links de pago en Test muestran una lista "Tarjetas de prueba" que llena el formulario de tarjeta.