@alipay/alipay-aipay 1.8.7 → 1.8.8

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 (45) hide show
  1. package/package.json +3 -3
  2. package/skill/VERSION +1 -1
  3. package/skill/references/integration/flow.md +3 -3
  4. package/skill/references/integration/modules/checklist.md +4 -4
  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/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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. package/skill/references/integration/modules/interface-contract/apppay-interface-contract.md +1 -1
  16. package/skill/references/integration/modules/interface-contract/notify-url-contract.md +2 -2
  17. package/skill/references/integration/modules/interface-contract/webpay-interface-contract.md +1 -1
  18. package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +1 -1
  19. package/skill/references/normal/json/customer-messages.json +1 -1
  20. package/skill/references/normal/json/policy-rules.json +1 -1
  21. package/skill/references/normal/scripts/render_customer_message.mjs +15 -20
  22. package/skill/references/onboarding/flow.md +3 -3
  23. package/skill/references/runtime-entry.md +1 -1
  24. package/skill-pre/VERSION +1 -1
  25. package/skill-pre/references/integration/flow.md +3 -3
  26. package/skill-pre/references/integration/modules/checklist.md +4 -4
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. package/skill-pre/references/integration/modules/interface-contract/apppay-interface-contract.md +1 -1
  38. package/skill-pre/references/integration/modules/interface-contract/notify-url-contract.md +2 -2
  39. package/skill-pre/references/integration/modules/interface-contract/webpay-interface-contract.md +1 -1
  40. package/skill-pre/references/integration/modules/sandbox/sandbox-setup-guide.md +1 -1
  41. package/skill-pre/references/normal/json/customer-messages.json +1 -1
  42. package/skill-pre/references/normal/json/policy-rules.json +1 -1
  43. package/skill-pre/references/normal/scripts/render_customer_message.mjs +15 -20
  44. package/skill-pre/references/onboarding/flow.md +3 -3
  45. package/skill-pre/references/runtime-entry.md +1 -1
@@ -534,7 +534,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" onboarding-message appl
534
534
 
535
535
  **完成条件**:当前登录、scope 和 MCC 必须有效;签约必须由实际查询确认为已生效;仅按量付费适用的服务分支必须复用或保存成功并取得实际 `serviceId`;应用必须达到 `ON_LINE`、应用公钥已生效且支付宝公钥已实际导出。存在失败、未知、待生效、待审核或人工配置时不得宣称产品开通完成。不维护人工完成条件数量。
536
536
 
537
- 使用 `../normal/json/customer-messages.json` 的 `process.partial_result` 逐分支收口,必须通过 `onboarding_message_runner.mjs closeout` 托管输出并原文发送 stdout。禁止 Agent 手写短摘要、删减 `productionReadinessBlock`、删减 AI 网页应用收款限制引导或改写后续衔接;AI 网页应用收款收口缺少“【上线前有以下关键点】”和“AI 网页应用收款限制”时视为标准收口未送达,必须重发同一次 stdout。自动重试耗尽、业务错误或查询失败且仍未恢复的动作,保留在分支结果及内部 `remainingActions`,未解决业务分支的必要恢复动作由 `remainingActions` 放入【当前状态】的“下一步”,不能只依赖前序消息;产品开通各分支已完成且仅剩代码人工验证或沙箱待配置时,分别沿用上线关键点或独立恢复口令,不重复内部汇总待办;仅保留本轮尚未解决分支的具体恢复指引,不重复通用上线提醒或已在上线关键点列出的人工验证项。UNKNOWN 仍先核对事实,禁止自动重放写操作,不在收口后追问是否重试。必须执行:
537
+ 使用 `../normal/json/customer-messages.json` 的 `process.partial_result` 逐分支收口,必须通过 `onboarding_message_runner.mjs closeout` 托管输出并原文发送 stdout。禁止 Agent 手写短摘要、删减 `productionReadinessBlock`、删减 AI 网页应用收款限制引导或改写【当前状态】中的代码开发范围提醒;AI 网页应用收款收口缺少“【上线前有以下关键点】”和“AI 网页应用收款限制”时视为标准收口未送达,必须重发同一次 stdout。自动重试耗尽、业务错误或查询失败且仍未恢复的动作,保留在分支结果及内部 `remainingActions`,未解决业务分支的必要恢复动作由 `remainingActions` 放入【当前状态】的“下一步”,不能只依赖前序消息;产品开通各分支已完成且仅剩代码人工验证或沙箱待配置时,分别沿用上线关键点或独立恢复口令,不重复内部汇总待办;仅保留本轮尚未解决分支的具体恢复指引,不重复通用上线提醒或已在上线关键点列出的人工验证项。UNKNOWN 仍先核对事实,禁止自动重放写操作,不在收口后追问是否重试。必须执行:
538
538
 
539
539
  `SIGNING_RESULT`、`SERVICE_RESULT`、`APPLICATION_RESULT` 和 `INTEGRATION_RESULT` 必须使用消息目录允许的状态枚举原文,禁止拼接 `appId`、公钥文件路径、错误码、截图证据或其他自由文本;本轮 `ALIPAY_PUBLIC_KEY_EXPORT_STATUS=EXPORTED` 时,`APP_KEY_SAVE_PATH` 必须传入前一步独立应用结果 runner。这些证据不能污染分支结果枚举。
