Files
gitlab-instance-0a899031_no…/README.md
2026-04-01 02:23:17 -05:00

47 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NomadVIP | 异度星球
NomadVIP 前端Next.js App Router负责会员购买、支付跳转、支付状态轮询以及与 `payjsapi` / PocketBase 联动完成 VIP 开通。
## 核心流程
1. 前端调用 `app/api/pay` 发起支付。
2. `app/api/pay` 按设备分流:
- 微信内:`xorpay`
- PC / 手机浏览器:`zpay`
3. 支付成功后通过 `payjsapi` 异步通知写入 PocketBase。
4. 若通知延迟,前端会调用 `app/api/pay/confirm` 兜底写入 `payments` + `site_vip`
## 关键配置
复制 `.env.example``.env.local`,按需修改:
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `NEXT_PUBLIC_POCKETBASE_URL` | PocketBase 地址(浏览器侧) | `https://pocketbase.hackrobot.cn` |
| `POCKETBASE_URL` | PocketBase 地址(服务端) | `http://127.0.0.1:8090` |
| `PAYMENT_API_URL` / `NEXT_PUBLIC_API_URL` | payjsapi 公网地址 | `https://api.hackrobot.cn` |
| `PAYMENT_API_INTERNAL_URL` | 同机部署时 payjsapi 内网地址 | `http://127.0.0.1:8007` |
| `PAYMENT_DEFAULT_AMOUNT` | 默认支付金额(分) | `18800` |
| `ZPAY_SUBMIT_URL` | ZPAY 收银台地址 | `https://zpayz.cn/submit.php` |
| `POCKETBASE_EMAIL` / `POCKETBASE_PASSWORD` | confirm 兜底写库所需管理员账号 | - |
## 本地开发
```bash
npm install
npm run dev
```
访问 `http://localhost:3000`
## 自检与已修复问题2026-04-01
- 已修复:`app/api/pay/confirm` 在兜底写 `payments` 时使用默认金额,可能导致测试价/临时调价场景记账错误。
- 修复后:优先使用支付网关返回的 `pay_price`(元)换算为分;只有拿不到实际金额时才回退默认金额。
## 常见排查
- 支付发起失败:优先检查 `PAYMENT_API_INTERNAL_URL` / `PAYMENT_API_URL` 是否可达。
- 已支付但未开通:检查 `payjsapi``/nomadvip/order_status` 与异步通知日志。
- 账号已支付但 VIP 未识别:检查 `vip_email_link` 关联是否建立。