@alipay/alipay-aipay 1.8.6 → 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 (59) hide show
  1. package/dist/utils/jq.js +3 -1
  2. package/package.json +3 -3
  3. package/skill/VERSION +1 -1
  4. package/skill/references/integration/flow.md +3 -3
  5. package/skill/references/integration/modules/checklist.md +4 -4
  6. 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
  7. 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
  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/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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. package/skill/references/integration/modules/interface-contract/apppay-interface-contract.md +1 -1
  17. package/skill/references/integration/modules/interface-contract/notify-url-contract.md +2 -2
  18. package/skill/references/integration/modules/interface-contract/webpay-interface-contract.md +1 -1
  19. package/skill/references/integration/modules/sandbox/sandbox-setup-guide.md +1 -1
  20. package/skill/references/normal/json/customer-messages.json +1 -1
  21. package/skill/references/normal/json/managed-jq-assets.json +1 -1
  22. package/skill/references/normal/json/policy-rules.json +1 -1
  23. package/skill/references/normal/scripts/managed_jq.mjs +1 -1
  24. package/skill/references/normal/scripts/render_customer_message.mjs +15 -21
  25. package/skill/references/normal/scripts/session_skill.mjs +3 -2
  26. package/skill/references/onboarding/flow.md +3 -3
  27. package/skill/references/onboarding/modules/scripts/mcc.sh +19 -7
  28. package/skill/references/runtime-entry.md +1 -1
  29. package/skill-pre/VERSION +1 -1
  30. package/skill-pre/references/integration/flow.md +3 -3
  31. package/skill-pre/references/integration/modules/checklist.md +4 -4
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. package/skill-pre/references/integration/modules/interface-contract/apppay-interface-contract.md +1 -1
  43. package/skill-pre/references/integration/modules/interface-contract/notify-url-contract.md +2 -2
  44. package/skill-pre/references/integration/modules/interface-contract/webpay-interface-contract.md +1 -1
  45. package/skill-pre/references/integration/modules/sandbox/sandbox-setup-guide.md +1 -1
  46. package/skill-pre/references/normal/json/customer-messages.json +1 -1
  47. package/skill-pre/references/normal/json/managed-jq-assets.json +1 -1
  48. package/skill-pre/references/normal/json/policy-rules.json +1 -1
  49. package/skill-pre/references/normal/scripts/managed_jq.mjs +1 -1
  50. package/skill-pre/references/normal/scripts/render_customer_message.mjs +15 -21
  51. package/skill-pre/references/normal/scripts/session_skill.mjs +3 -2
  52. package/skill-pre/references/normal/scripts/windows/policy.json +0 -1
  53. package/skill-pre/references/normal/scripts/windows/preflight.mjs +2 -2
  54. package/skill-pre/references/normal/scripts/windows/prepare.mjs +1 -1
  55. package/skill-pre/references/normal/scripts/windows/routing.mjs +2 -3
  56. package/skill-pre/references/normal/windows-environment.md +1 -1
  57. package/skill-pre/references/onboarding/flow.md +3 -3
  58. package/skill-pre/references/onboarding/modules/scripts/mcc.sh +19 -7
  59. package/skill-pre/references/runtime-entry.md +1 -1
package/dist/utils/jq.js CHANGED
@@ -11,7 +11,9 @@ const packageRoot = path.resolve(moduleDir, '../..');
11
11
  const manifestPath = path.join(packageRoot, 'skill', 'references', 'normal', 'json', 'managed-jq-assets.json');
12
12
  const installerPath = path.join(packageRoot, 'skill', 'references', 'normal', 'scripts', 'managed_jq.mjs');
13
13
  const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
14
- if (manifest.schemaVersion !== 1 || !/^\d+\.\d+\.\d+$/.test(manifest.version)) {
14
+ if (!manifest || !/^\d+\.\d+\.\d+$/.test(manifest.version)
15
+ || !Number.isInteger(manifest.downloadTimeoutMs) || manifest.downloadTimeoutMs <= 0
16
+ || !manifest.assets || typeof manifest.assets !== 'object' || Array.isArray(manifest.assets)) {
15
17
  throw new Error('managed jq 资产清单非法');
16
18
  }
17
19
  export const MANAGED_JQ_VERSION = manifest.version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alipay/alipay-aipay",
3
- "version": "1.8.6",
3
+ "version": "1.8.8",
4
4
  "description": "支付宝 AI 付接入 Skill 安装包 - 优先安装 Agent Skill,并在 macOS/Linux 后台准备用户级 CLI 工具",
5
5
  "type": "module",
6
6
  "bin": {
@@ -55,7 +55,7 @@
55
55
  "typescript": "^5.3.3"
56
56
  },
57
57
  "alipayAipayChannels": {
58
- "stable": "1.8.2",
59
- "pre": "1.8.5-pre"
58
+ "stable": "1.8.4",
59
+ "pre": "1.8.7-pre"
60
60
  }
61
61
  }
package/skill/VERSION CHANGED
@@ -1 +1 @@
1
- 1.8.2
1
+ 1.8.4
@@ -17,7 +17,7 @@
17
17
 
18
18
  先确认唯一项目和服务端语言,再在产品确定前执行步骤 1;匿名沙箱不传 `PRODUCT`,缺失时创建、存在时复核,待配置只阻止沙箱依赖动作。步骤 2 的完整方案可见送达前不得改代码;送达后按步骤 2 完成执行者分流,再由确定的执行者按同一产品、项目和技术栈开工,不再执行方案 receipt 或项目快照二次校验。`integration_only/full_process` 共用检查器事实和非阻塞 `integration.start.confirm`,一次只开发一个产品。网站支付/APP 支付必须实现下单、查询、退款、退款查询、关闭和异步通知;按量付费只实现 402、验付和履约确认。本流程不主动发起真实生产交易。
