@alipay/alipay-aipay 1.2.2 → 1.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/README.md +5 -0
  2. package/dist/commands/install.d.ts.map +1 -1
  3. package/dist/commands/install.js +13 -12
  4. package/dist/commands/install.js.map +1 -1
  5. package/dist/commands/uninstall.d.ts.map +1 -1
  6. package/dist/commands/uninstall.js +17 -9
  7. package/dist/commands/uninstall.js.map +1 -1
  8. package/dist/commands/update.d.ts.map +1 -1
  9. package/dist/commands/update.js +5 -5
  10. package/dist/commands/update.js.map +1 -1
  11. package/dist/index.js +4 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/utils/config.d.ts +5 -3
  14. package/dist/utils/config.d.ts.map +1 -1
  15. package/dist/utils/config.js +34 -12
  16. package/dist/utils/config.js.map +1 -1
  17. package/dist/utils/file.d.ts +8 -0
  18. package/dist/utils/file.d.ts.map +1 -1
  19. package/dist/utils/file.js +161 -9
  20. package/dist/utils/file.js.map +1 -1
  21. package/dist/utils/jq.d.ts.map +1 -1
  22. package/dist/utils/jq.js +8 -0
  23. package/dist/utils/jq.js.map +1 -1
  24. package/package.json +6 -5
  25. package/skill/SKILL.md +15 -169
  26. package/skill/VERSION +1 -1
  27. package/skill/references/integration/flow.md +321 -292
  28. package/skill/references/integration/modules/alipay-sdk-reminder.md +5 -3
  29. package/skill/references/integration/modules/checklist.md +41 -27
  30. package/skill/references/integration/modules/code-examples/csharp/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +199 -0
  31. package/skill/references/integration/modules/code-examples/csharp/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +8 -4
  32. package/skill/references/integration/modules/code-examples/csharp/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +6 -2
  33. package/skill/references/integration/modules/code-examples/csharp/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.cs +3 -1
  34. package/skill/references/integration/modules/code-examples/java/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +184 -0
  35. package/skill/references/integration/modules/code-examples/java/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +4 -1
  36. package/skill/references/integration/modules/code-examples/java/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +5 -2
  37. package/skill/references/integration/modules/code-examples/java/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemoController.java +3 -1
  38. package/skill/references/integration/modules/code-examples/nodejs/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +135 -0
  39. package/skill/references/integration/modules/code-examples/nodejs/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +16 -10
  40. package/skill/references/integration/modules/code-examples/nodejs/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +10 -4
  41. package/skill/references/integration/modules/code-examples/nodejs/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.js +2 -1
  42. package/skill/references/integration/modules/code-examples/php/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +157 -0
  43. package/skill/references/integration/modules/code-examples/php/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +4 -1
  44. package/skill/references/integration/modules/code-examples/php/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +5 -2
  45. package/skill/references/integration/modules/code-examples/php/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.php +2 -1
  46. package/skill/references/integration/modules/code-examples/python/1-/351/200/232/347/224/250/346/216/245/345/217/243//345/274/202/346/255/245/351/200/232/347/237/245/345/244/204/347/220/206/344/273/243/347/240/201/347/244/272/344/276/213.md +128 -0
  47. package/skill/references/integration/modules/code-examples/python/2-/347/275/221/347/253/231/346/224/257/344/273/230//347/273/237/344/270/200/346/224/266/345/215/225/344/270/213/345/215/225/345/271/266/346/224/257/344/273/230/351/241/265/351/235/242/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +4 -1
  48. package/skill/references/integration/modules/code-examples/python/3-APP/346/224/257/344/273/230/APP/346/224/257/344/273/230/346/216/245/345/217/243/344/273/243/347/240/201/347/244/272/344/276/213.md +5 -1
  49. package/skill/references/integration/modules/code-examples/python/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.py +4 -2
  50. package/skill/references/integration/modules/interface-contract/aipay-interface-contract.md +53 -0
  51. package/skill/references/integration/modules/interface-contract/apppay-interface-contract.md +45 -0
  52. package/skill/references/integration/modules/interface-contract/common-trade-contract.md +42 -0
  53. package/skill/references/integration/modules/interface-contract/notify-url-contract.md +68 -0
  54. package/skill/references/integration/modules/interface-contract/webpay-interface-contract.md +44 -0
  55. package/skill/references/integration/modules/interface-guide.md +37 -72
  56. package/skill/references/integration/modules/product-decision.md +10 -27
  57. package/skill/references/integration/modules/sandbox/a2m-sandbox-test.md +62 -94
  58. package/skill/references/integration/modules/sandbox/alipay-sandbox-tool.md +43 -40
  59. package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +93 -114
  60. package/skill/references/integration/modules/scripts/local_402_sandbox_pay.py +357 -147
  61. package/skill/references/integration/modules/scripts/sandbox_config.sh +299 -0
  62. package/skill/references/integration/modules/troubleshooting-flow.md +28 -0
  63. package/skill/references/normal/alipay-cli-env.md +15 -5
  64. package/skill/references/normal/full-process-routing.md +80 -0
  65. package/skill/references/normal/json/customer-messages.json +937 -0
  66. package/skill/references/normal/json/policy-rules.json +179 -0
  67. package/skill/references/normal/rejection-guide.md +11 -6
  68. package/skill/references/normal/scripts/alipay_cli_env.mjs +29 -0
  69. package/skill/references/normal/scripts/alipay_cli_env.sh +21 -0
  70. package/skill/references/normal/scripts/common.sh +87 -0
  71. package/skill/references/normal/scripts/detect_dev_tool.sh +5 -1
  72. package/skill/references/normal/scripts/integration_message_runner.mjs +801 -0
  73. package/skill/references/normal/scripts/onboarding_message_runner.mjs +436 -0
  74. package/skill/references/normal/scripts/open_official_url.sh +82 -0
  75. package/skill/references/normal/scripts/platform_compat.mjs +39 -0
  76. package/skill/references/normal/scripts/project_route_inspector.sh +132 -0
  77. package/skill/references/normal/scripts/python_script_runner.mjs +56 -0
  78. package/skill/references/normal/scripts/render_customer_message.mjs +1263 -0
  79. package/skill/references/normal/scripts/self_update.mjs +160 -0
  80. package/skill/references/normal/scripts/telemetry.mjs +1278 -0
  81. package/skill/references/normal/self-update.md +18 -51
  82. package/skill/references/onboarding/flow.md +381 -283
  83. package/skill/references/onboarding/modules/app-release.md +132 -179
  84. package/skill/references/onboarding/modules/authorization.md +53 -64
  85. package/skill/references/onboarding/modules/error-handling.md +31 -34
  86. package/skill/references/onboarding/modules/product-sign.md +62 -66
  87. package/skill/references/onboarding/modules/scripts/app.sh +397 -158
  88. package/skill/references/onboarding/modules/scripts/ar_sign_apply.sh +38 -22
  89. package/skill/references/onboarding/modules/scripts/auth.sh +479 -167
  90. package/skill/references/onboarding/modules/scripts/download_key_tool.sh +157 -0
  91. package/skill/references/onboarding/modules/scripts/error_handler.sh +100 -130
  92. package/skill/references/onboarding/modules/scripts/network_retry.sh +96 -0
  93. package/skill/references/onboarding/modules/scripts/query_sign_status.sh +17 -70
  94. package/skill/references/onboarding/modules/scripts/service.sh +153 -89
  95. package/skill/references/onboarding/modules/scripts/sign_status_parser.sh +58 -0
  96. package/skill/references/onboarding/modules/scripts/upload_screenshots.sh +16 -14
  97. package/skill/references/onboarding/modules/service-registration.md +67 -72
  98. package/skill/references/runtime-entry.md +62 -0
