@alipay/alipay-aipay 1.8.0 → 1.8.2

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 (72) hide show
  1. package/package.json +3 -3
  2. package/skill/VERSION +1 -1
  3. package/skill/references/integration/flow.md +21 -15
  4. package/skill/references/integration/modules/checklist.md +10 -8
  5. 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 +1 -1
  6. 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 +1 -1
  7. package/skill/references/integration/modules/code-examples/csharp/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +3 -1
  8. 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 +1 -1
  9. 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 +1 -1
  10. package/skill/references/integration/modules/code-examples/java/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemoController.md +3 -1
  11. 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 +1 -1
  12. 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 +1 -1
  13. package/skill/references/integration/modules/code-examples/nodejs/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +6 -2
  14. 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 +1 -1
  15. 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 +1 -1
  16. package/skill/references/integration/modules/code-examples/php/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +3 -1
  17. 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 +1 -1
  18. 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 +1 -1
  19. package/skill/references/integration/modules/code-examples/python/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +8 -3
  20. package/skill/references/integration/modules/interface-contract/aipay-interface-contract.md +3 -1
  21. package/skill/references/integration/modules/interface-contract/apppay-interface-contract.md +4 -4
  22. package/skill/references/integration/modules/interface-contract/common-trade-contract.md +8 -8
  23. package/skill/references/integration/modules/interface-contract/notify-url-contract.md +12 -11
  24. package/skill/references/integration/modules/interface-contract/webpay-interface-contract.md +3 -3
  25. package/skill/references/integration/modules/interface-guide.md +1 -1
  26. package/skill/references/integration/modules/sandbox/a2m-sandbox-test.md +4 -4
  27. package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +10 -8
  28. package/skill/references/normal/conversation-telemetry.md +1 -1
  29. package/skill/references/normal/integration-worker.md +2 -2
  30. package/skill/references/normal/json/customer-messages.json +1 -1
  31. package/skill/references/normal/json/policy-rules.json +1 -1
  32. package/skill/references/normal/scripts/integration_message_runner.mjs +7 -2
  33. package/skill/references/normal/scripts/onboarding_message_runner.mjs +9 -5
  34. package/skill/references/normal/scripts/render_customer_message.mjs +145 -48
  35. package/skill/references/onboarding/flow.md +12 -6
  36. package/skill/references/runtime-entry.md +3 -1
  37. package/skill-pre/VERSION +1 -1
  38. package/skill-pre/references/integration/flow.md +28 -19
  39. package/skill-pre/references/integration/modules/checklist.md +12 -8
  40. package/skill-pre/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 +1 -1
  41. package/skill-pre/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 +1 -1
  42. package/skill-pre/references/integration/modules/code-examples/csharp/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +3 -1
  43. package/skill-pre/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 +1 -1
  44. package/skill-pre/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 +1 -1
  45. package/skill-pre/references/integration/modules/code-examples/java/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemoController.md +3 -1
  46. package/skill-pre/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 +1 -1
  47. package/skill-pre/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 +1 -1
  48. package/skill-pre/references/integration/modules/code-examples/nodejs/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +6 -2
  49. package/skill-pre/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 +1 -1
  50. package/skill-pre/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 +1 -1
  51. package/skill-pre/references/integration/modules/code-examples/php/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +3 -1
  52. package/skill-pre/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 +1 -1
  53. package/skill-pre/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 +1 -1
  54. package/skill-pre/references/integration/modules/code-examples/python/4-/346/214/211/351/207/217/344/273/230/350/264/271/A2MPaymentDemo.md +8 -3
  55. package/skill-pre/references/integration/modules/interface-contract/aipay-interface-contract.md +3 -1
  56. package/skill-pre/references/integration/modules/interface-contract/apppay-interface-contract.md +4 -4
  57. package/skill-pre/references/integration/modules/interface-contract/common-trade-contract.md +8 -8
  58. package/skill-pre/references/integration/modules/interface-contract/notify-url-contract.md +12 -11
  59. package/skill-pre/references/integration/modules/interface-contract/webpay-interface-contract.md +3 -3
  60. package/skill-pre/references/integration/modules/interface-guide.md +1 -1
  61. package/skill-pre/references/integration/modules/sandbox/a2m-sandbox-test.md +4 -4
  62. package/skill-pre/references/integration/modules/sandbox/sandbox-setup-guide.md +11 -9
  63. package/skill-pre/references/normal/full-process-routing.md +2 -2
  64. package/skill-pre/references/normal/integration-worker.md +2 -2
  65. package/skill-pre/references/normal/json/customer-messages.json +1 -1
  66. package/skill-pre/references/normal/json/policy-rules.json +1 -1
  67. package/skill-pre/references/normal/scripts/integration_message_runner.mjs +7 -2
  68. package/skill-pre/references/normal/scripts/onboarding_message_runner.mjs +9 -5
  69. package/skill-pre/references/normal/scripts/render_customer_message.mjs +150 -48
  70. package/skill-pre/references/normal/windows-environment.md +4 -4
  71. package/skill-pre/references/onboarding/flow.md +12 -6
  72. package/skill-pre/references/runtime-entry.md +5 -3
