feat(gopay): support GoPay Plus checkout flow

This commit is contained in:
朴圣佑
2026-05-01 02:02:33 +08:00
committed by QLHazyCoder
parent 2eb913e00b
commit d851cc4d36
24 changed files with 3798 additions and 162 deletions
+36 -7
View File
@@ -15,7 +15,8 @@
5. SUB2API 多分组创建账号。
6. OAuth 登录使用全新标签页。
7. 接码平台多平台适配:HeroSMS + 5sim。
8. 本地导出配置 `/config.json` 忽略规则
8. Plus 支付方式适配:PayPal + GoPay
9. 本地导出配置 `/config.json` 忽略规则。
推荐每次同步后执行:
@@ -225,7 +226,7 @@ node --test \
Plus checkout 页面加载后尽早判断是否有免费试用资格:
- 如果“今日应付金额”不是 0,直接跳过 PayPal 填写/提交。
- 如果“今日应付金额”不是 0,直接跳过支付填写/提交。
- 被跳过的账号也要标记为“已用”,避免下次重复拿到。
- 提交前再检查一次金额,防止页面中途变化。
@@ -256,11 +257,39 @@ Plus checkout 页面加载后尽早判断是否有免费试用资格:
### 维护注意
1. 不要把免费资格判断放到地址/PayPal 填写之后。
1. 不要把免费资格判断放到账单地址或支付方式填写之后。
2. 不要把 `PLUS_CHECKOUT_NON_FREE_TRIAL::` 当作普通可重试错误。
3. 标记账号已用时要读取 fresh state,避免 step 局部传入的 state 过期。
## 5. SUB2API 多分组创建账号
## 5. Plus 支付方式适配:PayPal + GoPay
### 目标
Plus 模式新增 `plusPaymentMethod`
- `paypal`:保留现有 PayPal 账号池、登录与授权。
- `gopay`:创建 checkout 时使用印尼账单国家 `ID / IDR`,第 7 步选择 GoPay,第 8 步填写 GoPay 手机号;验证码优先使用侧边栏已填值,否则执行时弹出手动输入框;提交验证码后继续填写 GoPay PIN。
### 关键文件
| 文件 | 作用 |
| --- | --- |
| `sidepanel/sidepanel.html` | Plus 支付下拉、GoPay 手机号、GoPay 验证码、GoPay PIN 输入。 |
| `sidepanel/sidepanel.js` | 保存 `plusPaymentMethod / gopayCountryCode / gopayPhone / gopayOtp / gopayPin`,按支付方式切换配置行,第 8 步标题按 PayPal / GoPay 动态匹配,并提供 GoPay 验证码手动输入弹窗。 |
| `gopay-utils.js` | GoPay 支付方式、手机号、验证码、PIN 规范化工具。 |
| `content/plus-checkout.js` | 创建 GoPay checkout payload,识别/选择 GoPay 付款方式。 |
| `background/steps/fill-plus-checkout.js` | 第 7 步按支付方式选择 PayPal 或 GoPay,并为 GoPay 使用印尼地址。 |
| `background/steps/gopay-approve.js` | 第 8 步 GoPay 手机号、手动验证码、PIN 自动化骨架。 |
| `content/gopay-flow.js` | GoPay 页面手机号/验证码/PIN 输入脚本,包含国家区号切换、贴近人工点击的确认按钮事件序列,并在必要时交给后台 debugger 真实鼠标事件兜底。 |
| `content/whatsapp-flow.js` | WhatsApp Web 验证码读取脚本。 |
### 维护注意
1. GoPay 验证码和 PIN 只能通过侧边栏输入或运行时弹窗临时填写,不要写入代码、测试或文档。
2. PayPal 和 GoPay 共享 Plus 可见步骤,第 8 步仍使用 `paypal-approve` 这个 step key,但展示标题会按 `plusPaymentMethod` 变为 PayPal 或 GoPay 文案,后台也会按该字段分发到 PayPal 或 GoPay executor。
3. GoPay 页面和 WhatsApp Web 的真实 DOM 可能变化;后续联调时优先在每个页面抓 `GOPAY_GET_STATE / WHATSAPP_GET_STATE` 输出,再补精确选择器。
## 6. SUB2API 多分组创建账号
### 目标
@@ -290,7 +319,7 @@ Plus checkout 页面加载后尽早判断是否有免费试用资格:
上游如果只按单个 `sub2apiGroupId` 写回,需要保留本地 `sub2apiGroupIds` 数组逻辑。
## 6. OAuth 登录使用全新标签页
## 7. OAuth 登录使用全新标签页
### 目标
@@ -307,7 +336,7 @@ OAuth 登录流程打开新标签页,避免复用旧页面导致状态污染
上游如果改 OAuth tab 打开方式,确认仍保留“全新标签页”语义,不要退回到复用已有 tab。
## 7. 接码平台多平台适配:HeroSMS + 5sim
## 8. 接码平台多平台适配:HeroSMS + 5sim
### 目标
@@ -371,7 +400,7 @@ node --check sidepanel/sidepanel.js
node --test tests/five-sim-provider.test.js tests/phone-verification-flow.test.js tests/sidepanel-phone-verification-settings.test.js
```
## 8. 本地配置文件忽略
## 9. 本地配置文件忽略
### 目标