Order Management (Admin)
Admin → Orders. Site-wide orders from the admin's perspective.
Where
Admin → Orders.
List shows
Per row:
- Order number
- Type chip (Plan / Top-up)
- User summary
- Amount / Plan name
- Payment method
- Status chip (Unpaid / Paid / Canceled / Refunded)
- Source (User / Admin)
- Created at
Top dropdowns: filter by type / status / source. Search box: prefix match on order number / pay-trade-no.
Filters
| Dropdown | Options |
|---|---|
| Order type | All / Plan / Top-up |
| Status | All / Unpaid / Paid / Canceled / Refunded |
| Source | All / User / Admin |
| Search | Order number / pay-trade-no prefix |
Mark paid
Use when: callback failed, bank transfer reconciled, testing.
- Find the order → "Mark paid"
- Pick
pay_method(defaultoffline) - Fill
pay_trade_no(optional, external flow number) - Submit → order becomes Paid + activates plan / credits quota
Admin "Mark paid" always uses stack mode; it won't overwrite an existing subscription.
Mark refunded
Use when: customer requested refund, dispute resolved.
- Only
status=1(Paid) orders can be refunded - Row → "Refund" → double-confirm
- Submit → order becomes Refunded
Refund does NOT auto-reverse already-credited quota or cancel subscriptions. You'll need to:
- Cancel the user's subscription
- Adjust the user's balance
Delete (Root only)
Use when: test-order cleanup, accidental order creation.
- Only
status !== 1(not Paid) orders can be deleted - Root row → "Delete" → double-confirm
- The order row is physically removed
Hard delete is irreversible. Prefer "Refund" or canceling the subscription.
FAQ
- User says payment succeeded but the order stays "Unpaid": the async callback failed. Check
pay_time/pay_trade_noin the order detail; mark paid manually. - Refund doesn't remove the user's balance: correct — the system doesn't auto-reverse. Adjust manually in User Management.
- Where to find the bank's flow number for reconciliation: the
pay_trade_nofield in the order detail page.
Related
Related API
GET /api/order/— list (Admin)GET /api/order/search?keyword=— keyword search (Admin)GET /api/order/:id— detail (Admin)PUT /api/order/:id— mark paid / refund (Admin)DELETE /api/order/:id— delete (Root)