2026-07-13 — Cambio de método de pago y ventana de pago
Para front-end y mobile (cliente y conductor) y el panel admin.
Summary
El cliente puede cambiar el método de pago de un pedido antes de que el cobro se
consolide, mediante un nuevo endpoint. Además, la fase de pago
(WAITING_FOR_PAYMENT) ahora tiene una ventana con caducidad: si el pago no se
completa a tiempo, el intent se marca FAILED y la orden se cancela, avisando a
cliente y conductor. El panel admin gana endpoints para configurar las ventanas de
aceptación y de pago.
New
Cambiar el método de pago del pedido
| Método | Endpoint | Rol | Para qué sirve |
|---|---|---|---|
| PATCH | /orders/{orderId}/payment-method |
cliente | Cambia el método de pago del pedido (solo el dueño). |
Request:
| Campo | Tipo | Requerido | Reglas |
|---|---|---|---|
paymentMethod |
string | sí | un código de método activo o PAYMENT_FORM |
paymentFormId |
integer | condicional | requerido si paymentMethod=PAYMENT_FORM; debe ser un formulario activo; se ignora en otros métodos |
- Response:
200—{ order }(vista CLIENT) con elpayment_methodactualizado;client_pays_usdpuede cambiar. - Errores:
404 OrderNotFound(orden desconocida o de otro dueño) ·409 PaymentMethodLocked(orden más allá deWAITING_FOR_PAYMENT, el cliente ya reportó un pago, o cambiar a efectivo tras la aceptación) ·422(método no disponible, opaymentFormIdfaltante/ inválido).
Config admin de ventanas de pedido
| Método | Endpoint | Rol | Para qué sirve |
|---|---|---|---|
| GET | /admin/config/orders |
admin | Ventanas actuales de aceptación y pago (en minutos). |
| PATCH | /admin/config/orders |
admin | Actualiza las ventanas (merge: solo cambia lo que se envía). |
- Request (
PATCH):order_expiry_minutes(integer, 1–120) ·payment_expiry_minutes(integer, 1–120); ambos opcionales. - Response:
{ "orders": { "order_expiry_minutes": 5, "payment_expiry_minutes": 15 } }. - Errores:
422 ValidationErrorsi un valor no es entero, es< 1o> 120.
Auto-verificación en formularios de pago (Bancamiga)
Los formularios de pago admin exponen un nuevo campo auto_verify para habilitar la
conciliación automática de Pago Móvil vía Bancamiga.
| Método | Endpoint | Rol | Para qué sirve |
|---|---|---|---|
| POST | /admin/payment-forms |
admin | Crear un formulario de pago. |
| PATCH | /admin/payment-forms/{paymentFormId} |
admin | Actualizar un formulario de pago. |
| Campo | Tipo | Requerido | Reglas |
|---|---|---|---|
auto_verify |
boolean | no | Por defecto false. En un formulario pago_movil, al ponerlo en true habilita la conciliación automática vía Bancamiga; se ignora en otras categorías. |
- Response: el objeto del formulario de pago (en
index,storeyupdate) ahora incluyeauto_verify(boolean).
Campos nuevos
- Objeto
payment:expires_at(deadline de la ventana de pago) yreported_at. - Objeto
order:expires_at(visible enGET /ordersyGET /orders/{orderId}/tracking).
Changes
La fase de pago tiene caducidad dura: un intent PENDING que supera su expires_at
sin haber sido reportado se marca FAILED y su orden se cancela ("Pago expirado"),
notificando a cliente y conductor. Antes la orden podía quedar abierta a la espera
del pago.