540
540
 
@@ -546,7 +546,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" onboarding-message clos
546
546
 
547
547
  用户输入计数严格继承 `runtime-entry.md`:active run 内每条聊天框用户消息先执行唯一 `count-user-input --run-id "$RUN_ID" --input-id "$USER_INPUT_ID"`,不按 Skill 相关性筛选;runner、recovery、renderer 和 closeout 不做隐式计数。closeout 生成最终 summary 前使用当前 `HISTORY_COUNT` 快照,正式值始终由 runtime counter 写入,禁止传入或覆盖 `user_input_after_clarify_intent`。
548
548
 
549
- runner 从 `PRODUCT_TYPE` 派生产品名,网站支付/APP 支付派生服务结果“无需处理”,从 `ROOT_INTENT` 派生代码开发栏和后续衔接;标题只按完成条件派生。`onboarding_only` 省略 `--integration-result`、`--sandbox-config-state` 和 `--manual-verification-items`。`full_process`:代码开发通过填“已完成”并传 `READY`;仅沙箱待配置且其余代码与安全检查通过填“部分完成,沙箱配置待完成”并传 `CREATE_PENDING|VERIFY_PENDING`;沙箱 `READY` 且只剩非阻塞人工待验证项时填“部分完成,人工待验证”,传 `READY`,把 checklist 已分类的实际 `manualItems` 原样作为 `MANUAL_VERIFICATION_ITEMS`,并在 `REMAINING_ACTIONS` 写明实际待办,禁止传“无”。runner 拒绝旧完整参数、stdin JSON、`--input-json`、可派生字段和空字符串伪值。renderer 校验结果与沙箱状态/人工待验证项一致,并派生恢复口令;`remainingActions` 和 `manualVerificationItems` 仍用于完成条件校验,最终总收口不再单列“本轮流程仍需处理”和“人工待验证”,保留分支状态表、【当前状态】及沙箱恢复提示,不增加确认点。不得在 stdout 前后追加衔接提醒,不伪造本轮代码修改、沙箱创建或测试结果,也不重复进入 integration。
549
+ runner 从 `PRODUCT_TYPE` 派生产品名,网站支付/APP 支付派生服务结果“无需处理”,从 `ROOT_INTENT` 派生代码开发栏及内部范围校验字段 `nextFlowReminder`,后者不单独展示;标题只按完成条件派生。`onboarding_only` 省略 `--integration-result`、`--sandbox-config-state` 和 `--manual-verification-items`。`full_process`:代码开发通过填“已完成”并传 `READY`;仅沙箱待配置且其余代码与安全检查通过填“部分完成,沙箱配置待完成”并传 `CREATE_PENDING|VERIFY_PENDING`;沙箱 `READY` 且只剩非阻塞人工待验证项时填“部分完成,人工待验证”,传 `READY`,把 checklist 已分类的实际 `manualItems` 原样作为 `MANUAL_VERIFICATION_ITEMS`,并在 `REMAINING_ACTIONS` 写明实际待办,禁止传“无”。runner 拒绝旧完整参数、stdin JSON、`--input-json`、可派生字段和空字符串伪值。renderer 校验结果与沙箱状态/人工待验证项一致,并派生恢复口令;`remainingActions` 和 `manualVerificationItems` 仍用于完成条件校验,最终总收口不再单列“本轮流程仍需处理”和“人工待验证”,保留分支状态表、【当前状态】及沙箱恢复提示,不增加确认点。不得在 stdout 前后追加衔接提醒,不伪造本轮代码修改、沙箱创建或测试结果,也不重复进入 integration。
550
550
 
551
551
  三个产品的总收口只保留分支状态表中的应用发布结果,不再重复输出应用结果详情、appId、支付宝公钥保存路径或应用结果专属下一步。应用详情仅由前一步 `application.operation.result` 独立交付;`closeout` 拒绝旧 `--application-operation-*` 参数,禁止把详情改塞入 `remainingActions` 或其他字段。应用创建、提审、复用和人工配置的事实判据保持不变。
552
552
 
@@ -554,7 +554,7 @@ runner 从 `PRODUCT_TYPE` 派生产品名,网站支付/APP 支付派生服务
554
554
 
555
555
  renderer 按产品和实际结果自动派生【当前状态】、可选【沙箱测试配置】、【上线前有以下关键点】和【提示】。`onboarding_only` 禁止传 `--sandbox-summary`,不展示沙箱信息;`full_process` 仅 AI 网页应用收款在沙箱 READY、代码配置后置校验通过且原摘要有效时,传 Integration 本轮已交付的完整 `SANDBOX_SUMMARY`,包括 Worker 返回的原登记正文。不得重读配置、重建沙箱、摘出凭据或手写表格;无有效原摘要时省略,不展示占位信息。原摘要缺失、过期、格式异常或回放校验失败时,renderer 只省略该可选区块,严禁因此阻塞整个 summary;不输出未校验凭据,也不因省略展示改变或证明业务状态。区块只保留沙箱买家测试账号、沙箱买家登录密码、沙箱买家支付密码,两个密码明文展示(含 Windows);不展示配置路径、appId、产品或密钥行。按量付费与 APP 支付禁止传该参数,最终 summary 不展示沙箱配置。沙箱区块用于用户后续测试,不宣称测试通过。