@@ -10,22 +10,20 @@
10
10
 
11
11
  签约模块负责产品签约流程,包括签约状态查询和签约申请提交。
12
12
 
13
- 本模块采用 `ar-sign.apply` **外部直调 / 静态参数模式**:由 `scripts/ar_sign_apply.sh` 基于当前已确认的产品类型、MCC 和资料字段直接构造 `businessProperty` 后提交申请。它不走 `previewFormView` 动态 schema 收集循环,因此只覆盖本文档明确列出的字段和产品。
13
+ 本模块采用 `ar-sign.apply` **脚本封装 / 静态参数模式**:由 `scripts/ar_sign_apply.sh` 基于当前已确认的产品类型、MCC 和资料字段直接构造 `businessProperty` 后提交申请,只覆盖本文档和脚本已经验证的字段与产品。
14
14
 
15
15
  **使用条件:** Step 3.1 始终使用本模块的签约状态查询规则;只有查询结果为 `NOT_SIGNED` 时,才使用本模块的签约申请提交规则。`SIGNED_EFFECTIVE`、`SIGN_SUBMITTED`、查询失败或其他状态均禁止提交签约申请。
16
16
 
17
17
  ---
18
18
 
19
- ## MCP能力
19
+ ## 当前主流程 MCP 能力
20
20
 
