WELIFE Docs Swagger Admin Web

OWNER e2e Pay — refresh 2026-08-17

Domain: D-PAY · WP: WP-OWNER-WIRE-01 (Pay slice) · WP-PAY-LIVE-01 Surfaces: API · VPS api.minhtien.cloud Agent: scripts/smoke-pay-vps.sh — không in secret / payUrl đầy đủ · không thanh toán hộ

Re-smoke + log (VPS 2026-08-17 01:27 UTC)

scripts/smoke-pay-vps.sh chạy lại trên welife-api (Up 2 days). Không in secret / payUrl đầy đủ.

Step Result
GET /api/v1/health 200 · env=production
GET /payments/providers 200 · ready · preferred=VNPAY · mock off · momo+vnpay configured · walletInternalCredit=disabled
GET /users/me 200 (smoke user)
POST /payments/init { provider:VNPAY } 201 · PENDING · payUrlHost=sandbox.vnpayment.vn · vnp_SecureHash present
POST /payments/init (omit provider) 201 · default VNPAY
POST /payments/init { provider:MOMO } 400 · merchant inactive

Log welife-api (48h) — lỗi thật

MoMo resultCode=13 (3 lần), cùng message portal:

Time (UTC) Nguồn Log
01:13:41 app/API MoMo create failed · resultCode 13 · Cấu hình doanh nghiệp không chính xác hoặc tài khoản không hoạt động.
01:17:47 CON ride eb3e26e5… Cùng 13 · chuyến CANCELLED · paymentMethod=MOMO · cancelReason=gateway_init_failed
01:27:09 smoke script Cùng 13 (re-smoke này)

VNPay create không có WARN trên log — khớp HTTP 201.

Chuyến CON 2026-08-17 01:51 UTC eb69a905…: paymentMethod=VNPAY · AWAITING_PAYMENT · vnp_ReturnUrl=welife://payment/result?ok=1 → sandbox invalid return URL. Metro chỉ poll GET /rides 200 (không 4xx). WP-PAY-VNPAY-RIDE-RETURN-01: FE không gửi scheme app; BE bỏ returnUrl không http(s).

Không phải bug code: keys MoMo SET trên VPS; sandbox merchant chưa kích hoạt. App mặc định VNPay. Ví = 0 vì OWNER chưa mở payUrl thanh toán test (credit nội bộ tắt trên prod — đúng).

FE 2026-08-17 · WP-FE-PAY-MOMO-HIDE-01: ẩn chip MoMo trên Gọi xe + không chọn MoMo khi nạp ví (MOMO_CHECKOUT_ENABLED=false). OWNER «MoMo ready» → bật flag. Agent không thanh toán hộ / không sửa portal MoMo.

Kết quả (VPS 2026-08-17 — lần trước trong ngày)

Step Result
GET /api/v1/health (public) 200 · env=production
GET /payments/providers (public + in-container) 200 · ready · preferred=VNPAY · mock disabled · momo+vnpay configured · wallet credit disabled
GET /users/me 200 (smoke user)
POST /payments/init { amount:10000, provider:VNPAY } 201 · PENDING · payUrlHost=sandbox.vnpayment.vn · vnp_SecureHash present
POST /payments/init { amount:10000 } (omit provider) 201 · default VNPAY · same host
POST /payments/init { provider:MOMO } 400 · merchant inactive (không đổi so với 2026-08-14)

Khớp OWNER-PAY-E2E-2026-08-14.

Kết luận

Gateway Create sandbox IPN / return / ví
VNPay PASS (2026-08-17) OWNER còn mở payUrl → thanh toán test → ví + return
MoMo FAIL (merchant) DEFERRED — nhắn MoMo ready sau khi sửa portal

OWNER — 1 bước thủ công (đóng e2e)

  1. App CON trỏ prod (EXPO_PUBLIC_API_URL=https://api.minhtien.cloud/api/v1 hoặc APK EAS) — không localhost.
  2. Đăng nhập → Ví → Nạp tiền.
  3. Banner «Nạp qua VNPay sandbox» · số nhỏ (vd 50.000) → Xác nhận.
  4. sandbox.vnpayment.vn → NCB → thẻ test:
    • Số 9704198526191432198
    • Tên NGUYEN VAN A
    • Phát hành 07/15
    • OTP 123456
  5. Return welife://payment/result → PaymentResult / Ví · số dư tăng.

Xong bước 5 → nhắn agent Pay done (kèm số dư tăng hay không). Không gửi payUrl đầy đủ / screenshot chứa hash.

Agent re-smoke

scp scripts/smoke-pay-vps.sh root@180.93.146.58:/tmp/smoke-pay-vps.sh
ssh root@180.93.146.58 'bash /tmp/smoke-pay-vps.sh; rm -f /tmp/smoke-pay-vps.sh'