556
556
 
557
- 上线关键点按“确认上线条件 → 生产配置替换 → 产品专属支付结果确认/服务配置 → 适用收款限制”组织。生产配置包括 appId、应用私钥、对应支付宝公钥及生产网关;应用公钥与应用私钥必须配对,在支付宝侧配置,无需额外配到项目中。应用上线提醒覆盖本轮新建和用户自行准备的其他生产应用。网页/移动收款必须同时实现通知处理和交易查询;缺少 `notify_url` 时省略该字段并由服务端查单兜底,不会仅因缺少该地址而报错。允许省略 `notify_url`,但商家服务端必须可靠主动查单并完成响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复;使用通知时需公网 HTTPS、验签、关键字段校验、幂等、`success` 回写和补偿查询。仅没有公网通知地址不应判为不能上线。按量付费 summary 仅保留真实 serviceId、商户 PID/2088 等生产服务配置,不再单列 402 验付和履约回执验证提醒。最终 summary 不重复私钥格式,也不逐字段解释通知校验;这些实现和检查要求仍由原契约、代码开发 flow 及 checklist 执行,不改变自动测试脚本。
557
+ 上线关键点按“确认上线条件 → 生产配置替换 → 按量付费服务配置/适用收款限制”组织。生产配置包括 appId、应用私钥、对应支付宝公钥及生产网关;应用公钥与应用私钥必须配对,在支付宝侧配置,无需额外配到项目中。本轮新建和用户自行准备的生产应用均须已上线;summary 使用登记的站点指引。网页/移动收款必须同时实现通知处理和交易查询;缺少 `notify_url` 时省略该字段并由服务端查单兜底,不会仅因缺少该地址而报错。允许省略 `notify_url`,但商家服务端必须可靠主动查单并完成响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复;使用通知时需公网 http/https、验签、关键字段校验、幂等、`success` 回写和补偿查询。仅没有公网通知地址不应判为不能上线。按量付费 summary 仅保留真实 serviceId、商户 PID/2088 等生产服务配置,不再单列 402 验付和履约回执验证提醒。最终 summary 不重复私钥格式,不展示支付结果确认整节或通知/查单实现要求,不再单列通用生产支付验证提醒;仅产品开通仍在【当前状态】说明需要完成代码开发、部署和生产参数验收,不重复展示“后续衔接”;这些实现和检查要求仍由原契约、代码开发 flow 及 checklist 执行,不改变自动测试脚本。
558
558
 
559
559
  通用通知地址提醒和用户可选沙箱付款体验不属于缺口,不得写入 `remainingActions`/`manualVerificationItems` 影响完成判定;仅剩这些提醒时按其余适用检查实际证据确定代码结果。实际待验证项必须与部分完成状态对应,不能在 renderer 中隐藏;上游分类有误时只纠正参数,不重测项目。本轮实际尚未验证的项目在上线关键点中列出,不单列“人工待验证”段落,不把尚未验证改成已通过。应用结果与支付宝公钥保存路径仍在前一步独立交付。禁止 Agent 在模板外补第二份生产上线清单或删掉网页收款限制;生产应用私钥、账号密码、支付凭证和未脱敏通知内容不得提供给 Agent。完成态不代表已切生产配置或已可真实收款,不新增确认点。
560
560
 
@@ -14,7 +14,7 @@ AI 网页应用收款覆盖 PC 网页和手机浏览器/H5,接口固定 `alipa
14
14
  5. **用户文件**:只改已确认项目和范围,不清空或删除既有项目;“新建/重做/换一个”不是删除授权。具体删除仍遵守 Integration flow 的清单、二次确认和禁删边界。
15
15
  6. **敏感信息**:应用公钥仅由用户生成并明确提供;禁止请求/处理生产私钥、生成密钥对、补全/改写公钥或添加 PEM 头尾。敏感值、临时 URL 和沙箱资料遵守对应 flow/script 的白名单、权限和输出边界。
16
16
  7. **沙箱结论**:真实快速沙箱配置不得用占位值,唯一例外是 AI 按量付费沙箱 `service_id=api_mock_service_id`,且生产禁用。`CREATE_PENDING|VERIFY_PENDING` 只允许继续代码实现,阻止字段使用、摘要、后置校验、联调和付款体验。字段校验不等于支付测试;仅完整 402 链路满足 flow 才可称沙箱测试通过。
17
- 8. **异步通知**:AI 网页应用收款/AI 移动应用收款必须实现通知处理和交易查询。`notify_url` 是可选参数;生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 HTTPS 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。
17
+ 8. **异步通知**:AI 网页应用收款/AI 移动应用收款必须实现通知处理和交易查询。`notify_url` 是可选参数;生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 http/https 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。
18
18
  9. **受控页面**:授权链接仅由 `auth.sh` 按固定产品/MCC 生成,只允许 `https://aipay.alipay.com/cli-auth` 及登记参数,禁用 CLI `verification_url`;公钥页和系统 opener 只走登记脚本。失败后宿主内置浏览器只可打开已交付的同一 URL 一次;仍失败才提示手动打开,再有限轮询。禁止搜索、改写或自动操作;opener/config 写失败不算业务失败。