21
- | MCP Server | 方法 | 用途 |
22
- |------------|------|------|
23
- | `ar-sign` | `apply` | 提交签约申请(主流程使用) |
24
- | `ar-query` | `queryArInfosBySalesProd` | 按前台产品码查询合约状态 |
25
- | `ar-query` | `queryArInfosByBackProd` | 按后台产品码查询合约状态 |
26
- | `ar-order-query` | `queryBizOrder` | 按订单号查询签约订单 |
21
+ | MCP 方法 | 用途 | 固定入口 |
22
+ |------------|------|----------|
23
+ | `ar-sign.apply` | 提交签约申请 | `scripts/ar_sign_apply.sh` |
24
+ | `ar-query.queryArInfosBySalesProd` | 按当前产品码查询合约状态 | `scripts/query_sign_status.sh`、`scripts/auth.sh` |
27
25
 
28
- > **注意:** 通过 `scripts/ar_sign_apply.sh` 提交签约申请。
26
+ > 本表只记录当前主流程脚本实际使用的方法。只能执行固定脚本入口,不得根据方法名自行构造 MCP 调用。
29
27
 
30
28
  ---
31
29
 
@@ -33,7 +31,7 @@
33
31
 
34
32
  ### 查询命令
35
33
 
36
- 执行 `scripts/query_sign_status.sh --sales-code <当前产品码> --product-type <aipay|webpay|apppay>`。
34
+ 默认执行 `scripts/query_sign_status.sh --sales-code <当前产品码> --product-type <aipay|webpay|apppay>`。若本轮成功的 `auth.sh` 已对完全相同请求取得合法 `resultObj.arInfoList`,它会通过共享 `sign_status_parser.sh` 输出带 `ALIPAY_AIPAY_INTERNAL:` 前缀的 `AUTH_SIGN_QUERY_REUSABLE=true`、`SIGN_STATUS` 和产品匹配的 `FLOW:*`;仅三者唯一且一致时可直接复用。标记缺失、冲突或结构无法证明时仍执行本命令。所有状态标记只用于分支判断,禁止对客。
37
35
 
38
36
  ### 状态判断规则
39
37
 
@@ -47,35 +45,35 @@
47
45
 
48
46
  ### 判断逻辑
49
47
 
50
- `scripts/query_sign_status.sh` 自动完成以下状态判断并输出状态信号(`SIGN_STATUS=...`)与分支信号(`FLOW:PC_WEB_NOT_SIGNED` 等)。`SIGNED_EFFECTIVE` 与 `SIGN_SUBMITTED` 的后续 FLOW 保持一致,均不重复提交签约,继续应用发布/服务注册。
48
+ `scripts/query_sign_status.sh` 自动完成以下状态判断,并输出带 `ALIPAY_AIPAY_INTERNAL:` 前缀的状态信号(`SIGN_STATUS=...`)与分支信号(`FLOW:PC_WEB_NOT_SIGNED` 等);成功时 stdout 为空,Agent 直接转移,不补写话术。`SIGNED_EFFECTIVE` 与 `SIGN_SUBMITTED` 的后续 FLOW 保持一致,均不重复提交签约,继续应用发布/服务注册。
51
49
 
