POST /payment/process
Autoriza y captura el cobro con tarjeta. Puede devolver el resultado final (APROBADO /
RECHAZADO) o exigir verificación 3DS (PENDING_3DS).
Auth: requiere x-wpay-key.
Request
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
reference | string | ✅ | La reference de /payment/init. |
card | object | ✅ | { type, number, expiry: "MM/YYYY", cvv } — type: 001 Visa · 002 MC · 003 Amex. |
billing | object | ✅ | Dirección de facturación (ver abajo). |
personal | object | ✅ | { full_name, email, phone }. |
cs_reference_id | string | — | El reference_id de /payment/auth-setup (evita repetir el setup). |
fingerprint_session_id | string | — | GUID del fingerprint del dispositivo. |
save_card | boolean | — | true → tokeniza la tarjeta si el pago es aprobado. Default false. |
return_url | string | — | Base a la que vuelve el navegador tras el Step-Up. Prioridad: body → frontend_url del sistema → global. |
merchant_data | object | — | MDDs antifraude (ver abajo). |
billing
| Campo | Requerido | Descripción |
|---|---|---|
address1 | ✅ | Dirección (máx. 60 caracteres). |
city | ✅ | Ciudad. |
country_code | ✅ | ISO-2 (BO, US, …) — ver /location/countries. |
currency | — | BOB o USD (default USD). |
state | — | Estado/departamento. |
postal_code | — | Código postal (default 0000). |
address2 | — | Complemento. |
merchant_data (MDDs antifraude — opcionales, recomendados)
| Campo | MDD | Descripción |
|---|---|---|
user_logged_in | 1 | SI/NO — sesión iniciada en tu sitio. |
last_purchase_date | 4 | Fecha de última compra (dd/mm/aaaa). |
is_recurring | 6 | SI/NO. |
commerce_name | 7 | Nombre comercial. |
sales_channel | 9 | Canal (default Pagina Web). |
buyer_document | 11 | CI/documento del comprador. |
buyer_id | 15 | Tu id del comprador. |
buyer_document_nit | 19 | NIT. |
total_products | 24 | Cantidad de ítems. |
buyer_age | 42 | Edad. |
service_id | 87 | Id del servicio. |
service_name | 88 | Nombre del servicio. |
payment_reference | 89 | Referencia de pago. |
service_type | 90 | Tipo (default E-commerce). |
pays_full_debt | 92 | SI/NO. |
payment_reason | 97 | Motivo (default internet). |
Responses 201
APROBADO (frictionless)
{
"status": "APROBADO",
"reference": "WP-1784169095747-578AFA46",
"cybersource_id": "7364298471236458210433",
"auth_code": "831000",
"saved_card": {
"key": "C8F0D2A1B3E4F5A6B7C8D9E0",
"card_type": "001",
"card_last4": "1111",
"name": "María Fernández"
}
}saved_card es null salvo que hayas mandado save_card: true y el pago sea aprobado.
Guarda saved_card.key en tu BD — ver Tarjetas guardadas.
PENDING_3DS (Step-Up requerido)
{
"status": "PENDING_3DS",
"reference": "WP-1784169095747-578AFA46",
"authentication": {
"access_token": "eyJhbGciOiJIUzI1NiJ9....",
"step_up_url": "https://<proveedor-3ds>/V2/Cruise/StepUp",
"transaction_id": "7364298471236458210433"
}
}Abre step_up_url en un popup con form POST del access_token como JWT
(cómo hacerlo). Al terminar, WizPay ejecuta el
cobro y redirige el navegador a {return_url}/payment/success?reference=... o
{return_url}/payment/failed?reference=....
RECHAZADO
{
"status": "RECHAZADO",
"reference": "WP-1784169095747-578AFA46",
"cybersource_id": "7364298471236458210433",
"saved_card": null
}Errores
| HTTP | Mensaje |
|---|---|
400 | reference, card, billing y personal son requeridos |
404 | Transacción no encontrada |
400 | Tarjeta bloqueada por política antifraude |
400 | Error en autenticación 3DS / Error al procesar el pago (o el mensaje del gateway) |
Pruébalo
Reglas del simulador: cvv: "999" → RECHAZADO · tarjeta que termina en 3 →
PENDING_3DS · lo demás → APROBADO. Con save_card: true, la tarjeta aparece luego en
GET /cards.