@@ -4,8 +4,8 @@
4
4
 
5
5
  sourceUrl:
6
6
 
7
- - <https://aipay.alipay.com/docs/ai-web-app-payment-qianyi/api-list/async-notify-verify.md>
8
- - <https://aipay.alipay.com/docs/mobile-app-pay/ai-app-pay/async-notify-verify.md>
7
+ - <https://aipay.alipay.com/docs/vibe-pay/ai-web-app-payment-qianyi/api-list/async-notify-verify.md>
8
+ - <https://aipay.alipay.com/docs/vibe-pay/mobile-app-pay/ai-app-pay/async-notify-verify.md>
9
9
 
10
10
  当前两份官方文档内容一致。运行时默认读取本文和当前语言 `1-通用接口/异步通知处理代码示例.md`;在线文档只在 fallback 条件下读取。
11
11
 
@@ -19,7 +19,7 @@ sourceUrl:
19
19
 
20
20
  `notify_url` 是商家服务端接收支付宝 POST 表单通知的地址,不是前端页面地址,也不是支付宝生成的 URL。
21
21
 
22
- 本地正式验收或本地生产参数验收时,若暂时没有公网 HTTPS 通知地址,可以不传 `notify_url`,但仍必须实现通知处理代码并用交易查询兜底。不要向 SDK 传 `undefined`、`null`、空字符串或占位 URL;没有可用地址时应直接省略该字段或不调用对应 setter。真实生产或公网联调时必须传入可公网访问的 HTTPS `notify_url`,地址不能包含多余字符或发生重定向。
22
+ 通知处理与交易查询接口必须同时实现。`notify_url` 是可选参数;当前商家没有配置该地址时,下单省略该字段并由服务端交易查询兜底,不会仅因缺少该地址而报错。生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 HTTPS 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。 没有可用地址时省略该字段,不向 SDK 传 `undefined`、`null`、空字符串或占位 URL;使用通知时地址不得包含多余字符或发生重定向。
23
23
 
24
24
  ## 必须实现的处理链路
25
25
 
@@ -50,19 +50,20 @@ sourceUrl:
50
50
 
51
51
  ## 验收分层
52
52
 
53
- - 本地正式验收 / 本地生产参数验收模式:允许暂时没有公网 HTTPS `notify_url`,但通知处理代码、验签、业务字段校验、持久化幂等和主动查询兜底必须存在;公网通知联调标记为人工待验证。没有可用通知地址时省略 `notify_url`,不要向 SDK 传 `undefined`、`null`、空字符串或占位 URL。
54
- - 真实生产上线:必须配置公网 HTTPS `notify_url`,完成支付宝服务器可访问联调、验签、关键字段校验、幂等处理、返回 `success` 和补偿查询。
53
+ - 本地开发 / 沙箱集成:通知处理代码、验签、关键字段校验、持久化幂等和主动查询必须实现。仅尚未部署公网通知地址属于上线前方案选择与验证提醒,不计入本轮失败或人工待验证项;实际通知代码缺陷仍须修复。
54
+ - 真实生产上线,使用通知:配置公网 HTTPS `notify_url`,验证支付宝服务器可访问、验签、关键字段校验、幂等处理、返回 `success` 和补偿查询。
55
+ - 真实生产上线,不使用通知:下单省略 `notify_url`,验证服务端主动查单、查询响应验签和订单/金额/状态/归属校验、幂等交付、后台重试和未决订单恢复。不得把浏览器关闭或一次查询未成功当作付款失败。
55
56
 
56
- 没有完成真实生产上线层时,不得表述为生产就绪或正式上线完成。
57
+ 生产配置及所选支付结果确认链路尚未验证时,不得表述为生产就绪或正式上线完成。仅缺少 `notify_url` 不是不能上线的依据。
57
58
 
58
59
  ## 本地示例索引
59
60
 
60
61
  | 语言 | 示例 |
61
62
  | --- | --- |
62
- | Java | `code-examples/java/1-通用接口/异步通知处理代码示例.md` |
63
- | Python | `code-examples/python/1-通用接口/异步通知处理代码示例.md` |
64
- | Node.js | `code-examples/nodejs/1-通用接口/异步通知处理代码示例.md` |
65
- | PHP | `code-examples/php/1-通用接口/异步通知处理代码示例.md` |
66
- | C# | `code-examples/csharp/1-通用接口/异步通知处理代码示例.md` |
63
+ | Java | `../code-examples/java/1-通用接口/异步通知处理代码示例.md` |
64
+ | Python | `../code-examples/python/1-通用接口/异步通知处理代码示例.md` |
65
+ | Node.js | `../code-examples/nodejs/1-通用接口/异步通知处理代码示例.md` |
66
+ | PHP | `../code-examples/php/1-通用接口/异步通知处理代码示例.md` |
67
+ | C# | `../code-examples/csharp/1-通用接口/异步通知处理代码示例.md` |
67
68
 