52
50
  ### 产品×状态分支处理表
53
51
 
54
52
  | 签约状态 | 产品类型 | FLOW 信号 | 后续流程 |
55
53
  |----------|----------|-----------|----------|
56
- | `NOT_SIGNED` | 网站支付 | `FLOW:PC_WEB_NOT_SIGNED` | 进入 Step 4 一次性资料与资源决策(3张网站截图 + 应用决策/条件资料)→ Step 5 签约 + 应用发布 |
57
- | `NOT_SIGNED` | APP支付 | `FLOW:APP_NOT_SIGNED` | 进入 Step 4 一次性资料与资源决策(APP名称 + 3张APP界面截图 + 应用决策/条件资料)→ Step 5 签约 + 应用发布 |
58
- | `NOT_SIGNED` | 按量付费 | `FLOW:AI_PAY_NOT_SIGNED` | Step 4 无需收集页面图片,但一次完成服务/应用决策和条件资料;再进入 Step 5.1 签约 |
54
+ | `NOT_SIGNED` | 网站支付 | `FLOW:PC_WEB_NOT_SIGNED` | 签约类别收集3张网站截图;应用类别按自身候选独立决策,两个分支分别推进 |
55
+ | `NOT_SIGNED` | APP 支付 | `FLOW:APP_NOT_SIGNED` | 签约类别收集 APP 名称和 3 张 APP 界面截图;应用类别按自身候选独立决策,两个分支分别推进 |
56
+ | `NOT_SIGNED` | 按量付费 | `FLOW:AI_PAY_NOT_SIGNED` | 签约无需页面图片;签约、服务和应用分别满足自身条件后独立推进 |
59
57
  | `SIGNED_EFFECTIVE` | 网站支付 | `FLOW:PC_WEB_SIGNED` | Step 4 完成应用决策后,跳过签约提交并执行应用发布 |
60
- | `SIGNED_EFFECTIVE` | APP支付 | `FLOW:APP_SIGNED` | Step 4 完成应用决策后,跳过签约提交并执行应用发布 |
58
+ | `SIGNED_EFFECTIVE` | APP 支付 | `FLOW:APP_SIGNED` | Step 4 完成应用决策后,跳过签约提交并执行应用发布 |
61
59
  | `SIGNED_EFFECTIVE` | 按量付费 | `FLOW:AI_PAY_SIGNED` | Step 4 完成服务/应用决策后,跳过签约提交并执行服务注册 + 应用发布 |
62
60
  | `SIGN_SUBMITTED` | 网站支付 | `FLOW:PC_WEB_SIGNED` | Step 4 完成应用决策后,跳过重复签约提交并执行应用发布 |
63
- | `SIGN_SUBMITTED` | APP支付 | `FLOW:APP_SIGNED` | Step 4 完成应用决策后,跳过重复签约提交并执行应用发布 |
61
+ | `SIGN_SUBMITTED` | APP 支付 | `FLOW:APP_SIGNED` | Step 4 完成应用决策后,跳过重复签约提交并执行应用发布 |
64
62
  | `SIGN_SUBMITTED` | 按量付费 | `FLOW:AI_PAY_SIGNED` | Step 4 完成服务/应用决策后,跳过重复签约提交并执行服务注册 + 应用发布 |
65
63
 
66
64
  **⚠️ 按量付费无需签约材料:**