19
19
  10. **对客输出**:指定 runner/renderer/脚本时,stdout 是唯一对客正文,须原文回复且不加旁白;工具输出记录、折叠面板或日志不等于已对客发送。展示命令只执行登记单条命令,禁 `2>&1`、管道、`grep/sed/awk/tee`、临时包装或拆回 `jq/printf/renderer`。除 `self_update.mjs` 的 `SELF_UPDATE:*` stderr 终态外,内部事实行均以 `ALIPAY_AIPAY_INTERNAL:` 开头;宿主合并输出时仍整行剔除,严禁对客。`integration.start.confirm`、`onboarding.plan.confirm`、`sandbox.configuration.pending`、`sandbox.environment.summary`、`integration.safety.closeout` 和 `integration.checklist.result` 在 flow 适用且成功渲染时必须各自产生唯一 `ALIPAY_AIPAY_INTERNAL:CUSTOMER_MESSAGE_DELIVERY_REQUIRED=<messageId>`;下一动作先将剔除内部行后的 stdout 原文作为独立可见消息送达,不得以工具面板、折叠输出、进度话术或最终答复代替,也不得在送达前继续调用工具。送达后同回合按 flow 继续,不等待回复。成功沙箱准备 `READY` 时 stdout 仍按 flow 静默,不构成交付消息;只有待配置正文和后置摘要需要交付。所有 `postRenderHintType=scanReturn` 的页面消息都是交付屏障(当前为 `auth.page`、`application.key.page`):先独立送达页面 stdout,再执行受控 opener 和有限轮询,不合并 pending/收口;不要求确认。阻塞正文后等待;剔除内部行后正文为空则直接转移。
20
20
  11. **确定性转移**:固定脚本终态后立即转移;只执行动作处登记命令,禁止追加 `jq/cat/grep/curl` 或临时脚本重复解析。失败只走登记恢复;项目自检不绕过 Skill 脚本或打印敏感配置。
package/skill-pre/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.6-pre
1
+ 1.8.7-pre
@@ -19,7 +19,7 @@
19
19
 
20
20
  先确认唯一项目和服务端语言,再在产品确定前执行步骤 1;匿名沙箱不传 `PRODUCT`,缺失时创建、存在时复核,待配置只阻止沙箱依赖动作。步骤 2 的完整方案可见送达前不得改代码;送达后按步骤 2 完成执行者分流,再由确定的执行者按同一产品、项目和技术栈开工,不再执行方案 receipt 或项目快照二次校验。`integration_only/full_process` 共用检查器事实和非阻塞 `integration.start.confirm`,一次只开发一个产品。网站支付/APP 支付必须实现下单、查询、退款、退款查询、关闭和异步通知;按量付费只实现 402、验付和履约确认。本流程不主动发起真实生产交易。
21
21
 
22
- 生产 `appId`、应用公钥、应用私钥和支付宝公钥必须属于同一生产应用,私钥格式必须匹配当前语言,格式转换只用支付宝官方密钥工具。网站支付/APP 支付必须同时实现通知处理和交易查询;缺少 notify_url 时下单省略该字段并由服务端主动查单兜底,不会仅因缺少该地址而报错,也不因此将本轮校验判为失败;`notify_url` 可选,生产也可省略。使用通知时验证公网 HTTPS 地址、验签、关键字段、幂等、`success` 回写及补偿查询;不使用时验证商家服务端可靠主动查单、响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复。未验证所选链路前不得宣称生产就绪。
22
+ 生产 `appId`、应用公钥、应用私钥和支付宝公钥必须属于同一生产应用,私钥格式必须匹配当前语言,格式转换只用支付宝官方密钥工具。网站支付/APP 支付必须同时实现通知处理和交易查询;缺少 notify_url 时下单省略该字段并由服务端主动查单兜底,不会仅因缺少该地址而报错,也不因此将本轮校验判为失败;`notify_url` 可选,生产也可省略。使用通知时验证公网 http/https 地址、验签、关键字段、幂等、`success` 回写及补偿查询;不使用时验证商家服务端可靠主动查单、响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复。未验证所选链路前不得宣称生产就绪。
23
23
 
24
24
  ### 标准消息执行规则
25
25
 
@@ -402,7 +402,7 @@ Windows LEGACY/CODE_ONLY 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实
402
402
  3. 默认分支继续启动服务,并对不带支付结果参数的 `return_url` 发起 GET 访问。这一步只验证路由和页面壳:无订单上下文时应展示安全的中性状态,不得因没有签名参数而绕过真实回跳请求的验签和订单归属校验。确认响应成功、无认证或重定向循环;单页应用直接刷新不得返回 404。
403
403
  4. 默认分支中,Agent 具备浏览器/UI 验证能力时,实际打开回跳页,确认页面非空白、无可见报错且关键状态内容正常渲染。不具备时,不向用户追加人工确认;将“回跳页 UI 人工待验证”记录到最终 checklist 的 `manualItems`,并继续提供沙箱付款入口。
404
404
 