68
69
  Java 官方示例明确使用 `AlipaySignature.rsaCheckV1`。Node.js 示例给出 `checkNotifySignV2(params)` 的落地形态,但 Agent 落地前必须先读取目标项目 `alipay-sdk` 的 package.json 和类型定义,确认当前版本确实暴露该 API。Python、PHP、C# 示例使用项目内支付宝 SDK 验签适配器表示验签边界;适配器必须封装当前项目实际 SDK API,禁止临时手写不确定的 RSA 验签实现。
@@ -4,8 +4,8 @@
4
4
 
5
5
  sourceUrl:
6
6
 
7
- - <https://aipay.alipay.com/docs/ai-web-app-payment-qianyi/ai-web-app-payment-integration-guide.md>
8
- - <https://aipay.alipay.com/docs/ai-web-app-payment-qianyi/api-list/alipay-trade-page-pay.md>
7
+ - <https://aipay.alipay.com/docs/vibe-pay/ai-web-app-payment-qianyi/ai-web-app-payment-integration-guide.md>
8
+ - <https://aipay.alipay.com/docs/vibe-pay/ai-web-app-payment-qianyi/api-list/alipay-trade-page-pay.md>
9
9
 
10
10
  ## 默认范围
11
11
 
@@ -24,7 +24,7 @@ AI 网页应用收款必须覆盖:`alipay.trade.page.pay`、交易查询、退
24
24
  | 字段 | 要求 |
25
25
  | --- | --- |
26
26
  | `method` | 固定 `alipay.trade.page.pay` |
27
- | `notify_url` | 生产或公网联调时传入;本地生产参数验收模式可临时不传,但通知处理代码必须存在 |
27
+ | `notify_url` | 可选,生产也可省略;使用通知时传入商家公网 HTTPS 地址,不使用时由服务端可靠主动查单;通知处理代码仍须实现 |
28
28
  | `return_url` | 用户未明确关闭同步回跳时默认传入,且对应当前项目实际 GET 路由 |
29
29
 
30
30
  业务参数:
@@ -58,4 +58,4 @@ AI 网页应用收款和 AI 移动应用收款必须读取当前语言目录下
58
58
  | 关闭交易 | `./code-examples/<语言>/1-通用接口/统一收单交易关闭接口代码示例.md` |
59
59
  | 异步通知 | `./code-examples/<语言>/1-通用接口/异步通知处理代码示例.md` |
60
60
 
61
- 本地未上线时,可按 `../flow.md` 的“本地生产参数验收模式”先完成本地结果确认链路验证;正式上线前仍必须补齐公网 HTTPS `notify_url`、验签、幂等、关键字段校验、`success` 回写和补偿查询。用户明确要求对账时再读取官方对账单下载文档作为 fallback;当前默认 checklist 不包含对账单下载。
61
+ 本地未上线时,可按 `../flow.md` 的“本地生产参数验收模式”先完成本地结果确认链路验证;生产可选择异步通知加补偿查询,或省略 `notify_url` 并由服务端可靠主动查单;通知处理代码仍须实现。上线前按所选链路验证验签、订单与金额及状态归属校验、持久化幂等、重试和未决订单恢复;仅没有公网通知地址不判为失败。用户明确要求对账时再读取官方对账单下载文档作为 fallback;当前默认 checklist 不包含对账单下载。
@@ -123,7 +123,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE
123
123
  8. 生成浏览器付款链接
124
124
  9. 使用同一过程产物构建 Payment-Proof 并重试原始服务
125
125
  10. 仅在 HTTP 200、非空且可归属的资源、无明确业务失败,并且当前示例要求的 `Payment-Validation` 校验通过时输出服务端联调成功
126
- 11. 命令结束前清理敏感过程产物;失败后重新执行完整联调,不保存跨轮恢复状态
126
+ 11. 命令结束前清理敏感过程产物,不保存跨轮恢复状态;失败或中断后必须重新按执行 guard 判定,不得直接重跑
127
127
 
128
128
  **脚本输出**:
129
129
  - Payment-Needed 获取结果(终端不输出原始值)
@@ -134,7 +134,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE
134
134
  - Payment-Proof 重试后的服务响应与测试结论;`Payment-Validation` 原始值不在终端输出
135
135
 
136
136
  **错误处理**:
137
- - 沙箱化 Agent 环境执行本脚本时,首次执行即申请可联网权限;如果已因网络受限失败,复用同一条命令申请可联网权限重试
137
+ - 沙箱化 Agent 环境执行本脚本时,首次执行即申请可联网权限;权限恢复只允许原样重试可确认尚未发出的命令。命令可能已发出时仍按执行 guard 处理,不以网络恢复为由重放结果未知的请求
138
138
  - 如果未找到 `Payment-Needed` 响应头,确认服务端是否实现了 402 协议
139
139
  - 如果收银接口返回 `PARAM_INVALID: protocol.sellerSignature不能为空`,回到预检步骤检查 `protocol.seller_signature` 是否为空、缺失或仍是占位符
140
140
  - 如果 `pay_before` 相关参数报错,检查是否使用 ISO 8601 带时区格式
@@ -142,7 +142,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE
142
142
 
143
143
  ### 第三步:连续验证 Payment-Proof 重试
144
144
 