67
65
  ```
68
- ✅ 网站支付未签约:需先采集 3 张网站截图,再进入 Step 5 签约
69
- ✅ APP支付未签约:需先采集 APP 名称和 3 张APP界面截图,再进入 Step 5 签约
70
- ✅ 按量付费 未签约:Step 4 无需签约页面图片,但前置完成服务/应用决策和条件资料;Step 5 仍先提交签约
71
- ✅ 按量付费在 Step 4 基于已查询的服务候选,一次收集新建/修改分支的完整五项服务资料;Step 5.2 才执行写操作
66
+ ✅ 网站支付未签约:签约类别一次收集 3 张网站截图
67
+ ✅ APP 支付未签约:签约类别一次收集 APP 名称和 3 张 APP 界面截图
68
+ ✅ 按量付费未签约:签约分支无需页面图片,不阻塞服务/应用分支的独立准备和执行
69
+ ✅ 按量付费在服务类别基于已查询候选,一次收集新建/修改分支的完整五项服务资料;Step 5.2 才执行写操作
72
70
  ```
73
71
 
74
- **按量付费签约后的必要后续动作:**
72
+ **按量付费完整产品开通的独立分支:**
75
73
  ```
76
74
  ✅ 未签约且提交成功:继续服务市场注册 + 应用发布
77
75
  ✅ 已签约:跳过签约提交,继续服务市场注册 + 应用发布
78
- ❌ 禁止:只完成产品签约就宣称按量付费入驻完成
76
+ ❌ 禁止:只完成产品签约就宣称按量付费产品开通完成
79
77
  ❌ 禁止:已签约状态下重复提交签约申请
80
78
  ```
81
79
 
@@ -85,7 +83,7 @@
85
83
 
86
84
  ## 签约提交
87
85
 
88
- **执行 `scripts/ar_sign_apply.sh` 提交签约申请。脚本通过 `error_handler.sh` 间接初始化 `DEV_TOOL_NAME`;产品码和类目编码优先通过 `--sales-code`、`--mcc-code` 显式传入。**
86
+ **执行 `scripts/ar_sign_apply.sh` 提交签约申请。脚本通过 `error_handler.sh` 间接初始化 `DEV_TOOL_NAME`、`PLATFORM` 和当前 `run_id` 对应的 `PLATFORM_ID`;产品码和类目编码优先通过 `--sales-code`、`--mcc-code` 显式传入。签约状态为 `NOT_SIGNED` 且当前产品全部签约材料完整并校验通过后直接执行,不再增加回复 `1`;材料缺失或校验失败时继续使用 flow 登记的材料提示并禁止提交。**
89
87
 
90
88
  ```bash
91
89
  # 按量付费
@@ -94,20 +92,13 @@ bash scripts/ar_sign_apply.sh --product aipay --sales-code "I1080300001000160457
94
92
  # 网站支付
95
93
  bash scripts/ar_sign_apply.sh --product webpay --sales-code "I1080300001000041203" --mcc-code "<mccCode>" --picurl1 <imageRef1> --picurl2 <imageRef2> --picurl3 <imageRef3>
96
94
 
97
- # APP支付
95
+ # APP 支付
98
96
  bash scripts/ar_sign_apply.sh --product apppay --sales-code "I1080300001000041313" --mcc-code "<mccCode>" --app-name "<APP名称>" --picurl1 <imageRef1> --picurl2 <imageRef2> --picurl3 <imageRef3>
99
97
  ```
100
98
 
101
- ### 与动态表单签约流程的边界
99
+ ### 静态签约契约边界
102
100
 
103
- | 项目 | 当前 onboarding 签约 | 动态表单签约流程 |
104
- |------|----------------------|------------------------|
105
- | 调用模式 | 外部直调 `ar-sign.apply` | 默认先 `previewFormView`,再按动态 schema 收集并 apply |
106
- | 字段来源 | 本文档静态定义的三类产品字段 | `previewFormView` 返回的 `artisanPage` schema |
107
- | 覆盖产品 | 按量付费、网站支付、APP支付 | 由产品推荐和 schema 决定 |
108
- | 风险边界 | 后端新增/调整字段时,需同步更新本文档和脚本 | schema 变化会在 preview 流程中动态体现 |
109
-
110
- > 如果后端签约字段发生变化,或当前静态字段提交被 `checkedError` 拒绝,应以 `previewFormView` 返回 schema 为准补齐字段,禁止在本模块中凭经验新增未确认字段。
101
+ 当前 onboarding 只使用下方三个产品的固定字段和 `scripts/ar_sign_apply.sh` 已验证的提交结构。后端字段变化、字段校验失败或当前脚本无法处理时,必须停止受影响的签约分支并如实说明,不得凭经验增加字段、改写 payload 或尝试当前脚本未使用的方法。维护者取得实际返回或官方资料后,必须同步更新脚本、本文档、flow 和契约测试,才能恢复该分支。
111
102
 
