feat(gopay): support GoPay Plus checkout flow
This commit is contained in:
@@ -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. 本地配置文件忽略
|
||||
|
||||
### 目标
|
||||
|
||||
|
||||
Reference in New Issue
Block a user