145
- 标准流程只使用第二步命令中的 `--auto-complete`。脚本生成付款链接后,在同一次进程内继续构建 Payment-Proof、重试原始服务并输出结果;进程中断后重新执行完整联调。
145
+ 标准流程只使用第二步命令中的 `--auto-complete`。脚本生成付款链接后,在同一次进程内继续构建 Payment-Proof、重试原始服务并输出结果;进程中断后按执行 guard 处理,结果未知时不得自动重新执行完整联调。
146
146
 
147
147
  **脚本执行步骤**:
148
148
  1. 读取过程产物目录中的 `state.json`
@@ -154,7 +154,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" a2m run --url "$SERVICE
154
154
  **Payment-Proof 处理约束**:
155
155
  - `trade_no` 必须使用前面沙箱收银接口返回并写入 `state.json` 的交易号;不得改用商户侧 `out_trade_no` 或重新生成。
156
156
  - `payment_proof`、`client_session` 和最终请求头由脚本按沙箱联调约定自动处理;Agent 不得手工拼接、改写或向用户展开其原始值和内部处理规则。
157
- - 进程中断后只能在确认上次命令未取得可用过程产物时重新执行完整 `run --auto-complete` 联调,不复用旧过程产物;明确业务失败、服务实现失败或脚本已输出失败结论时,禁止立即重复执行同一联调命令刷远程动作,必须先处理失败原因。
157
+ - 进程中断后,不得以过程产物缺失或已清理推定请求未发出;`UNKNOWN_PREVIOUS_EXECUTION` 固定记录结果未知,禁止自动重跑。明确业务失败、服务实现失败或脚本已输出失败结论时,禁止立即重复执行同一联调命令;输入未变化时按 `BLOCK_UNCHANGED` 停止;只有代码、配置、URL、方法或 POST body 实际变化且 guard 返回新 `RUN` 时,才允许重新发起完整联调,禁止复用旧过程产物。
158
158
 
159
159
  Payment-Proof 参考结构:
160
160
 
@@ -14,7 +14,7 @@
14
14
  ### 1.2 Windows 用户注意事项
15
15
  **快速沙箱 CLI 工具暂不支持 Windows 系统**。
16
16
 
17
- Windows 普通代码开发或完整接入请求未明确要求当前配置沙箱时,记录 `sandboxConfigState=VERIFY_PENDING` 并继续代码实现,不展示资料收集消息。只有用户明确要求现在配置或恢复 Windows 沙箱时,才使用 `../../../normal/json/customer-messages.json` 的既有 `sandbox.windows.manual_setup`,引导用户前往支付宝 AI 付站点的“选择产品 → 一站式接入 → 技术集成”页面获取当前沙箱的 APPID、公私钥和账号信息;随后只处理用户针对本轮该消息提供的资料,完整时校验并写入目标项目实际使用的本地敏感配置,部分或错误时只补问对应字段。不得要求用户自行配置、理解 `sandbox_config.sh`、执行 Bash 或手工拼接 Skill 的规范化 JSON。该资料输入例外只适用于沙箱,生产环境应用私钥和密码禁止提供给 Agent;Agent 不得在回复、摘要或普通日志中复述收到的值。
17
+ Windows 普通代码开发或完整接入请求未明确要求当前配置沙箱时,记录 `sandboxConfigState=VERIFY_PENDING` 并继续代码实现,不展示资料收集消息。只有用户明确要求现在配置或恢复 Windows 沙箱时,才使用 `../../../normal/json/customer-messages.json` 的既有 `sandbox.windows.manual_setup`,引导用户前往支付宝 AI 付站点的“选择产品 → 一站式接入 → 技术集成”页面获取当前沙箱的 APPID、公私钥和账号信息;随后只处理用户针对本轮该消息提供的资料,完整时校验并写入目标项目实际使用的本地敏感配置,部分或错误时只补问对应字段。不得要求用户自行配置、理解 `sandbox_config.sh`、执行 Bash 或手工拼接 Skill 的规范化 JSON。该资料输入例外只适用于沙箱,生产环境应用私钥和密码禁止提供给 Agent;除网页收款在登记摘要中展示已校验沙箱买家账号及两个密码外,Agent 不得在回复、摘要或普通日志中复述收到的值。
18
18
 