112
103
  ### 网站支付签约 JSON(有截图)
113
104
 
@@ -134,7 +125,7 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
134
125
  }
135
126
  ```
136
127
 
137
- ### APP支付签约 JSON(有 APP 名称和截图)
128
+ ### APP 支付签约 JSON(有 APP 名称和截图)
138
129
 
139
130
  ```json
140
131
  {
@@ -159,7 +150,7 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
159
150
  }
160
151
  ```
161
152
 
162
- > APP支付本次固定按 `appStatus=OFFLINE` 提交,不传 `appDownloadUrl`。
153
+ > APP 支付本次固定按 `appStatus=OFFLINE` 提交,不传 `appDownloadUrl`。
163
154
 
164
155
  ### 按量付费签约 JSON(无截图)
165
156
 
@@ -185,12 +176,12 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
185
176
  | 变量 | 来源 | 说明 |
186
177
  |------|------|------|
187
178
  | `bizRequestNo` | 主技能生成 | UUID,每次签约提交前通过 `python3 -c "import uuid; print(uuid.uuid4())"` 生成,**禁止省略** |
188
- | `mccCode` | Step 2 方案规划 | 运行时变量,格式 `Axxxx_Bxxxx`,不持久化到状态文件 |
179
+ | `mccCode` | Step 2 方案规划 | 运行时变量,格式 `Axxxx_Bxxxx` |
189
180
  | `channelCode` | 固定值 | `"B_SK_SH_RPC"` |
190
181
  | `orderType` | 固定值 | `"NEW_SIGN"` |
191
- | `screenshot` | Step 4 一次性资料与资源决策 | **仅未签约的网站支付/APP支付需要**(3个上传后的图片引用值),按量付费无需此项 |
192
- | `appName` | Step 4 一次性资料与资源决策 | **仅未签约的 APP支付需要**;脚本参数仍为 `--app-name`,提交到 MCP 时映射为 `nativeAppDTO.name` |
193
- | `appStatus` | 固定值 | **仅APP支付需要**,本次固定为 `OFFLINE` |
182
+ | `screenshot` | Step 4 签约材料类别 | **仅未签约的网站支付/APP 支付需要**(3个上传后的图片引用值),按量付费无需此项 |
183
+ | `appName` | Step 4 签约材料类别 | **仅未签约的 APP 支付需要**;脚本参数仍为 `--app-name`,提交到 MCP 时映射为 `nativeAppDTO.name` |
184
+ | `appStatus` | 固定值 | **仅 APP 支付需要**,本次固定为 `OFFLINE` |
194
185
 
195
186
  ### 按量付费接入产物映射
196
187
 
@@ -206,15 +197,17 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
206
197
  ### ⛔ 截图字段规则
207
198
 
208
199
  ```
209
- ✅ 网站支付未签约 → 需要 3 张网站截图(首页、商品页、支付页)
210
- ✅ APP支付未签约 → 需要 APP 名称和 3 张APP界面截图(首页、商品页、支付页),签约状态固定按 OFFLINE 提交
200
+ ✅ 网站支付未签约 → 需要 3 张网站截图(首页、商品页、支付页;支付页是展示支付宝付款方式,等待用户去支付的页面)
201
+ ✅ APP 支付未签约 → 需要 APP 名称和 3 张 APP 界面截图(首页、商品页、支付页;支付页是展示支付宝付款方式,等待用户去支付的页面),签约状态固定按 OFFLINE 提交
211
202
  ✅ 按量付费 未签约 → 无需截图,直接签约
