WP-RIDE payment / settle / promo / match — 2026-08-13
Scope (theo thứ tự OWNER)
| WP | Mục tiêu | Status |
|---|---|---|
| WP-RIDE-PAY-REFUND-02 | Hoàn ví (WALLET) / gateway (MOMO·VNPAY) khi user / driver / admin hủy | IMP |
| WP-RIDE-SETTLE-01 | Settle lúc complete · driverEarning · platformFee 15% · credit ví TX nếu prepaid |
IMP |
| WP-RIDE-PROMO-01 | promoCode trên create ride · resolve BE · discountAmount · mark voucher used |
IMP |
| WP-RIDE-PAY-GATEWAY-01 | PaymentPurpose.RIDE_PAY · initForRide · IPN → PREPAID · ẩn AWAITING_PAYMENT khỏi available |
IMP |
| WP-RIDE-MATCH-01 | Auto-assign online driver ≤8km · available sort theo lastLat/lng · bán kính 15km |
IMP |
Domain / Surfaces
- Domain: D-RIDES (+ D-PAY / D-DRIVER / D-PROMO mỏng)
- Surfaces: API · CON (promoCode trên book) · DRV (earnings / available geo)
Hành vi chính
- Refund:
RidesService.refundWalletIfPaid— WALLET →creditRideRefund; MOMO/VNPAY prepaid →PaymentsService.refundRidePayment. - Settle:
completeTrip→settleOnComplete· prepaid creditRIDE_EARNINGidempotentride-earn:{id}· CASH →SETTLED_CASH(không move ví khách). - Promo:
CreateRideDto.promoCode→PromotionsService.resolveForCheckout(..., { markUsed: true })·fareAmount= gross − discount. - Gateway: create
MOMO/VNPAY→ intentRIDE_PAY+payUrl· markPaid setpaymentStatus=PREPAID(không nạp ví khách). - Match: sau create (không AWAITING) gọi
tryAutoAssign· driver available sort + radius.
Migration
api/prisma/migrations/20260813103000_ride_settle_promo_gateway/
Local
- migrate deploy: PASS
- unit
rides.service.spec.ts: PASS prisma generate: types OK; DLL rename có thể EPERM nếu API đang giữ file — restartapi:devsau generate
Files
api/prisma/schema.prismaapi/src/modules/rides/*api/src/modules/driver/driver.service.tsapi/src/modules/payments/payments.service.tsapi/src/modules/promotions/promotions.service.tsapi/src/modules/wallet/wallet.service.tsmobile/src/services/api.ts·RideQuoteScreen.tsx