19
19
  ```bash
20
20
  node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-setup --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
@@ -67,7 +67,7 @@ Windows 手工沙箱:
67
67
  2. 用户明确要求配置且尚未提供资料时,才使用标准消息一次收集当前沙箱应用的 APPID、支付宝公钥、应用公钥、与已确认语言匹配的应用私钥和沙箱账号信息;缺失或校验失败时只补问对应字段。
68
68
  3. 按第 4 节校验资料,随后由 Agent 写入目标项目实际使用的本地敏感配置;不要求采用快速沙箱 `data` 的嵌套结构,不把值复制到源码或普通日志。
69
69
  4. 检查敏感配置未被 Git 跟踪,并已有适用于实际路径的版本控制忽略保护;能检查 Windows 文件访问控制时确认仅当前用户可访问,不能取得证据时标记为人工待验证。
70
- 5. 只有 `READY` 时才输出第 5 节规定的摘要和 Windows 提醒并从实际本机配置映射到 SDK;Agent 不得在回复或摘要中复述用户提供的沙箱密钥和密码,生产环境应用私钥和密码禁止提供给 Agent。
70
+ 5. 只有 `READY` 时才输出第 5 节规定的摘要和 Windows 提醒并从实际本机配置映射到 SDK;仅网页收款登记摘要可展示已校验沙箱买家密码,其他沙箱密钥和密码不得在回复或摘要中复述,生产环境应用私钥和密码禁止提供给 Agent。
71
71
 
72
72
  Unix/macOS/Linux 快速沙箱的流程准备必须使用 integration flow 登记的 `sandbox_config.sh ensure` 入口:配置缺失时脚本内部创建,已存在时脚本内部复核;步骤 3 仅在首次准备为 `READY` 时执行 `reverify`,待配置时直接继续代码开发;代码开发完成且配置仍为 `READY` 后才使用 `summary` 展示摘要。`ensure|reverify` 会把既定重试耗尽转换为受控 `CREATE_PENDING|VERIFY_PENDING`,直接渲染统一消息并返回终态标记;Agent 不得直接选择创建分支、重复检查文件存在性或权限、读取字段结构、拼接沙箱 JSON、另写解析逻辑或自制摘要表。Windows 手工申领分支检查目标项目实际读取的本地配置,不把平台字段擅自改造成快速沙箱返回结构。
73
73
 
@@ -141,9 +141,11 @@ Unix/macOS/Linux 创建阶段把实际本机配置路径和 `FLOW:SANDBOX_CONFIG
141
141
  node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" integration-message windows-sandbox-summary --product-name "$PRODUCT_NAME" --config-path "$CONFIG_PATH" --environment-rows "$ENVIRONMENT_ROWS" --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"