212
- ✅ 网站支付/APP支付缺少支付页或支付能力 → 不提交签约;先进入/回到集成流程完成实现,再回来上传图片
213
- ✅ 网站支付/APP支付页面和支付能力已存在、仅缺三张页面图片 → 保留在 onboarding Step 4 收集和上传,不进入集成流程
203
+ ✅ 网站支付/APP 支付缺少支付页或支付能力 → 不提交签约;签约分支保持待用户准备页面和截图,不自动切换流程
204
+ ✅ `onboarding_only` 中途发现缺少截图或支付页 → 只收口为签约材料待补充,并提醒仍需代码开发;不得修改项目、进入代码开发或声称签约失败
205
+ ✅ `full_process` 中途仍发现缺少支付页或支付能力 → 停止签约提交,回到本轮代码开发实际缺口;不得用产品开通流程补齐代码能力
206
+ ✅ 网站支付/APP 支付页面和支付能力已存在、仅缺三张页面图片 → 保留在 onboarding Step 4 收集和上传,不进入集成流程
214
207
  ❌ 禁止:按量付费 签约时传入 screenshot 字段
215
- ❌ 禁止:网站支付/APP支付 签约时省略 screenshot 字段
208
+ ❌ 禁止:网站支付/APP 支付签约时省略 screenshot 字段
216
209
  ❌ 禁止:将“支付页”自行改口为“支付成功页”或要求用户提供文档未定义的页面
217
- ❌ 禁止:APP支付签约 MCP payload 中使用 webAppDTO、appDTO、appName、appType、placeType=APP、placeType=ONLINE_WEBAPP、placeType=ONLINE_NATIVEAPP 或 appType=PC_WEB
210
+ ❌ 禁止:APP 支付签约 MCP payload 中使用 webAppDTO、appDTO、appName、appType、placeType=APP、placeType=ONLINE_WEBAPP、placeType=ONLINE_NATIVEAPP 或 appType=PC_WEB
218
211
  ```
219
212
 
220
213
  ### 截图字段规则
@@ -227,9 +220,9 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
227
220
 
228
221
  ## 签约提交后非阻塞推进
229
222
 
230
- > ⚠️ **签约提交成功后,无需等待签约审核通过,应立即继续推进后续步骤。**
223
+ > ⚠️ **签约提交成功后无需等待或轮询审核;服务和应用分支按各自条件独立推进。**
231
224
 
232
- 签约申请提交后,后端会异步审核,`arStatus` 为 `"01"`(已提交待生效)。应用创建和服务注册不依赖签约审核通过,可以继续推进。为减少用户交互,应用/服务列表查询及分支资料采集可在签约提交前完成;当前流程仍先提交签约,成功后才执行服务或应用写操作。
225
+ 签约申请提交后,后端会异步审核,`arStatus` 为 `"01"`(已提交待生效)。应用创建和服务注册不依赖签约提交动作或签约审核结果;登录、scope、MCC 以及各分支自己的查询、材料、资源决策和适用确认满足后即可推进。调度器可以按 5.1、5.2、5.3 顺序调用,也可以并发,但不得把调用顺序描述成跨分支业务依赖。
233
226
 
234
227
  ### FLOW 信号
235
228
 
@@ -239,14 +232,15 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
239
232
  |-----------|----------|----------|
240
233
  | `FLOW:AI_PAY_SIGN_CONTINUE` | 按量付费 | 立即继续 5.2 服务注册 + 5.3 应用发布 |
241
234
  | `FLOW:PC_WEB_SIGN_CONTINUE` | 网站支付 | 立即继续 5.3 应用发布 |
242
- | `FLOW:APP_SIGN_CONTINUE` | APP支付 | 立即继续 5.3 应用发布 |
235
+ | `FLOW:APP_SIGN_CONTINUE` | APP 支付 | 立即继续 5.3 应用发布 |
243
236
 
244
237
  ### 处理原则
245
238
 
246
239
  ```
