@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
@@ -839,14 +839,13 @@ function sandboxReplayBlock(original, productName, sandboxConfigState) {
839
839
  function productionConfigSourceLines() {
840
840
  return [
841
841
  '1、确认上线条件:',
842
- '- 前往支付宝 AI 付站点(https://aipay.alipay.com/?from=alipay-aipay-skill)→ 一站式接入,查看产品开通情况。',
843
- '- 如本次流程新建支付宝应用,进入一站式接入 → 选择产品 → 密钥配置,确认新建的支付宝应用“已上线”;使用其他生产应用时,也需确认该应用已上线。',
842
+ '- 前往支付宝 AI 付站点(https://aipay.alipay.com/open-flow/products )选择目标产品,在“产品开通”节点查看开通情况。',
843
+ '- 前往支付宝 AI 付站点(https://aipay.alipay.com/open-flow/products )选择目标产品,在“密钥配置”节点确认新建的支付宝应用已上线。',
844
844
  '',
845
845
  '2、生产环境的支付宝应用配置替换到项目中:',
846
846
  '- 修改项目中的支付宝网关为 https://openapi.alipay.com/gateway.do。',
847
- '- 把生产环境支付宝应用配置写入业务系统生产环境变量、受保护配置文件或密钥管理系统。',
848
- '- appId、支付宝公钥、应用私钥需要配到项目中。应用私钥不要泄露、不要暴露给 Agent;应用公钥用于在支付宝侧配置,无需额外配到项目中。',
849
- '- 确保应用公钥与应用私钥配对,appId、该应用公钥及对应的支付宝公钥与目标生产应用配置一致,不混用沙箱或其他应用的配置。',
847
+ '- 将同一生产应用的 appId、支付宝公钥和应用私钥写入项目的生产环境变量或受保护配置中,勿混用沙箱或其他应用配置。',
848
+ '- 应用公钥只需配置在支付宝侧,并须与应用私钥配对;请勿向 Agent 提供应用私钥。',
850
849
  ];
851
850
  }
852
851
 
@@ -858,18 +857,9 @@ function productionSpecificLines(productName) {
858
857
  '- `seller_id`/`seller_unique_id` 填收款商户 PID/2088,`seller_app_id` 填生产 `appId`。PID 获取方式:登录支付宝商家平台(https://b.alipay.com/page/portal/home)→ 点击头像 → 复制账户名下方 2088 开头的商家 ID。',
859
858
  ];
860
859
  }
861
- const mobile = productName === 'AI 移动应用收款';
862
- return [
863
- '', `3、${productName}支付结果确认:`,
864
- '- `notify_url` 用于商家服务端接收支付宝发来的支付结果异步通知,不是前端页面或支付宝生成的 URL。',
865
- '- 如使用异步通知,下单时传入 `notify_url`;它应是商家已部署、支付宝服务端可通过公网访问的 HTTPS 通知接口地址。',
866
- '- 如不配置 `notify_url`,不会触发该地址的异步通知;商家服务端需通过 `alipay.trade.query` 主动查单。',
867
- mobile
868
- ? '- 支付结果以验签通过的异步通知或服务端交易查询结果为准;APP 客户端支付结果不能单独作为付款成功依据。'
869
- : '- 支付结果以验签通过的异步通知或 `alipay.trade.query` 查询结果为准;同步回跳或前台页面不能作为付款成功依据。',
870
- '- 项目正式对客前,请完成生产环境支付验证。',
871
- ...(mobile ? [] : ['', '4、AI 网页应用收款限制:', '- 如需解除 AI 网页应用收款的收款限制,请前往支付宝商家平台 → 签约管理补全收款信息:https://b.alipay.com/page/ar-center/ar-manage'])
872
- ];
860
+ return productName === 'AI 网页应用收款'
861
+ ? ['', '3、AI 网页应用收款限制:', '- 如需解除 AI 网页应用收款的收款限制,请前往支付宝商家平台 → 签约管理补全收款信息:https://b.alipay.com/page/ar-center/ar-manage']
862
+ : [];
873
863
  }
874
864
 