19
19
 
20
- 生产 `appId`、应用公钥、应用私钥和支付宝公钥必须属于同一生产应用,私钥格式必须匹配当前语言,格式转换只用支付宝官方密钥工具。网站支付/APP 支付必须同时实现通知处理和交易查询;缺少 notify_url 时下单省略该字段并由服务端主动查单兜底,不会仅因缺少该地址而报错,也不因此将本轮校验判为失败;`notify_url` 可选,生产也可省略。使用通知时验证公网 HTTPS 地址、验签、关键字段、幂等、`success` 回写及补偿查询;不使用时验证商家服务端可靠主动查单、响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复。未验证所选链路前不得宣称生产就绪。
20
+ 生产 `appId`、应用公钥、应用私钥和支付宝公钥必须属于同一生产应用,私钥格式必须匹配当前语言,格式转换只用支付宝官方密钥工具。网站支付/APP 支付必须同时实现通知处理和交易查询;缺少 notify_url 时下单省略该字段并由服务端主动查单兜底,不会仅因缺少该地址而报错,也不因此将本轮校验判为失败;`notify_url` 可选,生产也可省略。使用通知时验证公网 http/https 地址、验签、关键字段、幂等、`success` 回写及补偿查询;不使用时验证商家服务端可靠主动查单、响应验签、订单/金额/状态/归属校验、持久化幂等、后台重试及未决订单恢复。未验证所选链路前不得宣称生产就绪。
21
21
 
22
22
  ### 标准消息执行规则
23
23
 
@@ -398,7 +398,7 @@ Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝
398
398
  3. 默认分支继续启动服务,并对不带支付结果参数的 `return_url` 发起 GET 访问。这一步只验证路由和页面壳:无订单上下文时应展示安全的中性状态,不得因没有签名参数而绕过真实回跳请求的验签和订单归属校验。确认响应成功、无认证或重定向循环;单页应用直接刷新不得返回 404。
399
399
  4. 默认分支中,Agent 具备浏览器/UI 验证能力时,实际打开回跳页,确认页面非空白、无可见报错且关键状态内容正常渲染。不具备时,不向用户追加人工确认;将“回跳页 UI 人工待验证”记录到最终 checklist 的 `manualItems`,并继续提供沙箱付款入口。
400
400
 
401
- 5. 用户已明确关闭同步回跳时,不要求或猜测 `return_url`;确认 SDK 请求未传该字段,并改为验证异步通知处理代码、交易查询和商户订单查询页。如尚未部署公网 HTTPS `notify_url`,保留上线前提醒,不单独计入本轮失败或人工待验证项;生产不使用通知时需验证服务端可靠主动查单。
401
+ 5. 用户已明确关闭同步回跳时,不要求或猜测 `return_url`;确认 SDK 请求未传该字段,并改为验证异步通知处理代码、交易查询和商户订单查询页。如尚未部署公网 http/https `notify_url`,保留上线前提醒,不单独计入本轮失败或人工待验证项;生产不使用通知时需验证服务端可靠主动查单。
402
402
  6. 输出沙箱付款说明。操作顺序为:启动服务 → 用浏览器访问支付页面 → 发起支付 → 唤起沙箱收银台 → 用户从“收银台账号登录”与“安卓沙箱支付宝扫码”中二选一完成付款 → 返回商户结果页并查询展示订单状态。
403
403
 
404
404
  回跳地址无法确定、访问失败或页面出现确定错误时,必须先修正;本轮无法继续修正时进入最终 checklist 的未完成项,不得宣称网站支付代码开发完成。仅缺少浏览器/UI 证据时记录“回跳页 UI 人工待验证”,不得宣称回跳页已验证,但不阻塞沙箱付款入口交付。该体验不新增业务写操作确认点,用户暂未付款不阻止后续代码校验。
@@ -411,7 +411,7 @@ Windows 的 `CONFIG_PATH` 必须是步骤 1/3 已校验的实际本机配置绝
411
411
  以下两项按实际分支二选一,不得同时要求:
412
412
 
413
413
  - [INT.WEBPAY.RETURN_VERIFIED] 默认分支已确认实际 `return_url` 与项目路由一致,启动服务后 GET 访问通过,且已通过 Agent 浏览器/UI 验证取得页面正常渲染的证据;当前环境无法取得 UI 证据时只能记为人工待验证,不能满足本完成条件
414
- - [INT.WEBPAY.NO_RETURN_VERIFIED] 关闭分支已记录用户先前明确提出的不使用同步回跳,确认 SDK 请求未传 `return_url`,并完成异步通知处理代码、交易查询和商户订单查询页校验;缺少公网 HTTPS `notify_url` 时已保留上线前提醒;不使用通知时验证服务端可靠主动查单
414
+ - [INT.WEBPAY.NO_RETURN_VERIFIED] 关闭分支已记录用户先前明确提出的不使用同步回跳,确认 SDK 请求未传 `return_url`,并完成异步通知处理代码、交易查询和商户订单查询页校验;缺少公网 http/https `notify_url` 时已保留上线前提醒;不使用通知时验证服务端可靠主动查单
415
415
  <!-- ALIPAY_AIPAY_PRODUCT:END -->
416
416
 
417
417
  <!-- 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 用户注意事项
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`,引导用户通过 https://aipay.alipay.com/open-flow/products 选择目标产品,在“技术集成”节点获取沙箱配置;随后只处理用户针对本轮该消息提供的资料,完整时校验并写入目标项目实际使用的本地敏感配置,部分或错误时只补问对应字段。不得要求用户自行配置、理解 `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>"