247
- ✅ 签约提交成功 → 立即推进 5.2/5.3,无需等待签约审核
248
- ✅ 按量付费:5.1 签约 → 5.2 服务注册 → 5.3 应用发布(串行推进)
249
- ✅ 网站支付/APP支付:5.1 签约 → 5.3 应用发布(串行推进)
240
+ ✅ 签约提交成功 → 记录待生效,不轮询签约审核
241
+ ✅ 按量付费:签约、服务、应用按分支条件独立推进和记录结果
242
+ ✅ 网站支付/APP 支付:签约与应用按分支条件独立推进和记录结果
243
+ ✅ 任一分支失败不回滚或清除其他分支成功结果
250
244
  ❌ 禁止:签约提交后停住,等待签约审核通过再继续
251
245
  ❌ 禁止:轮询签约状态直到 arStatus变为"02"再继续
252
246
  ```
@@ -255,23 +249,25 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
255
249
 
256
250
  ## 签约输出规范
257
251
 
258
- ### 签约信息(含费率免责声明)
259
-
260
- 当签约信息包含费率时,**必须附加免责声明**:
252
+ 签约查询或提交的对客结果固定使用 `../../normal/json/customer-messages.json` 的 `signing.operation.result`,只传实际状态、实际下一步以及接口确实返回的费率。接口返回费率时使用 `WITH_FEE` 变体,模板会在费率后紧跟固定账单免责声明;没有费率字段时使用 `WITHOUT_FEE`,禁止编造费率或自行补写另一份免责声明。必须执行:
261
253
 
262
- ```markdown
263
- 📋 签约信息:
264
- • 签约状态:[状态]
265
- • 费率:[费率值]
266
-
267
- > 由于支付宝可能会有阶段性的优惠活动,实际费率可能低于该页面费率,具体以相应费用账单为准。
254
+ ```bash
255
+ MESSAGE_INPUT_JSON=$(jq -cn \
256
+ --arg actualStatus "$ACTUAL_STATUS" \
257
+ --arg feeDisplay "$FEE_DISPLAY" \
258
+ --arg nextAction "$NEXT_ACTION" \
259
+ '{actualStatus:$actualStatus,feeDisplay:$feeDisplay,nextAction:$nextAction}')
260
+ printf '%s' "$MESSAGE_INPUT_JSON" \
261
+ | node ../../normal/scripts/render_customer_message.mjs signing.operation.result --variant WITH_FEE
262
+ MESSAGE_INPUT_JSON=$(jq -cn \
263
+ --arg actualStatus "$ACTUAL_STATUS" \
264
+ --arg nextAction "$NEXT_ACTION" \
265
+ '{actualStatus:$actualStatus,nextAction:$nextAction}')
266
+ printf '%s' "$MESSAGE_INPUT_JSON" \
267
+ | node ../../normal/scripts/render_customer_message.mjs signing.operation.result --variant WITHOUT_FEE
268
268
  ```
269
269
 
270
- **费率免责声明规则:**
271
- - ✅ 必须:在展示费率信息的同一区域,紧随费率信息之后添加免责声明
272
- - ✅ 必须:免责声明使用引用块格式(`>` 开头)突出显示
273
- - ❌ 禁止:单独展示费率信息而不附加免责声明
274
- - ℹ️ 如果签约信息中不包含费率字段,则无需添加免责声明
270
+ 待生效、失败或未知状态不得改写成签约已生效,也不得覆盖服务或应用分支的结果。
275
271
 
276
272
  ---
277
273
 
@@ -291,7 +287,7 @@ bash scripts/ar_sign_apply.sh --product apppay --sales-code "I108030000100004131
291
287
  | 场景 | 处理方式 |
292
288
  |------|----------|
293
289
  | errorCode 存在 | 展示 errorMessage,如有 bizTips 一并展示 |
294
- | needRetry=true | 告知用户可以重试 |
290
+ | needRetry=true | 仍按业务错误处理;展示实际错误和 bizTips,不自动重试或立即询问“重试/退出”,业务条件修正后再重新执行受影响动作 |
295
291
  | checkedError | 提取校验错误信息,引导用户修正字段 |
296
292
 
297
293
  ### 授权信息不匹配错误