142
142
  ```
143
143
 
144
- `environmentRows` 的具体值严禁编造、猜测、补全,禁止使用示例值、占位值或历史对话值替代本轮已校验配置。Unix/macOS/Linux 必须由登记脚本直接读取同一配置并生成四行,Agent 不得手填或改写;Windows 的应用 ID 和买家测试账号必须取自步骤 1/3 已校验的同一本机配置,两个密码行的固定保存提示仅在实际确认密码已写入该文件后使用。任一必需字段缺失、为空、配置无法读取或来源无法确认时,停止摘要展示并按既有配置失败分支处理,禁止为凑齐四行补值。
144
+ `environmentRows` 的具体值严禁编造、猜测、补全,禁止使用示例值、占位值或历史对话值替代本轮已校验配置。Unix/macOS/Linux 必须由登记脚本直接读取同一配置并生成四行,Agent 不得手填或改写;Windows 字段须来自步骤 1/3 已校验的同一本机配置;网页收款使用已校验沙箱买家密码明文,其他产品两个密码行仅在确认写入文件后使用固定保存提示。任一必需字段缺失、为空、配置无法读取或来源无法确认时,停止摘要展示并按既有配置失败分支处理,禁止为凑齐四行补值。
145
145
 
146
- 摘要动态行固定依次为“沙箱支付宝应用ID(appID)”“沙箱买家测试账号”“沙箱买家登录密码”“沙箱买家支付密码”。Unix/macOS/Linux 分别从已校验配置的 `appIds[0].appId`、`sandboxAccounts.user.email`、`sandboxAccounts.user.logonPassword`、`sandboxAccounts.user.payPassword` 取值;不追加 pid、商家或买家 userId、sandboxId。只有 Unix/macOS/Linux 快速沙箱工具实际返回且已校验的沙箱登录密码和支付密码可以进入摘要行;Windows 前两行使用实际沙箱应用 ID 和买家登录账号,两个密码行只展示“已写入本地配置文件,默认不在对话中展开”,不得传入密码原文。两类例外都不得扩展到生产环境账号、私钥或密码。
146
+ 摘要动态行固定依次为“沙箱支付宝应用ID(appID)”“沙箱买家测试账号”“沙箱买家登录密码”“沙箱买家支付密码”。Unix/macOS/Linux 分别从已校验配置的 `appIds[0].appId`、`sandboxAccounts.user.email`、`sandboxAccounts.user.logonPassword`、`sandboxAccounts.user.payPassword` 取值;不追加 pid、商家或买家 userId、sandboxId。Unix/macOS/Linux 快速沙箱工具实际返回且已校验的沙箱登录密码和支付密码可以进入摘要行;Windows 网页收款同样展示已校验的沙箱买家密码明文,其他产品前两行使用实际沙箱应用 ID 和买家登录账号,两个密码行只展示“已写入本地配置文件,默认不在对话中展开”,不得传入密码原文。两类例外都不得扩展到生产环境账号、私钥或密码。
147
+
148
+ 上述为开发阶段摘要;最终 summary 仅网页收款保留【沙箱测试配置】,只输出沙箱买家测试账号、登录密码及支付密码三项,两个密码明文展示(含 Windows),不展示配置路径、appId 或密钥行;按量付费与 APP 支付不展示该区块。
147
149
 
148
150
  renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置不等于测试通过”的边界。禁止另写字段核对表、独立校验结论,或把表名、前后提示改成“沙箱环境校验通过”“沙箱测试通过”“沙箱环境测试通过”。
149
151
 
@@ -159,10 +161,10 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
159
161
  |---|---|---|
160
162
  | Unix/macOS/Linux 快速沙箱摘要 | `sandbox_config.sh summary` 实际渲染的应用 `appId`、买家 `email/logonPassword/payPassword`、配置文件目录 | `appPrivateKey`、`appPrivatePkcsKey`、`alipayPublicKey`、`appPublicKey`、原始 `.alipay-sandbox.json`、完整 MCP 响应 |
161
163
  | Unix/macOS/Linux 网站支付付款体验 | 已校验的沙箱买家登录账号、登录密码、支付密码,以及实际支付页面地址和启动命令 | 商家密码、任何公钥/私钥原文、完整支付表单、签名串 |
162
- | Windows 手工沙箱 | 配置文件目录、实际沙箱应用 ID 和买家登录账号、两个密码的本机保存提示、官方控制台获取与本机配置完成提示 | 用户提供的应用私钥、支付宝公钥、应用公钥、沙箱账号密码原文 |
164
+ | Windows 手工沙箱 | 配置文件目录、实际沙箱应用 ID 和买家登录账号;网页收款登记摘要可展示已校验买家密码,其他产品只显示两个密码的本机保存提示 | 应用私钥、支付宝公钥、应用公钥;非网页收款摘要中的沙箱密码原文 |
163
165
  | 按量付费自动联调 | 受控结论、付款链接和沙箱买家可选体验入口 | `Payment-Proof`、`Payment-Validation` 原文、完整收银请求、临时产物路径中的敏感内容 |
164
166
 
165
- 只有 `sandboxCredential` 类型变量可以承载快速沙箱买家登录密码和支付密码;该例外不适用于生产账号、生产密码、应用私钥、公钥、token、签名串或 Payment-Proof。
167
+ 仅登记的 `sandboxCredential`、沙箱摘要表格及其受控最终摘要变量可以承载已校验沙箱买家登录密码和支付密码;该例外不适用于生产账号、生产密码、应用私钥、公钥、token、签名串或 Payment-Proof。
166
168
 
167
169
  ### 5.5 网站支付沙箱付款提示(代码生成后、集成收尾前)
168
170
 
@@ -183,7 +185,7 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
183
185
  - **默认分支**:“付款后确认浏览器自动返回商户结果页,页面可正常展示并通过服务端查询呈现订单状态。”
184
186
  - **关闭分支**:“付款后不会自动返回商户网站;请手动返回商户订单查询页并刷新或查询订单状态。”
185
187
 
186
- 两个分支都必须继续提醒:前台页面或同步回跳参数不是支付成功依据,最终结果以验签通过的异步通知或交易查询结果为准。异步通知只有在 `notify_url` 可被支付宝服务器公网访问时才能联调;当前仅有本地或局域网地址时,将该项标记为人工待验证,并明确当前结论属于“本地正式验收 / 本地生产参数验收模式”,不是生产上线完成。
188
+ 两个分支都必须继续提醒:前台页面或同步回跳参数不是支付成功依据,最终结果以验签通过的异步通知或交易查询结果为准。异步通知只有在 `notify_url` 可被支付宝服务器公网访问时才能联调;当前仅有本地或局域网地址时保留上线前提醒,不单独记为本轮人工待验证。生产可省略 `notify_url`,但必须验证服务端可靠主动查单、持久化幂等及后台重试;当前本地验收不等于生产上线完成。
187
189
 
188
190
  **下载渠道红线:**
189
191
  - 严禁声称 iOS 支持安装沙箱版支付宝。
@@ -200,7 +202,7 @@ renderer 固定输出唯一摘要表、密钥字段已落盘提示和“配置
200
202
  2. 禁止用占位符或示例假数据冒充真实返回值。
201
203
  3. 禁止假设“工具返回的应该都有”而跳过逐项校验。
202
204
  4. 禁止字段不完整时使用当前配置、写入正式 `.alipay-sandbox.json`、执行配置后置校验或沙箱测试;允许继续不读取沙箱字段的代码实现,最终必须标记沙箱配置未完成。
203
- 5. Windows 只允许用户在标准资料收集消息后提供当前沙箱密钥和账号信息,Agent 不得在回复、摘要或日志中复述;Unix/macOS/Linux 只允许按登记消息展示已校验的快速沙箱买家密码。禁止展示生产环境应用私钥、账号密码或把任何密钥长字段整段刷屏输出。
205
+ 5. Windows 只允许用户在标准资料收集消息后提供当前沙箱密钥和账号信息,仅网页收款登记摘要可展示已校验沙箱买家密码,其他原文不得在回复、摘要或日志中复述;Unix/macOS/Linux 只允许按登记消息展示已校验的快速沙箱买家密码。禁止展示生产环境应用私钥、账号密码或把任何密钥长字段整段刷屏输出。
204
206
  6. 禁止继续使用已被 Git 跟踪的沙箱敏感配置。Unix/macOS/Linux 快速沙箱还必须具备 `/.alipay-sandbox.json` 精确忽略规则;Windows 必须具备适用于实际本机敏感配置路径的忽略保护。
205
207
 
206
208
  ### 6.2 快速沙箱重复创建边界
@@ -100,4 +100,4 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" telemetry end-conversat
100
100
 
101
101
  除上述对话上报的超时与后台发送规则外,上传、claim 恢复、补传和队列保留/清理规则沿用 [telemetry.md 的“进度与上传”](telemetry.md#进度与上传)。对话消息先在会话状态中私有保存待确认序号、去重 hash 与事件时间戳,成功入队后再提交正式序号和去重记录;待确认标记不含正文,不代表采集成功。入队失败不推进正式序号、不输出成功回执,目录恢复后可重试同一消息。状态提交失败时尝试清理本次队列记录。异常退出后,下一次采集或后台上传在同一会话锁内核对待确认标记与队列:已入队则恢复原序号及去重,未入队则清除标记;核对或保存失败时停止本次采集/发送,不占用或重复分配序号。后台仍跳过尚未提交且无法恢复的记录。采集成功仅表示本地入队和状态提交成功,不表示已上传。失败时停止继续传入正文,Skill 业务继续运行。
102
102
 
103
- 预发版默认遥测根目录为系统临时目录下 `alipay-aipay-telemetry/pre`,与正式版的 run、outbox、上传状态及采集授权隔离;手动设置目录/文件覆盖变量时须自行按渠道分开,不能指向同一状态位置。阶段与对话队列各自保留最多 1000 条及 7 天;对话数量不挤占阶段配额。后台先处理阶段队列,再发送对话;对话写入/启动/上传失败均不改写阶段上传状态,前台联网补传判定只统计阶段队列。对话入队外壳采用 schema_ver=2,固定采集时的 platform,跨宿主补传不改变 d2;旧 schema_ver=1 外壳仍兼容。
103
+ 正式版默认遥测根目录为系统临时目录下 `alipay-aipay-telemetry`,预发版使用其下的 `pre` 子目录;两渠道的 run、outbox、上传状态及采集授权隔离;手动设置目录/文件覆盖变量时须自行按渠道分开,不能指向同一状态位置。阶段与对话队列各自保留最多 1000 条及 7 天;对话数量不挤占阶段配额。后台先处理阶段队列,再发送对话;对话写入/启动/上传失败均不改写阶段上传状态,前台联网补传判定只统计阶段队列。对话入队外壳采用 schema_ver=2,固定采集时的 platform,跨宿主补传不改变 d2;旧 schema_ver=1 外壳仍兼容。
@@ -56,7 +56,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow integration develo
56
56
 
57
57
  Integration Worker 不执行 Onboarding、self-update、`telemetry start-run`、产品/项目重新决策或原 flow 之外的沙箱调用和诊断。不得用 Worker 自报代替原 flow 要求的实际脚本终态和校验证据。
58
58
 
59
- 遇到阻塞时,先判断是否能在当前授权和工具范围内自行解决;能解决就继续处理并验证,不能解决才返回 STOP。不得将单次失败或尚未定位原因视为无法继续。恢复仍遵守原 flow 的权限、失败分支和重试边界;有新证据或可验证的修复方向时继续,无新进展时停止重复尝试并如实说明,不伪造通过。STOP 的 `remaining_actions` 须简短列明实际错误、已尝试的恢复及所需外部条件;尚未确认的原因明确标为未知,不返回源码、完整日志或敏感值。
59
+ 遇到阻塞时,先判断是否能在当前授权和工具范围内自行解决;能解决就继续处理并验证,不能解决才返回 STOP。不得将单次失败或尚未定位原因视为无法继续。恢复仍遵守原 flow 的权限、失败分支和重试边界;checklist 必须遵守原 flow 的有限修复和定向复检预算,禁止局部修复后全量测试,主 Agent 的核实/继续请求不得重置该预算;有新证据或可验证的修复方向时继续,无新进展时停止重复尝试并如实说明,不伪造通过。STOP 的 `remaining_actions` 须简短列明实际错误、已尝试的恢复及所需外部条件;尚未确认的原因明确标为未知,不返回源码、完整日志或敏感值。
60
60
 
61
61
  原 flow 要求对客送达的登记 runner/script stdout 都要进入交接对象。`integration.start.confirm` 已由主 Agent 在 Worker 转移前按唯一 marker 独立交付;Worker 从步骤 3 开始,以 flow、消息目录和 runner 契约为准收集后续对客 stdout,其中 `sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 必须各自带唯一 `CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>` marker,缺失、重复或对应正文为空时按交接失败处理;按发生顺序剔除 `ALIPAY_AIPAY_INTERNAL:` 行后保存到 `customer_messages`。过程 stdout、分析、命令和日志不得进入交接对象。登记正文不改写、不总结;空正文不加入。沙箱账号只允许存在于原始登记正文中,不得拆出、复述或进入其他字段。返回结果只依据最终 checklist 的实际证据;只有原 flow 允许衔接时 `next_phase=ONBOARDING`,其他情况为 `STOP`。
