37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
I will optimize the registration and payment flow with the specific requirement to record the actual payment amount.
|
|
|
|
### 1. Backend Updates (`main.py`)
|
|
- **Database Schema**: Add `out_trade_no` column to `gsdh_data` to link users with payment orders.
|
|
- **Pre-payment Validation**:
|
|
- Update `create_payment` (H5) and `create_native_payment`.
|
|
- Check if phone exists in `gsdh_data`.
|
|
- **Logic**:
|
|
- If `fee` has a valid amount (not empty, '0', or 'PENDING'), reject as "Already Registered".
|
|
- If `fee` is empty/PENDING, allow payment.
|
|
- Upsert user with `fee` = 'PENDING' and `payment_channel` = '..._pending'.
|
|
- **Payment Status Sync**:
|
|
- Update `check_payment_status`:
|
|
- When WeChat returns `SUCCESS`:
|
|
- **Update `fee`** to the actual configured payment amount (e.g., "0.01").
|
|
- Update `payment_channel` to the final channel (removing '_pending').
|
|
- Update `out_trade_no` logic to ensure we find the correct user.
|
|
|
|
### 2. Frontend Optimization (`templates/ticket.html`)
|
|
- **Dynamic Form Fields**:
|
|
- Replace hardcoded inputs with a loop that renders fields based on `config.field_config` (managed in Admin).
|
|
- Respect "Show", "Required", and "Label" settings.
|
|
- **QR Code Modal**:
|
|
- Add explicit text: "请使用微信扫一扫完成支付" (Please use WeChat Scan to pay).
|
|
- Optimize layout.
|
|
- **Payment Logic**:
|
|
- Handle "Already Registered" error.
|
|
- Redirect to Success Page on completion.
|
|
|
|
### 3. New Success Page
|
|
- Create `templates/success.html` to show a "Registration Successful" message.
|
|
- Add route in `main.py`.
|
|
|
|
### 4. Admin Interface
|
|
- Verify `templates/admin.html` field configuration works with the new `ticket.html` dynamic rendering.
|
|
|
|
This ensures that successful payments overwrite the 'PENDING' status with the actual amount paid. |