405
- 5. 用户已明确关闭同步回跳时,不要求或猜测 `return_url`;确认 SDK 请求未传该字段,并改为验证异步通知处理代码、交易查询和商户订单查询页。如尚未部署公网 HTTPS `notify_url`,保留上线前提醒,不单独计入本轮失败或人工待验证项;生产不使用通知时需验证服务端可靠主动查单。
405
+ 5. 用户已明确关闭同步回跳时,不要求或猜测 `return_url`;确认 SDK 请求未传该字段,并改为验证异步通知处理代码、交易查询和商户订单查询页。如尚未部署公网 http/https `notify_url`,保留上线前提醒,不单独计入本轮失败或人工待验证项;生产不使用通知时需验证服务端可靠主动查单。
406
406
  6. 输出沙箱付款说明。操作顺序为:启动服务 → 用浏览器访问支付页面 → 发起支付 → 唤起沙箱收银台 → 用户从“收银台账号登录”与“安卓沙箱支付宝扫码”中二选一完成付款 → 返回商户结果页并查询展示订单状态。
407
407
 
408
408
  回跳地址无法确定、访问失败或页面出现确定错误时,必须先修正;本轮无法继续修正时进入最终 checklist 的未完成项,不得宣称网站支付代码开发完成。仅缺少浏览器/UI 证据时记录“回跳页 UI 人工待验证”,不得宣称回跳页已验证,但不阻塞沙箱付款入口交付。该体验不新增业务写操作确认点,用户暂未付款不阻止后续代码校验。
@@ -415,7 +415,7 @@ Windows LEGACY/CODE_ONLY 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实
415
415
  以下两项按实际分支二选一,不得同时要求:
416
416
 
417
417
  - [INT.WEBPAY.RETURN_VERIFIED] 默认分支已确认实际 `return_url` 与项目路由一致,启动服务后 GET 访问通过,且已通过 Agent 浏览器/UI 验证取得页面正常渲染的证据;当前环境无法取得 UI 证据时只能记为人工待验证,不能满足本完成条件
418
- - [INT.WEBPAY.NO_RETURN_VERIFIED] 关闭分支已记录用户先前明确提出的不使用同步回跳,确认 SDK 请求未传 `return_url`,并完成异步通知处理代码、交易查询和商户订单查询页校验;缺少公网 HTTPS `notify_url` 时已保留上线前提醒;不使用通知时验证服务端可靠主动查单
418
+ - [INT.WEBPAY.NO_RETURN_VERIFIED] 关闭分支已记录用户先前明确提出的不使用同步回跳,确认 SDK 请求未传 `return_url`,并完成异步通知处理代码、交易查询和商户订单查询页校验;缺少公网 http/https `notify_url` 时已保留上线前提醒;不使用通知时验证服务端可靠主动查单
419
419
  <!-- ALIPAY_AIPAY_PRODUCT:END -->
420
420
 
421
421
  <!-- ALIPAY_AIPAY_PRODUCT:aipay:START -->
@@ -26,8 +26,8 @@
26
26
 
27
27
  先区分两种验收层级,再判断是否通过:
28
28
 
29
- - **本地开发 / 沙箱集成**:通知处理代码和主动查询仍须实现;仅尚未部署公网 HTTPS `notify_url` 属于上线前提醒,不计入本轮失败或人工待验证项。通知代码或查询链路的实际缺陷仍须修复。
30
- - **真实生产上线**:可使用异步通知加补偿查询,或省略 `notify_url` 并由服务端可靠主动查单。使用通知时验证公网 HTTPS 地址、验签、关键字段、幂等和 `success`;不使用时验证后台查单、响应验签、订单/金额/状态/归属校验、幂等交付、重试及未决订单恢复,用户关闭页面后也能继续。所选链路未验证时不得判定生产就绪。
29
+ - **本地开发 / 沙箱集成**:通知处理代码和主动查询仍须实现;仅尚未部署公网 http/https `notify_url` 属于上线前提醒,不计入本轮失败或人工待验证项。通知代码或查询链路的实际缺陷仍须修复。
30
+ - **真实生产上线**:可使用异步通知加补偿查询,或省略 `notify_url` 并由服务端可靠主动查单。使用通知时验证公网 http/https 地址、验签、关键字段、幂等和 `success`;不使用时验证后台查单、响应验签、订单/金额/状态/归属校验、幂等交付、重试及未决订单恢复,用户关闭页面后也能继续。所选链路未验证时不得判定生产就绪。
31
31
 
32
32
  | 校验项 | 校验要求 | 说明 |
33
33
  |----------|----------|----------|
@@ -36,7 +36,7 @@
36
36
  | 交易状态判断 | 仅 `TRADE_SUCCESS` 或 `TRADE_FINISHED` 才算支付成功 | 其他状态不算支付成功 |
37
37
  | 幂等处理 | 必须进行幂等处理,过滤重复的通知 | 同一笔订单可能收到多次异步通知 |
38
38
  | 响应值 | 商户侧处理成功后需返回字符串 `success` | 否则支付宝会重试通知 |
39
- | URL 格式 | notify_url 不能包含空格和 HTML 标签 | 否则可能导致通知失败 |
39
+ | URL 格式 | notify_url 以 http:// 或 https:// 开头,不能包含空格和 HTML 标签 | 否则可能导致通知失败 |
40
40
  | 重定向 | notify_url 不能重定向 | 重定向会导致支付宝收不到 success |
41
41
  | 外网可访问 | 使用通知时,notify_url 必须可公网访问;不使用通知时本项不适用 | 使用通知时确保支付宝服务器可访问;仅尚未部署公网地址保留上线前提醒,不误记为本轮人工待验证 |