62
62
 
@@ -83,7 +83,7 @@ Integration Worker 不执行 Onboarding、self-update、`telemetry start-run`、
83
83
  - 沙箱 `READY` 且只剩原 flow 允许的非阻塞人工项:`部分完成,人工待验证`、`ONBOARDING`;
84
84
  - 其他代码、安全、必要依据或协议缺口:`未通过`、`STOP`。
85
85
 
86
- 上述七个字段都由 Integration Worker 根据原 flow 的实际结果生成。`protocol` 必须精确为 `INTEGRATION_WORKER_V1`,返回对象只允许包含这七个字段;telemetry 输入不得回传。`sandbox_config_state` 必须复用输入后按步骤 3 实际复核得到的终态,不接受 `null` 或字符串 `"null"`。`manual_verification_items` 和 `remaining_actions` 只保留最终 checklist 已证实的短项;STOP 时 `remaining_actions` 另保留上文要求的脱敏阻塞事实,没有时传空数组。禁止返回项目路径、语言、框架、changed files、依赖列表、源码、收据、绝对路径、配置字段或 Worker 分析。Agent 对每次返回做结构校验,不自行解释、修复、补充或改写结果;仅允许下文规定的同 Worker 核实。结构合法的 STOP 若缺少阻塞依据,或仍存在授权范围内未尝试的恢复方向,在对客送达前最多要求同一 Worker 核实并继续一次;只指出返回中的证据缺口,不读取项目、不创建新 Worker、不接手 Integration。Worker 从当前实际状态继续,不重做已成功动作,仍按原 flow 修复、重检并返回同一七字段对象。宿主不支持继续同一 Worker,或再次返回 STOP 时,不循环追问,如实保留未解决项。最终结果校验通过后,按数组顺序把 `customer_messages` 每一项原文作为可见消息送达,不加旁白;然后丢弃该数组。`next_phase=ONBOARDING` 时只把产品、`integration_result`、`sandbox_config_state`、`manual_verification_items` 和 `remaining_actions` 带入独立 Onboarding;不读取项目、不复查 Worker、不重跑 Integration。`protocol`、`customer_messages` 和 `next_phase` 不带入 Onboarding。最终 `next_phase=STOP` 时在送达登记正文后停止,不进入 Onboarding。
86
+ 上述七个字段都由 Integration Worker 根据原 flow 的实际结果生成。`protocol` 必须精确为 `INTEGRATION_WORKER_V1`,返回对象只允许包含这七个字段;telemetry 输入不得回传。`sandbox_config_state` 必须复用输入后按步骤 3 实际复核得到的终态,不接受 `null` 或字符串 `"null"`。`manual_verification_items` 和 `remaining_actions` 只保留最终 checklist 已分类的实际缺口和下一步;普通上线提醒与可选沙箱体验不进入这两个字段,不影响 `integration_result`,原样复用最终证据,不在交接或收口重新分类;STOP 时 `remaining_actions` 另保留上文要求的脱敏阻塞事实,没有时传空数组。禁止返回项目路径、语言、框架、changed files、依赖列表、源码、收据、绝对路径、配置字段或 Worker 分析。Agent 对每次返回做结构校验,不自行解释、修复、补充或改写结果;仅允许下文规定的同 Worker 核实。结构合法的 STOP 若缺少阻塞依据,或仍存在授权范围内未尝试的恢复方向,在对客送达前最多要求同一 Worker 核实并继续一次;只指出返回中的证据缺口,不读取项目、不创建新 Worker、不接手 Integration。Worker 从当前实际状态继续,不重做已成功动作,仍按原 flow 修复、重检并返回同一七字段对象。宿主不支持继续同一 Worker,或再次返回 STOP 时,不循环追问,如实保留未解决项。最终结果校验通过后,按数组顺序把 `customer_messages` 每一项原文作为可见消息送达,不加旁白;仅当产品为 AI 网页应用收款、最终沙箱 READY 且配置后置校验通过时,保留其中已交付的 `sandbox.environment.summary` 完整原始正文为当前会话 `SANDBOX_SUMMARY`,用于 Onboarding 最终收口只展示三项买家信息(账号及两个明文密码);按量付费与 APP 支付不保留此变量;不摘取或另存账号、密码和密钥,不重新读项目。其余正文随后丢弃。`next_phase=ONBOARDING` 时只把产品、`integration_result`、`sandbox_config_state`、`manual_verification_items` 和 `remaining_actions` 带入独立 Onboarding;原 `SANDBOX_SUMMARY` 仅作为登记正文传给最终 closeout 的 `--sandbox-summary`,不新增协议字段;不读取项目、不复查 Worker、不重跑 Integration。`protocol`、`customer_messages` 和 `next_phase` 不带入 Onboarding。最终 `next_phase=STOP` 时在送达登记正文后停止,不进入 Onboarding。
87
87
 
88
88
  `next_phase=ONBOARDING` 时,送达登记正文后立即执行 `node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" flow onboarding entry --agent-platform "<AGENT_PLATFORM>" --session-id "<SESSION_ID>"` 并继续流程,不得仅宣布下一步就结束当前轮。
89
89