875
865
  function summaryItems(value) {
@@ -887,6 +877,8 @@ function summaryItems(value) {
887
877
  // Completion inputs contain actual gaps only; reminders are delivered elsewhere.
888
878
  function validateChecklistItemClassification(variables, fields) {
889
879
  const notifyReminders = new Set([
880
+ '公网 http/https notify_url 联调人工待验证:上线前配置公网通知地址并完成验签联调',
881
+ '公网 http/https notify_url 联调待部署后验证',
890
882
  '公网 HTTPS notify_url 联调人工待验证:上线前配置公网通知地址并完成验签联调',
891
883
  '公网 HTTPS notify_url 联调待部署后验证'
892
884
  ]);
@@ -912,7 +904,7 @@ function productionReadinessBlock(productName, context) {
912
904
  statusLines.push('- 还不能正式收款,产品签约、服务市场或应用发布仍有上表待办。');
913
905
  }
914
906
  if (context.integrationResult === '不在本轮执行范围') {
915
- statusLines.push('- 本轮只完成产品开通流程收口,不代表业务系统已经具备收款代码;先完成支付产品-代码开发、项目部署和生产参数验收。');
907
+ statusLines.push('- 本轮只完成产品开通流程收口,不代表业务系统已经具备收款代码;需要完成支付产品-代码开发、项目部署和生产参数验收。');
916
908
  } else if (context.integrationResult === '部分完成,沙箱配置待完成') {
917
909
  statusLines.push('- 沙箱配置尚未完成,相关测试未执行;后续上线条件按生产配置和实际验证结果另行确认。');
918
910
  } else if (context.integrationResult === '部分完成,人工待验证') {
@@ -940,7 +932,11 @@ function productionReadinessBlock(productName, context) {
940
932
  '【上线前有以下关键点】', '',
941
933
  ...productionConfigSourceLines(), ...productionSpecificLines(productName), ...manualLines, '',
942
934
  '【提示】',
943
- '- 如找不到项目上线前生产配置的替换位置,可以试试对 Agent 说:“我要上线了,帮我找一下项目里支付宝生产配置要改哪些地方”。让 Agent 帮助您定位文件/变量名,但不要把生产应用私钥、账号密码、支付凭证或未脱敏通知内容直接发给 Agent。'
935
+ '- 不知道哪些地方需要替换为生产?可对 Agent 说:“帮我找出项目中需要替换为生产的支付宝配置。”请勿发送生产应用私钥、账号密码、支付凭证或其他未脱敏内容。',
936
+ ...(['AI 网页应用收款', 'AI 移动应用收款'].includes(productName) ? [
937
+ '- 沙箱测试反复受阻?可以在代码开发+产品开通完成后,替换项目配置为生产,直接在生产环境用小金额(如:0.01元)进行业务测试。可预留“退款接口”为测试交易进行退款。',
938
+ '- 此外,请注意,生产环境的付款方支付宝账号不能和收款方一致。'
939
+ ] : [])
944
940
  ].join('\n');
945
941
  }
946
942
 
@@ -1695,7 +1691,6 @@ export function renderMessage(messageId, variantName, variables, telemetryContex
1695
1691
  if (onboardingOnly !== (variables.nextFlowReminder === onboardingReminder)) {
1696
1692
  throw new Error('process.partial_result 的代码开发结果与后续衔接不一致');
1697
1693
  }
1698
- normalized.nextFlowReminderLine = onboardingOnly ? `后续衔接:${normalized.nextFlowReminder}` : '';
1699
1694
  const hasManualVerificationItems =
1700
1695
  typeof variables.manualVerificationItems === 'string' &&
1701
1696
  variables.manualVerificationItems !== '' &&
@@ -568,7 +568,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" onboarding-message appl
568
568
 
569
569
  **完成条件**:当前登录、scope 和 MCC 必须有效;签约必须由实际查询确认为已生效;仅按量付费适用的服务分支必须复用或保存成功并取得实际 `serviceId`;应用必须达到 `ON_LINE`、应用公钥已生效且支付宝公钥已实际导出。存在失败、未知、待生效、待审核或人工配置时不得宣称产品开通完成。不维护人工完成条件数量。
570
570
 
571
- 使用 `../normal/json/customer-messages.json` 的 `process.partial_result` 逐分支收口,必须通过 `onboarding_message_runner.mjs closeout` 托管输出并原文发送 stdout。禁止 Agent 手写短摘要、删减 `productionReadinessBlock`、删减 AI 网页应用收款限制引导或改写后续衔接;AI 网页应用收款收口缺少“【上线前有以下关键点】”和“AI 网页应用收款限制”时视为标准收口未送达,必须重发同一次 stdout。自动重试耗尽、业务错误或查询失败且仍未恢复的动作,保留在分支结果及内部 `remainingActions`,未解决业务分支的必要恢复动作由 `remainingActions` 放入【当前状态】的“下一步”,不能只依赖前序消息;产品开通各分支已完成且仅剩代码人工验证或沙箱待配置时,分别沿用上线关键点或独立恢复口令,不重复内部汇总待办;仅保留本轮尚未解决分支的具体恢复指引,不重复通用上线提醒或已在上线关键点列出的人工验证项。UNKNOWN 仍先核对事实,禁止自动重放写操作,不在收口后追问是否重试。必须执行:
571
+ 使用 `../normal/json/customer-messages.json` 的 `process.partial_result` 逐分支收口,必须通过 `onboarding_message_runner.mjs closeout` 托管输出并原文发送 stdout。禁止 Agent 手写短摘要、删减 `productionReadinessBlock`、删减 AI 网页应用收款限制引导或改写【当前状态】中的代码开发范围提醒;AI 网页应用收款收口缺少“【上线前有以下关键点】”和“AI 网页应用收款限制”时视为标准收口未送达,必须重发同一次 stdout。自动重试耗尽、业务错误或查询失败且仍未恢复的动作,保留在分支结果及内部 `remainingActions`,未解决业务分支的必要恢复动作由 `remainingActions` 放入【当前状态】的“下一步”,不能只依赖前序消息;产品开通各分支已完成且仅剩代码人工验证或沙箱待配置时,分别沿用上线关键点或独立恢复口令,不重复内部汇总待办;仅保留本轮尚未解决分支的具体恢复指引,不重复通用上线提醒或已在上线关键点列出的人工验证项。UNKNOWN 仍先核对事实,禁止自动重放写操作,不在收口后追问是否重试。必须执行:
572
572
 
573
573
  `SIGNING_RESULT`、`SERVICE_RESULT`、`APPLICATION_RESULT` 和 `INTEGRATION_RESULT` 必须使用消息目录允许的状态枚举原文,禁止拼接 `appId`、公钥文件路径、错误码、截图证据或其他自由文本;本轮 `ALIPAY_PUBLIC_KEY_EXPORT_STATUS=EXPORTED` 时,`APP_KEY_SAVE_PATH` 必须传入前一步独立应用结果 runner。这些证据不能污染分支结果枚举。
574
574
 
@@ -580,7 +580,7 @@ node "<SKILL_DIR>/references/normal/scripts/runtime.mjs" onboarding-message clos
580
580
 
581
581
  用户输入计数严格继承 `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`。
582
582
 
583
- 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。
583
+ 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。
584
584
 
585
585
  三个产品的总收口只保留分支状态表中的应用发布结果,不再重复输出应用结果详情、appId、支付宝公钥保存路径或应用结果专属下一步。应用详情仅由前一步 `application.operation.result` 独立交付;`closeout` 拒绝旧 `--application-operation-*` 参数,禁止把详情改塞入 `remainingActions` 或其他字段。应用创建、提审、复用和人工配置的事实判据保持不变。
586
586
 
@@ -588,7 +588,7 @@ runner 从 `PRODUCT_TYPE` 派生产品名,网站支付/APP 支付派生服务
588
588
 
589
589
  renderer 按产品和实际结果自动派生【当前状态】、可选【沙箱测试配置】、【上线前有以下关键点】和【提示】。`onboarding_only` 禁止传 `--sandbox-summary`,不展示沙箱信息;`full_process` 仅 AI 网页应用收款在沙箱 READY、代码配置后置校验通过且原摘要有效时,传 Integration 本轮已交付的完整 `SANDBOX_SUMMARY`,包括 Worker 返回的原登记正文。不得重读配置、重建沙箱、摘出凭据或手写表格;无有效原摘要时省略,不展示占位信息。原摘要缺失、过期、格式异常或回放校验失败时,renderer 只省略该可选区块,严禁因此阻塞整个 summary;不输出未校验凭据,也不因省略展示改变或证明业务状态。区块只保留沙箱买家测试账号、沙箱买家登录密码、沙箱买家支付密码,两个密码明文展示(含 Windows);不展示配置路径、appId、产品或密钥行。按量付费与 APP 支付禁止传该参数,最终 summary 不展示沙箱配置。沙箱区块用于用户后续测试,不宣称测试通过。
590
590
 
591
- 上线关键点按“确认上线条件 → 生产配置替换 → 产品专属支付结果确认/服务配置 → 适用收款限制”组织。生产配置包括 appId、应用私钥、对应支付宝公钥及生产网关;应用公钥与应用私钥必须配对,在支付宝侧配置,无需额外配到项目中。应用上线提醒覆盖本轮新建和用户自行准备的其他生产应用。网页/移动收款必须同时实现通知处理和交易查询;缺少 `notify_url` 时省略该字段并由服务端查单兜底,不会仅因缺少该地址而报错。允许省略 `notify_url`,但商家服务端必须可靠主动查单并完成响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复;使用通知时需公网 HTTPS、验签、关键字段校验、幂等、`success` 回写和补偿查询。仅没有公网通知地址不应判为不能上线。按量付费 summary 仅保留真实 serviceId、商户 PID/2088 等生产服务配置,不再单列 402 验付和履约回执验证提醒。最终 summary 不重复私钥格式,也不逐字段解释通知校验;这些实现和检查要求仍由原契约、代码开发 flow 及 checklist 执行,不改变自动测试脚本。
591
+ 上线关键点按“确认上线条件 → 生产配置替换 → 按量付费服务配置/适用收款限制”组织。生产配置包括 appId、应用私钥、对应支付宝公钥及生产网关;应用公钥与应用私钥必须配对,在支付宝侧配置,无需额外配到项目中。本轮新建和用户自行准备的生产应用均须已上线;summary 使用登记的站点指引。网页/移动收款必须同时实现通知处理和交易查询;缺少 `notify_url` 时省略该字段并由服务端查单兜底,不会仅因缺少该地址而报错。允许省略 `notify_url`,但商家服务端必须可靠主动查单并完成响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复;使用通知时需公网 http/https、验签、关键字段校验、幂等、`success` 回写和补偿查询。仅没有公网通知地址不应判为不能上线。按量付费 summary 仅保留真实 serviceId、商户 PID/2088 等生产服务配置,不再单列 402 验付和履约回执验证提醒。最终 summary 不重复私钥格式,不展示支付结果确认整节或通知/查单实现要求,不再单列通用生产支付验证提醒;仅产品开通仍在【当前状态】说明需要完成代码开发、部署和生产参数验收,不重复展示“后续衔接”;这些实现和检查要求仍由原契约、代码开发 flow 及 checklist 执行,不改变自动测试脚本。
592
592
 
593
593
  通用通知地址提醒和用户可选沙箱付款体验不属于缺口,不得写入 `remainingActions`/`manualVerificationItems` 影响完成判定;仅剩这些提醒时按其余适用检查实际证据确定代码结果。实际待验证项必须与部分完成状态对应,不能在 renderer 中隐藏;上游分类有误时只纠正参数,不重测项目。本轮实际尚未验证的项目在上线关键点中列出,不单列“人工待验证”段落,不把尚未验证改成已通过。应用结果与支付宝公钥保存路径仍在前一步独立交付。禁止 Agent 在模板外补第二份生产上线清单或删掉网页收款限制;生产应用私钥、账号密码、支付凭证和未脱敏通知内容不得提供给 Agent。完成态不代表已切生产配置或已可真实收款,不新增确认点。
594
594
 
@@ -14,7 +14,7 @@ AI 网页应用收款覆盖 PC 网页和手机浏览器/H5,接口固定 `alipa
14
14
  5. **用户文件**:只改已确认项目和范围,不清空或删除既有项目;“新建/重做/换一个”不是删除授权。具体删除仍遵守 Integration flow 的清单、二次确认和禁删边界。
15
15
  6. **敏感信息**:应用公钥仅由用户生成并明确提供;禁止 Agent 请求/处理生产私钥、代为生成密钥对、补全/改写公钥或添加 PEM 头尾。预发版仅允许用户明确选择方案3后,按 Onboarding flow 打开随包的本地离线页面,由用户在浏览器内自行生成并保存密钥;禁止 Agent 点击生成、读取页面密钥、读取下载文件或把页面接入联网服务。敏感值、临时 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 脚本或打印敏感配置。