42
42
 
@@ -121,7 +121,7 @@
121
121
  | 人工代码审查 | 上线前必须完成人工代码审查 | 生产上线前检查 |
122
122
  | 私钥安全 | 私钥不在代码、日志、公共仓库中明文存储 | 使用安全的方式管理私钥 |
123
123
  | 日志安全 | 日志中不打印敏感信息(私钥、用户信息等) | 防止信息泄露 |
124
- | HTTPS 通信 | 生产环境必须使用 HTTPS | 保证传输安全 |
124
+ | HTTPS 通信 | 生产环境必须使用 HTTPS;支付宝异步通知地址 `notify_url` 可使用公网 http/https | 通知仍须验签;其他通信安全要求不变 |
125
125
 
126
126
  ---
127
127
 
@@ -15,7 +15,7 @@ var request = new AlipayTradePagePayRequest();
15
15
  var notifyUrl = Environment.GetEnvironmentVariable("ALIPAY_NOTIFY_URL");
16
16
  if (!string.IsNullOrWhiteSpace(notifyUrl))
17
17
  {
18
- request.SetNotifyUrl(notifyUrl.Trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 null、空字符串或占位 URL
18
+ request.SetNotifyUrl(notifyUrl.Trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 null、空字符串或占位 URL
19
19
  }
20
20
  request.SetReturnUrl("https://your-domain.com/return"); // 默认传入并替换为已验证结果页;仅用户明确关闭同步回跳时省略
21
21
 
@@ -23,7 +23,7 @@ namespace SdkDemoTest
23
23
  var notifyUrl = Environment.GetEnvironmentVariable("ALIPAY_NOTIFY_URL");
24
24
  if (!string.IsNullOrWhiteSpace(notifyUrl))
25
25
  {
26
- request.SetNotifyUrl(notifyUrl.Trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 null、空字符串或占位 URL
26
+ request.SetNotifyUrl(notifyUrl.Trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 null、空字符串或占位 URL
27
27
  }
28
28
  AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
29
29
 
@@ -22,7 +22,7 @@ public class AlipayTradePagePay {
22
22
  AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
23
23
  String notifyUrl = System.getenv("ALIPAY_NOTIFY_URL");
24
24
  if (notifyUrl != null && !notifyUrl.isBlank()) {
25
- request.setNotifyUrl(notifyUrl.trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notifyUrl 时不要调用 setNotifyUrl(null/空字符串/占位 URL)
25
+ request.setNotifyUrl(notifyUrl.trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notifyUrl 时不要调用 setNotifyUrl(null/空字符串/占位 URL)
26
26
  }
27
27
  request.setReturnUrl("https://your-domain.com/return"); // 默认传入并替换为已验证结果页;仅用户明确关闭同步回跳时省略
28
28
 
@@ -31,7 +31,7 @@ public class AlipayTradeAppPay {
31
31
  AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
32
32
  String notifyUrl = System.getenv("ALIPAY_NOTIFY_URL");
33
33
  if (notifyUrl != null && !notifyUrl.isBlank()) {
34
- request.setNotifyUrl(notifyUrl.trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notifyUrl 时不要调用 setNotifyUrl(null/空字符串/占位 URL)
34
+ request.setNotifyUrl(notifyUrl.trim()); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notifyUrl 时不要调用 setNotifyUrl(null/空字符串/占位 URL)
35
35
  }
36
36
  AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
37
37
 
@@ -18,7 +18,7 @@ const alipaySdk = new AlipaySdk({
18
18
  // ⚠️ 网站支付必须使用 pageExec() 方法,不能使用 exec()
19
19
  // ⚠️ pageExec() 第二个参数必须传 'POST'
20
20
  // ⚠️ notifyUrl 可选;生产也可省略,但服务端必须可靠主动查单,仍需实现通知处理代码
21
- // ⚠️ 本地没有公网 HTTPS notifyUrl 时,直接省略 notifyUrl,不要向 SDK 传 undefined、空字符串或占位 URL
21
+ // ⚠️ 本地没有公网 http/https notifyUrl 时,直接省略 notifyUrl,不要向 SDK 传 undefined、空字符串或占位 URL
22
22
  // ⚠️ returnUrl 默认传入,仅在用户明确关闭同步回跳时省略
23
23
  const notifyUrl = (process.env.ALIPAY_NOTIFY_URL || "").trim();
24
24
  const requestOptions = {
@@ -13,7 +13,7 @@ const alipaySdk = new AlipaySdk({
13
13
  appAuthToken: "<-- 请填写应用授权令牌 -->",
14
14
  });
15
15
 
16
- // 使用异步通知时传入 notifyUrl;生产也可省略并由服务端可靠主动查单。没有公网 HTTPS notifyUrl 时直接省略,不要向 SDK 传 undefined、空字符串或占位 URL。
16
+ // 使用异步通知时传入 notifyUrl;生产也可省略并由服务端可靠主动查单。没有公网 http/https notifyUrl 时直接省略,不要向 SDK 传 undefined、空字符串或占位 URL。
17
17
  const notifyUrl = (process.env.ALIPAY_NOTIFY_URL || "").trim();
18
18
  const requestOptions = {
19
19
  bizContent: {
@@ -22,7 +22,7 @@ $aop->signType = 'RSA2';
22
22
  $request = new AlipayTradePagePayRequest();
23
23
  $notifyUrl = trim(getenv('ALIPAY_NOTIFY_URL') ?: '');
24
24
  if ($notifyUrl !== '') {
25
- $request->setNotifyUrl($notifyUrl); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 null、空字符串或占位 URL
25
+ $request->setNotifyUrl($notifyUrl); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 null、空字符串或占位 URL
26
26
  }
27
27
  $request->setReturnUrl('https://your-domain.com/return'); // 默认传入并替换为已验证结果页;仅用户明确关闭同步回跳时省略
28
28
 
@@ -16,7 +16,7 @@ $alipayClient = new AopClient(getAlipayConfig());
16
16
  $request = new AlipayTradeAppPayRequest();
17
17
  $notifyUrl = trim(getenv('ALIPAY_NOTIFY_URL') ?: '');
18
18
  if ($notifyUrl !== '') {
19
- $request->setNotifyUrl($notifyUrl); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 null、空字符串或占位 URL
19
+ $request->setNotifyUrl($notifyUrl); // 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 null、空字符串或占位 URL
20
20
  }
21
21
  $model = array();
22
22
 
@@ -23,7 +23,7 @@ client = DefaultAlipayClient(alipay_client_config=config)
23
23
  request = AlipayTradePagePayRequest()
24
24
  notify_url = os.getenv("ALIPAY_NOTIFY_URL", "").strip()
25
25
  if notify_url:
26
- request.notify_url = notify_url # 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 None、空字符串或占位 URL
26
+ request.notify_url = notify_url # 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 None、空字符串或占位 URL
27
27
  request.return_url = "https://your-domain.com/return" # 默认传入并替换为已验证结果页;仅用户明确关闭同步回跳时省略
28
28
 
29
29
  model = AlipayTradePagePayModel()
@@ -24,7 +24,7 @@ client = DefaultAlipayClient(alipay_client_config=config)
24
24
  request = AlipayTradeAppPayRequest()
25
25
  notify_url = os.getenv("ALIPAY_NOTIFY_URL", "").strip()
26
26
  if notify_url:
27
- request.notify_url = notify_url # 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 HTTPS notify_url 时不要传 None、空字符串或占位 URL
27
+ request.notify_url = notify_url # 使用异步通知时传入;未配置时由服务端可靠主动查单。没有公网 http/https notify_url 时不要传 None、空字符串或占位 URL
28
28
  model = AlipayTradeAppPayModel()
29
29
 
30
30
  model.out_trade_no = "MERCHANT_ORDER_NO_PLACEHOLDER"
@@ -27,7 +27,7 @@ AI 移动应用收款必须覆盖:`alipay.trade.app.pay`、交易查询、退
27
27
  | 字段 | 要求 |
28
28
  | --- | --- |
29
29
  | `method` | 固定 `alipay.trade.app.pay` |
30
- | `notify_url` | 可选,生产也可省略;使用通知时传入商家公网 HTTPS 地址,不使用时由服务端可靠主动查单;通知处理代码仍须实现 |
30
+ | `notify_url` | 可选,生产也可省略;使用通知时传入商家公网 http/https 地址,不使用时由服务端可靠主动查单;通知处理代码仍须实现 |
31
31
 
32
32
  业务参数:
33
33
 
@@ -19,7 +19,7 @@ sourceUrl:
19
19
 
20
20
  `notify_url` 是商家服务端接收支付宝 POST 表单通知的地址,不是前端页面地址,也不是支付宝生成的 URL。
21
21
 
22
- 通知处理与交易查询接口必须同时实现。`notify_url` 是可选参数;当前商家没有配置该地址时,下单省略该字段并由服务端交易查询兜底,不会仅因缺少该地址而报错。生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 HTTPS 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。 没有可用地址时省略该字段,不向 SDK 传 `undefined`、`null`、空字符串或占位 URL;使用通知时地址不得包含多余字符或发生重定向。
22
+ 通知处理与交易查询接口必须同时实现。无论是否配置 `notify_url`,均须实现 `alipay.trade.query` 主动查单兜底;未收到支付宝异步通知或交易状态不明确时,主动查询并确认交易结果。`notify_url` 是可选参数;当前商家没有配置该地址时,下单省略该字段并由服务端交易查询兜底,不会仅因缺少该地址而报错。生产也允许省略。未配置时不触发该地址的异步通知,必须由商家服务端通过 `alipay.trade.query` 主动确认支付结果,校验订单、金额、支付状态及归属,幂等更新订单;即使用户关闭页面,仍须继续处理查询重试和未决订单。如使用异步通知,配置商家已部署、支付宝服务端可公网访问的 http/https 地址并完成验签、关键字段校验、幂等、`success` 回写和补偿查询。不能只因没有公网通知地址阻止流程或判定不能上线;通知处理代码仍须实现,实际代码或支付结果确认链路缺陷仍是阻断项。 没有可用地址时省略该字段,不向 SDK 传 `undefined`、`null`、空字符串或占位 URL;使用通知时地址不得包含多余字符或发生重定向。
23
23
 
24
24
  ## 必须实现的处理链路
25
25
 
@@ -51,7 +51,7 @@ sourceUrl:
51
51
  ## 验收分层
52
52
 
53
53
  - 本地开发 / 沙箱集成:通知处理代码、验签、关键字段校验、持久化幂等和主动查询必须实现。仅尚未部署公网通知地址属于上线前方案选择与验证提醒,不计入本轮失败或人工待验证项;实际通知代码缺陷仍须修复。
54
- - 真实生产上线,使用通知:配置公网 HTTPS `notify_url`,验证支付宝服务器可访问、验签、关键字段校验、幂等处理、返回 `success` 和补偿查询。
54
+ - 真实生产上线,使用通知:配置公网 http/https `notify_url`,验证支付宝服务器可访问、验签、关键字段校验、幂等处理、返回 `success` 和补偿查询。
55
55
  - 真实生产上线,不使用通知:下单省略 `notify_url`,验证服务端主动查单、查询响应验签和订单/金额/状态/归属校验、幂等交付、后台重试和未决订单恢复。不得把浏览器关闭或一次查询未成功当作付款失败。
56
56
 
57
57
  生产配置及所选支付结果确认链路尚未验证时,不得表述为生产就绪或正式上线完成。仅缺少 `notify_url` 不是不能上线的依据。
@@ -24,7 +24,7 @@ AI 网页应用收款必须覆盖:`alipay.trade.page.pay`、交易查询、退
24
24
  | 字段 | 要求 |
25
25
  | --- | --- |
26
26
  | `method` | 固定 `alipay.trade.page.pay` |
27
- | `notify_url` | 可选,生产也可省略;使用通知时传入商家公网 HTTPS 地址,不使用时由服务端可靠主动查单;通知处理代码仍须实现 |
27
+ | `notify_url` | 可选,生产也可省略;使用通知时传入商家公网 http/https 地址,不使用时由服务端可靠主动查单;通知处理代码仍须实现 |
28
28
  | `return_url` | 用户未明确关闭同步回跳时默认传入,且对应当前项目实际 GET 路由 |
29
29
 
30
30
  业务参数:
@@ -14,7 +14,7 @@
14
14
  ### 1.2 Windows LEGACY/CODE_ONLY 用户注意事项
15
15
  Windows READY 通过兼容层执行 flow 登记的快速沙箱;下述手工分支适用于 Windows LEGACY/CODE_ONLY;CODE_ONLY 只放行代码开发,不代表站点开通选择。Windows 沙箱项目配置不要求精确 NTFS ACL 白名单,配置是否可用仍由字段校验、实际项目加载路径和防误提交检查决定。
16
16
 
17
- Windows LEGACY/CODE_ONLY 普通代码开发或完整接入请求未明确要求当前配置沙箱且未主动提供资料时,记录 `sandboxConfigState=VERIFY_PENDING` 并继续代码实现,不展示资料收集消息。用户主动提供本轮目标项目的完整有效手工沙箱资料时,直接校验并写入项目实际使用的本地沙箱配置,记录沙箱 `READY`,无需再次展示资料收集消息。只有用户明确要求现在配置或恢复 Windows LEGACY/CODE_ONLY 沙箱时,才使用 `../../../normal/json/customer-messages.json` 的既有 `sandbox.windows.manual_setup`,引导用户前往支付宝 AI 付站点的“选择产品 → 一站式接入 → 技术集成”页面获取当前沙箱的 APPID、公私钥和账号信息。主动提供或本轮消息后提供的资料均须校验;部分或错误时不使用无效字段、不记 `READY`,只补问实际缺失或错误字段。沙箱 `READY` 只证明配置就绪,不改变 `CODE_ONLY` 环境分流;测试按自身实际依赖执行,不调用快速沙箱,Skill 内产品开通仍须环境 `READY`。不得要求用户自行配置、理解 `sandbox_config.sh`、执行 Bash 或手工拼接 Skill 的规范化 JSON。该资料输入例外只适用于沙箱,生产环境应用私钥和密码禁止提供给 Agent;除网页收款在登记摘要中展示已校验沙箱买家账号及两个密码外,Agent 不得在回复、摘要或普通日志中复述收到的值。
17
+ Windows LEGACY/CODE_ONLY 普通代码开发或完整接入请求未明确要求当前配置沙箱且未主动提供资料时,记录 `sandboxConfigState=VERIFY_PENDING` 并继续代码实现,不展示资料收集消息。用户主动提供本轮目标项目的完整有效手工沙箱资料时,直接校验并写入项目实际使用的本地沙箱配置,记录沙箱 `READY`,无需再次展示资料收集消息。只有用户明确要求现在配置或恢复 Windows LEGACY/CODE_ONLY 沙箱时,才使用 `../../../normal/json/customer-messages.json` 的既有 `sandbox.windows.manual_setup`,引导用户通过 https://aipay.alipay.com/open-flow/products 选择目标产品,在“技术集成”节点获取沙箱配置。主动提供或本轮消息后提供的资料均须校验;部分或错误时不使用无效字段、不记 `READY`,只补问实际缺失或错误字段。沙箱 `READY` 只证明配置就绪,不改变 `CODE_ONLY` 环境分流;测试按自身实际依赖执行,不调用快速沙箱,Skill 内产品开通仍须环境 `READY`。不得要求用户自行配置、理解 `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>"