WP-PAY-LIVE-01 — VNPay sandbox primary (2026-08-10)
Domain: D-PAY Surfaces: API + CON Status: IMP (sandbox create payUrl) · IPN e2e cần URL public
Env
| Key | Value |
|---|---|
PAYMENTS_MOCK |
false |
VNPAY_URL |
https://sandbox.vnpayment.vn/paymentv2/vpcpay.html |
| MoMo | configured nhưng không preferred (credential sandbox reject trước đó) |
Smoke
GET /payments/providers → preferred=VNPAY · mock disabled · vnpay configured
POST /payments/init { amount:10000, provider:VNPAY }
→ PENDING · payUrl host=sandbox.vnpayment.vn · vnp_SecureHash OK
POST /payments/init { amount } (omit provider)
→ provider=VNPAY (default)
Quy trình thanh toán (đã gắn)
| Flow | Provider |
|---|---|
| Wallet topup | pickPaymentProvider → VNPAY |
FNB/Grocery settleOrderPayment |
mở payUrl từ BE (default VNPAY) |
Bills / QR payInit |
omit provider → BE default VNPAY |
Order initForOrder |
BE: VNPAY > MoMo > MOCK |
BE thêm field preferred trên /payments/providers.
Deeplink return (WP-PAY-VNPAY-DEEPLINK-01)
GET /payments/vnpay/return→ HTML +welife://payment/result?orderId=&ok=- CON:
paymentDeepLink.tslắng nghe → Alert + mở Ví - Return/poll LAN vẫn như trên