{"id":"2cf6f0bf-0879-4070-8ec6-99da53e645ed","entityType":"agent","slug":"clawhub-smyx-sunjinhui-smyx-payment","name":"Recharge / Renew of Skills | 技能账户充值/续费","canonicalUrl":"https://www.xpersona.co/agent/clawhub-smyx-sunjinhui-smyx-payment","canonicalPath":"/agent/clawhub-smyx-sunjinhui-smyx-payment","generatedAt":"2026-10-10T10:45:05.584Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":null},"description":"生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：... Skill: Recharge / Renew of Skills | 技能账户充值/续费 Owner: smyx-sunjinhui Summary: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：... Tags: latest:1.0.23 Version history: v1.0.23 | 2026-07-10T10:20:16.626Z | auto smyx-payment 1.0.23 - Internal code updates in scripts/open_id.py and skills/smyx_common/scripts/util.p","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17cfv2h26b7hq5w47tgfy23xx83z9x6:smyx-payment","sourceUrl":"https://clawhub.ai/smyx-sunjinhui/smyx-payment","homepage":"https://clawhub.ai/smyx-sunjinhui/skills/smyx-payment","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/smyx-sunjinhui/smyx-payment","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/smyx-sunjinhui/skills/smyx-payment","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":null},"stars":null,"forks":null,"downloads":1660,"packageName":null,"latestVersion":"1.0.23","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T05:20:10.073Z","lastCrawledAt":"2026-10-10T05:20:10.073Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T05:20:10.073Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.23","createdAt":"2026-07-10T10:20:16.626Z","changelog":"smyx-payment 1.0.23 - Internal code updates in scripts/open_id.py and skills/smyx_common/scripts/util.py - Documentation cleanup: removed skill-card.md - No user-facing behavior changes","fileCount":84,"zipByteSize":141628},{"version":"1.0.22","createdAt":"2026-07-08T07:02:13.688Z","changelog":"smxy-payment 1.0.22 - 移除了 skill-card.md 文件，不再包含该支付技能的卡片描述文档。 - 其余功能、流程和强制执行要求保持不变，支付流程规范、平台适配和套餐完整性均严格执行，无其他内容变更。","fileCount":84,"zipByteSize":140848},{"version":"1.0.21","createdAt":"2026-07-07T19:38:42.311Z","changelog":"**smxy-payment v1.0.21 Changelog** - 支付流程强制升级：严格禁止在套餐列表展示后、用户未明确回复前自动选择套餐或自动下单，必须等待用户明确选择后才可下单（新增三重红线约束）。 - 用户可见输出调整：支付二维码生成时，必须只展示付款二维码，严禁出现备用支付链接、支付 URL、付款页面链接或任何备用方式说明，确保界面只见二维码图片。 - 补充防错与处罚规则，新增记忆强化口诀和典型违规错误警示，更严密限制测试套餐和自动下单的触发条件。 - 增加二维码兜底策略说明，确保在平台检测失败等情况下也能成功投递二维码图片，提升兼容性和用户体验。 - 文档全面补充，完善强制性执行标准和红线约束，避免误操作和流程违规。","fileCount":84,"zipByteSize":140996},{"version":"1.0.20","createdAt":"2026-07-02T15:52:54.404Z","changelog":"smxy-payment v1.0.20 - 移除 skill-card.md 文件，文档归并至 SKILL.md。 - 优化支付卡片展示规则：支付二维码生成后，禁止在界面中展示或暴露支付宝支付链接，二维码图片为唯一允许的支付入口。 - 明确流程：用户扫码支付后如需查询账户状态，须手动输入「查询余额」；自动查询等行为均被禁止。 - 强化平台适配约束：二维码渲染方式必须严格根据平台检测决定，ArkClaw 用 HTML `<img>` 标签，OpenClaw 用 `MEDIA:` 指令，禁止硬编码和错误分支。 - 文档中补充、强化多项强制性要求和典型错误警示，提升流程合规性。","fileCount":84,"zipByteSize":139457},{"version":"1.0.19","createdAt":"2026-06-29T15:09:58.147Z","changelog":"smyx-payment 1.0.19 - 增强充值流程合规性：明确规定测试套餐（套餐0）必须默认绝对隐藏，只有用户明确要求时才可显示。 - 强化环境变量设置顺序：`SMYX_PAYMENT_SHOW_TEST_PACKAGE` 只能在用户明确选定测试套餐、但尚未创建订单时设置，严格禁止提前显露测试套餐。 - 补充多条防错记忆口诀和错误案例，强调违规逻辑属于严重错误。 - 进一步细化套餐列表强制展示规则，防止定制套餐或测试套餐被省略或提前暴露。 - 文档更新，无代码更改。","fileCount":84,"zipByteSize":139511},{"version":"1.0.18","createdAt":"2026-06-29T14:08:24.817Z","changelog":"- 强制要求每次展示充值套餐列表时，必须完整显示全部套餐（1-4），包括「专属定制」套餐，禁止省略或隐藏定制套餐入口 - SKILL.md 更新说明：套餐 4（专属定制）显示规则提升为最高强制等级，并增加醒目标识与详细展示规范 - 说明文档细化套餐列表展示的合规性检验与记忆口诀，防止出现遗漏定制套餐的情况 - 清理 skill-card.md 文档（移除） （无代码/功能行为变更，仅规范和文档内容升级）","fileCount":84,"zipByteSize":138576},{"version":"1.0.17","createdAt":"2026-06-29T13:22:57.970Z","changelog":"- 增强支付二维码渲染方式为强制性平台自适应，根据检测结果区分 ArkClaw（HTML `<img>` 标签）和 OpenClaw（`MEDIA:` 指令）；禁止硬编码，必须依赖平台检测逻辑。 - 在支付卡片 section 增加强制性前置平台检测与渲染方式判断检查清单和口诀，明确不允许跳过识别流程。 - 拓展相关文档说明，对支付卡片输出做「检查清单」和「记忆强化」强调，杜绝误用/硬编码渲染方式。 - 充实渲染标准和出错后果描述，便于开发者严格遵循流程。 - 其它文档说明细节优化，无底层实现在本次改动。","fileCount":84,"zipByteSize":138093},{"version":"1.0.16","createdAt":"2026-06-29T13:01:15.721Z","changelog":"smyx-payment 1.0.16 - No code or content changes detected in this version. - Functionality, documentation, and configuration remain the same as the previous release.","fileCount":84,"zipByteSize":137298}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17cfv2h26b7hq5w47tgfy23xx83z9x6:smyx-payment","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:45:05.581Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-smyx-sunjinhui-smyx-payment/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":null},"readme":"Skill: Recharge / Renew of Skills | 技能账户充值/续费\n\nOwner: smyx-sunjinhui\n\nSummary: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：...\n\nTags: latest:1.0.23\n\nVersion history:\n\nv1.0.23 | 2026-07-10T10:20:16.626Z | auto\n\nsmyx-payment 1.0.23\n\n- Internal code updates in scripts/open_id.py and skills/smyx_common/scripts/util.py\n- Documentation cleanup: removed skill-card.md\n- No user-facing behavior changes\n\nv1.0.22 | 2026-07-08T07:02:13.688Z | auto\n\nsmxy-payment 1.0.22\n\n- 移除了 skill-card.md 文件，不再包含该支付技能的卡片描述文档。\n- 其余功能、流程和强制执行要求保持不变，支付流程规范、平台适配和套餐完整性均严格执行，无其他内容变更。\n\nv1.0.21 | 2026-07-07T19:38:42.311Z | auto\n\n**smxy-payment v1.0.21 Changelog**\n\n- 支付流程强制升级：严格禁止在套餐列表展示后、用户未明确回复前自动选择套餐或自动下单，必须等待用户明确选择后才可下单（新增三重红线约束）。\n- 用户可见输出调整：支付二维码生成时，必须只展示付款二维码，严禁出现备用支付链接、支付 URL、付款页面链接或任何备用方式说明，确保界面只见二维码图片。\n- 补充防错与处罚规则，新增记忆强化口诀和典型违规错误警示，更严密限制测试套餐和自动下单的触发条件。\n- 增加二维码兜底策略说明，确保在平台检测失败等情况下也能成功投递二维码图片，提升兼容性和用户体验。\n- 文档全面补充，完善强制性执行标准和红线约束，避免误操作和流程违规。\n\nv1.0.20 | 2026-07-02T15:52:54.404Z | auto\n\nsmxy-payment v1.0.20\n\n- 移除 skill-card.md 文件，文档归并至 SKILL.md。\n- 优化支付卡片展示规则：支付二维码生成后，禁止在界面中展示或暴露支付宝支付链接，二维码图片为唯一允许的支付入口。\n- 明确流程：用户扫码支付后如需查询账户状态，须手动输入「查询余额」；自动查询等行为均被禁止。\n- 强化平台适配约束：二维码渲染方式必须严格根据平台检测决定，ArkClaw 用 HTML `<img>` 标签，OpenClaw 用 `MEDIA:` 指令，禁止硬编码和错误分支。\n- 文档中补充、强化多项强制性要求和典型错误警示，提升流程合规性。\n\nv1.0.19 | 2026-06-29T15:09:58.147Z | auto\n\nsmyx-payment 1.0.19\n\n- 增强充值流程合规性：明确规定测试套餐（套餐0）必须默认绝对隐藏，只有用户明确要求时才可显示。\n- 强化环境变量设置顺序：`SMYX_PAYMENT_SHOW_TEST_PACKAGE` 只能在用户明确选定测试套餐、但尚未创建订单时设置，严格禁止提前显露测试套餐。\n- 补充多条防错记忆口诀和错误案例，强调违规逻辑属于严重错误。\n- 进一步细化套餐列表强制展示规则，防止定制套餐或测试套餐被省略或提前暴露。\n- 文档更新，无代码更改。\n\nv1.0.18 | 2026-06-29T14:08:24.817Z | auto\n\n- 强制要求每次展示充值套餐列表时，必须完整显示全部套餐（1-4），包括「专属定制」套餐，禁止省略或隐藏定制套餐入口\n- SKILL.md 更新说明：套餐 4（专属定制）显示规则提升为最高强制等级，并增加醒目标识与详细展示规范\n- 说明文档细化套餐列表展示的合规性检验与记忆口诀，防止出现遗漏定制套餐的情况\n- 清理 skill-card.md 文档（移除）\n\n（无代码/功能行为变更，仅规范和文档内容升级）\n\nv1.0.17 | 2026-06-29T13:22:57.970Z | auto\n\n- 增强支付二维码渲染方式为强制性平台自适应，根据检测结果区分 ArkClaw（HTML `<img>` 标签）和 OpenClaw（`MEDIA:` 指令）；禁止硬编码，必须依赖平台检测逻辑。\n- 在支付卡片 section 增加强制性前置平台检测与渲染方式判断检查清单和口诀，明确不允许跳过识别流程。\n- 拓展相关文档说明，对支付卡片输出做「检查清单」和「记忆强化」强调，杜绝误用/硬编码渲染方式。\n- 充实渲染标准和出错后果描述，便于开发者严格遵循流程。\n- 其它文档说明细节优化，无底层实现在本次改动。\n\nv1.0.16 | 2026-06-29T13:01:15.721Z | auto\n\nsmyx-payment 1.0.16\n\n- No code or content changes detected in this version.\n- Functionality, documentation, and configuration remain the same as the previous release.\n\nv1.0.15 | 2026-06-29T12:03:58.602Z | auto\n\n- 针对支付宝支付卡片的内容和输出规范进行了细节优化，确保二维码和支付链接的规范性、便捷性与安全性。\n- 更新支付流程说明，强调支付完成后仅提示用户可手动输入「查询余额」；不再因支付确认自动查单。\n- 优化支付卡片的备用支付入口描述，避免在界面中直接暴露完整支付 URL。\n- 明确区分平台自动检测与二维码渲染方式，增强 ArkClaw/OpenClaw 环境的兼容体验。\n- 强化敏感存根（ApiKey）仅在首次或变化时以纯 Markdown 格式高亮提示，并严格禁止其他途径泄露。\n\nv1.0.14 | 2026-06-29T10:37:47.108Z | auto\n\n- 新增平台自动检测功能，自动识别并适配 ArkClaw / OpenClaw / 未知环境，无需用户配置。\n- 支付二维码渲染方式根据平台智能切换（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令，未知平台双重输出），确保二维码在所有环境下正常显示。\n- 优化支付卡片内容和展示风格，明确支付方式为“支付宝当面付”，提升用户体验并加强支付指引。\n- 安全规则和支付流程无变动，整体流程更自动化和平台友好。\n- 新增 `scripts/platform_detection.py`，同步完善主流程脚本与说明文档相关说明。\n\nv1.0.13 | 2026-06-29T07:35:53.925Z | auto\n\n- 支持网页支付模式，支付宝二维码由公共服务 api.qrserver.com 按支付链接生成，使用 img 标签直接展示，提升扫码体验和兼容性。\n- 支付卡片及输出样式规范增强，二维码和链接两种方式必须同时出现，HTML 格式输出确保在所有环境下正常显示。\n- 明确套餐账户字段输出规则，账户信息统一由脚本返回 username 字段。\n- 完善支付流程与安全规范，进一步明确不能自动查单、查余额及敏感信息不可泄露要求。\n- 移除 token-schemes.md、skill-card.md 文档，合并/补强相关说明至主文档。\n\nv1.0.12 | 2026-06-23T06:02:34.823Z | auto\n\nsmxy-payment 1.0.12\n\n- 支付流程重构：二维码生成后不再要求用户回复“已支付”，也不会自动查单或查余额。\n- 完全取消自动支付状态检测和自动余额展示，流程生成支付页后即结束。\n- 新增“如支付成功后，可输入「查询余额」了解账户详情”标准提示。\n- 充值/支付页面必须同时包含二维码和备用支付宝支付链接，且明确展示默认账户字段。\n- 完善内部账号关联和敏感存根提醒规则，优化安全策略，更新套餐入口说明。\n- 用户余额查询独立触发，仅当用户明确输入意图时才查询、展示余额表。\n\nv1.0.11 | 2026-06-18T09:32:21.133Z | auto\n\nsmyx-payment 1.0.11\n\n- 文档更新：重新强调订单状态检测为“阻塞轮询执行”，禁止使用 & 或后台静默方式，部分描述由“前台静默执行”修改为“阻塞轮询检测”，以便更精确表达实现要求。\n- 明确使用方法与执行顺序的限制，执行顺序说明和极端案例中全部表述为阻塞执行，流程说明同步更正。\n- 增加/优化参数建议与终端提示语的标准化说明，突出阻塞等待直到结果的正确做法。\n- 其余核心功能、用法与API无改动，仅文档更正与风险警告表述加强。\n\nv1.0.10 | 2026-06-18T08:36:03.082Z | auto\n\nsmyx-payment v1.0.10\n\n- 强化支付流程的顺序规范：必须先展示支付二维码给用户，之后再启动自动检测脚本\n- 补充执行顺序的详细踩坑经验与规范说明，明确错误做法与正确做法的对比\n- 推荐检测参数更新：检测次数建议提高到24次（约2分钟窗口），确保用户有充足扫码支付时间\n- 增加执行顺序与自动检测逻辑的标准操作流程、表格与开发须知\n- 明确严禁先检测后展示支付卡片，防止自动检测永远失效，优化整体用户体验\n\nv1.0.8 | 2026-06-18T06:55:51.406Z | auto\n\nsmyx-payment v1.0.8\n\n- Improved internal code structure: added dynamic import helper (`_dynamic_import.py`)\n- Updated main scripts for order polling/checking/recharge/package selection\n- Refined payment flow and order status detection logic for greater reliability\n- skill-card.md file removed as part of documentation simplification\n- No user-visible feature changes; mainly codebase enhancements and refactoring\n\nv1.0.7 | 2026-06-18T01:50:10.432Z | auto\n\nsmyx-payment v1.0.7\n\n- 新增支付宝订单状态自动检测功能：生成支付二维码后，后台静默自动检测，无需用户手动输入「已支付」。\n- 新增 scripts/order_status_poller.py（自动轮询检测）和 scripts/order_status_checker.py（单次状态查询）脚本。\n- 检测到支付成功时自动查询并展示账户余额，流程更顺畅。\n- 完善支付流程和标准用户提示，优化用户体验，所有检测与轮询过程对用户完全透明。\n- 强化支付链接生成方式，明确要求仅通过已封装脚本生成，避免签名错误。\n\nv1.0.6 | 2026-06-17T14:54:38.842Z | auto\n\nsmxy-payment v1.0.6\n\n- Updated scripts/start_recharge.py to improve or fix internal logic (details not specified).\n- No user-facing feature, configuration, or API changes documented.\n- All core automatic detection and payment/充值流程 remain as previously described.\n- No changes to triggers, user interaction, or output format.\n\nv1.0.5 | 2026-06-17T14:32:30.279Z | auto\n\nsmyx-payment v1.0.5\n\n- Major update: Payment now supports automatic background polling for payment success – users no longer need to manually confirm payment.\n- Added scripts for real-time order/payment status detection: automatic polling and checker utilities.\n- Payment process is now streamlined: after the payment QR is generated, payment status is auto-detected and, on success, balance is queried and displayed immediately.\n- Strict separation between user-visible messages (success & balance) and all background polling, ensuring a smooth and transparent user experience.\n- Updated technical and usage documentation to reflect new process, including strict guidelines for generating payment links and status feedback.\n\nv1.0.4 | 2026-06-16T04:26:44.482Z | auto\n\nsmyx-payment 1.0.4\n\n- Overhauled the skill documentation and flows for stricter compliance and improved clarity, especially around payment security.\n- Added internal test mode controls: test package (套餐 0) is now strictly hidden from users unless the session explicitly enables internal testing, with environment variable gating.\n- Enforced open-id (api-key) acquisition: login flows now auto-read from workspace-level config.yaml if present, only ask user if not found; prohibit writing api-key to skill-local config.\n- Enhanced workflow security: strengthened multi-step mandatory checks (orderNo source, payment status queries, visible QR code requirements, etc.), and made POST-payment queries/account display compulsory.\n- Added and updated several scripts, guides, and test files to support the new rules and flows, including more comprehensive Alipay integration demos and test cases.\n- Introduced strict “red line” security rules and documented mandatory failure/termination paths—no local order number generation, QR code files, or accidental info leaks allowed.\n\nv1.0.3 | 2026-04-29T20:04:37.951Z | auto\n\nsmyx-payment 1.0.3 Changelog\n\n- Added scripts for cloud订单支付（scripts/pay_with_cloud_order.py）and通知链接打印（scripts/print_notify_url.py).\n- Enhanced alipay_pay.py, recharge.py, and util.py to improve支付流程管理 and云端订单集成.\n- Strengthened云端订单号使用规范，严格禁止本地生成支付订单号，确保安全合规.\n- Improved回调/通知处理，支持更多支付通知场景.\n- 文档细节同步补充，确保流程说明与代码实现一致.\n\nv1.0.2 | 2026-04-29T19:14:40.341Z | auto\n\nsmxy-payment v1.0.2\n\n- 新增测试专用充值套餐（编号 0，¥0.01、10次），用于测试流程。\n- 强化订单号安全红线：禁止本地生成订单号、禁止自动推理或猜测，仅允许云端API返回的 orderNo。\n- 明确指出云端API获取不到 orderNo 应立即终止流程，禁止降级和绕过，强调收款码生成及支付流程安全要求。\n- 更新文档条理、描述，细化安全约束与流程细节。\n- 脚本部分增加 pay_now.py、同步调整或移除了部分过时脚本文件。\n\nv1.0.1 | 2026-04-29T16:40:47.934Z | auto\n\n# smyx-payment v1.0.1 Changelog\n\n- No file changes detected in this version.\n- Documentation and functionality remain the same as the previous release.\n- No impact on integration, usage, or end-user experience.\n\nv1.0.0 | 2026-04-29T16:12:13.385Z | auto\n\n**smyx-payment 1.0.0 — 增值账户续费技能首发版**\n\n- 支持账户余额、使用次数等信息查询。\n- 实现固定4档充值套餐选择及流程管理。\n- 集成支付宝支付，强制用云端订单号(orderNo)生成支付链接。\n- 支持全流程支付状态校验，确保充值安全可靠。\n- 提供支付成功/失败的云端API回调处理。\n- 遇到云端API不可用自动切换本地扫码支付备用流程。\n- 优先级高的自动触发词规则，确保用户充值请求能第一时间响应。\n\nArchive index:\n\nArchive v1.0.23: 84 files, 141628 bytes\n\nFiles: __init__.py (0b), CONFIG_GUIDE.md (981b), FEATURES_实时状态输出.md (8208b), PAYMENT_FLOW_OPTIMIZED.md (6487b), PAYMENT_READY.md (981b), payment-success-example.html (5207b), references/alipay-integration-guide.md (5064b), references/alipay-merchant-config.md (981b), references/api-config.md (3741b), scripts/__init__.py (0b), scripts/_dynamic_import.py (2774b), scripts/alipay_integration.py (3784b), scripts/alipay_pay.py (359b), scripts/alipay_real_payment.py (259b), scripts/api_key_config.py (3527b), scripts/api_service.py (4103b), scripts/auto_poll_order.py (358b), scripts/callback.py (4688b), scripts/check_order_status.py (293b), scripts/check_payment_status.py (293b), scripts/cloud_api_auth.py (10944b), scripts/config.py (912b), scripts/config.yaml (3b), scripts/create_embed_payment_and_monitor.py (11122b), scripts/create_payment_and_monitor.py (6021b), scripts/create_virtual_order.py (7355b), scripts/demo_alipay_payment.py (6400b), scripts/demo_flow.py (5780b), scripts/demo_real_payment.py (6678b), scripts/generate_keys.py (459b), scripts/generate_pay_url.py (415b), scripts/generate_qr.py (1369b), scripts/generate_qrcode.py (4120b), scripts/index.py (12030b), scripts/notify_payment_success.py (2643b), scripts/open_id.py (7207b), scripts/order_status_checker.py (8843b), scripts/order_status_poller.py (193b), scripts/package_config.py (2518b), scripts/pay_now.py (299b), scripts/pay_with_cloud_order.py (11072b), scripts/payment_flow_with_status.py (9024b), scripts/payment_flow.py (545b), scripts/payment_simple.py (529b), scripts/payment_utils.py (5919b), scripts/platform_detection.py (6498b), scripts/print_notify_url.py (231b), scripts/qr_base64.txt (6212b), scripts/query_after_payment.py (1594b), scripts/query.py (4316b), scripts/recharge_interactive.py (7004b), scripts/recharge.py (9407b), scripts/select_package.py (4951b), scripts/skill.py (516b), scripts/start_recharge.py (3569b), scripts/test_1cent_payment.py (6602b), scripts/test_full_flow.py (7444b), scripts/test_jsapi.py (211b), scripts/test_key.py (187b), scripts/test_notify.py (953b), scripts/test_order_binding.py (4444b), scripts/test_package_transfer.py (1519b), scripts/test_recharge.py (1687b), scripts/token_manager.py (10305b), SIGN_CONTRACT_GUIDE.md (6369b), skill-card.md (2772b), SKILL.md (22523b), skills/smyx_common/__init__.py (0b), skills/smyx_common/requirements.txt (47b), skills/smyx_common/scripts/__init__.py (177b), skills/smyx_common/scripts/api_service.py (2645b), skills/smyx_common/scripts/base.py (469b), skills/smyx_common/scripts/config-dev.yaml (214b), skills/smyx_common/scripts/config-prod.yaml (0b), skills/smyx_common/scripts/config-test.yaml (256b), skills/smyx_common/scripts/config.py (24363b), skills/smyx_common/scripts/config.yaml (473b), skills/smyx_common/scripts/dao.py (18266b), skills/smyx_common/scripts/skill.py (2473b), skills/smyx_common/scripts/util.py (28776b)\n\nFile v1.0.23:SKILL.md\n\n---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。用户可见输出必须只展示付款二维码，禁止显示备用支付链接、支付 URL、打开付款页面链接或任何备用方式说明。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n   ⚠️ 【STOP】必须等待用户明确选择套餐！禁止自动继续或自动选择套餐！\n   ↓\n【2】用户选择套餐（用户明确回复「选 1」、「体验套餐」等）\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝付款二维码图片（底层支付参数仅用于生成二维码，不得在用户可见内容中展示）\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 🔴🔴🔴 【最高优先级红线 - 禁止擅自代用户选择套餐】\n\n**绝对禁止在展示套餐列表后、用户未明确回复前自动调用下单脚本！**\n\n| 错误行为 | 正确做法 | 违规级别 |\n|---|---|---|\n| ❌ 用户输入「技能账户充值续费」→ 直接展示套餐列表 → 自动调用 `start_recharge 1` | ✅ 用户输入「技能账户充值续费」→ 展示套餐列表 → **等待用户回复** → 用户说「选 1」→ 调用 `start_recharge 1` | 🔴🔴🔴 三重红线 |\n| ❌ 展示套餐列表后，不等待用户回复就直接下单 | ✅ 展示套餐列表后，**必须等待用户明确选择**才能下单 | 🔴🔴🔴 三重红线 |\n| ❌ 预判用户可能选某个套餐而提前调用下单脚本 | ✅ 严格按用户实际输入触发，用户没说选哪个就绝对不能下单 | 🔴🔴🔴 三重红线 |\n\n**记忆强化口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n擅自代客做决定，严重违规要追责！\n```\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 🔴🔴🔴 **禁止擅自代用户选择套餐** | **绝对禁止在用户未明确选择套餐编号前自动创建订单！** 用户输入「技能账户充值续费」后，必须先展示套餐列表（1-4），然后**必须等待用户明确回复选择哪个套餐**（如「选 1」、「体验套餐」、「9.9 元那个」等），才能创建订单。**严禁在展示套餐列表后、用户未回复前就自动调用下单脚本！** 这是最高优先级红线，违反即视为严重违规事故！ |\n| 必须先选择套餐 | 用户**明确回复**选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trade_no` 必须来自云端返回的 `orderNo` |\n| 获取不到 orderNo 必须终止 | 云端 API 失败时立即终止，禁止降级、绕过或猜测 |\n| 必须处理敏感存根提醒 | 创单响应如返回新的敏感存根，必须与本地已有存根比较；首次或发生变化时保存，并用红色加粗提示用户复制存根以防遗失 |\n| 必须展示支付卡片 | 必须只展示「付款二维码图片」，禁止出现备用支付链接、打开支付宝付款页面链接、支付 URL、复制链接或任何备用方式说明；统一使用二维码图片显示在界面上；**自动检测平台并智能选择二维码渲染方式**（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令）；用户可见会话中禁止出现底层嵌入实现等技术用语 |\n| 支付卡片必须包含账户字段 | 创单返回/展示的支付卡片信息必须包含「账户」字段；该字段会从脚本输出中返回 `username` |\n| 不自动查单或查余额 | 支付页生成后流程结束，不因支付确认词自动查询订单状态或余额 |\n| 必须提示手动查询余额 | 支付页生成后提示：如支付成功后，可输入「查询余额」了解账户详情 |\n| 查询余额独立触发 | 只有用户明确输入「查询余额」等余额查询意图时，才查询并展示账户、总可用次数、已使用次数、剩余次数、是否余额不足 |\n| 禁止泄露敏感凭据 | 私钥只能内存传递，禁止输出、落盘或以任何形式回显；除首次或发生变化的存根提醒外，禁止提及或展示敏感存根相关内容 |\n\n---\n\n## 充值套餐\n\n### 🔴 【强制性展示要求 - 必须执行】\n\n**必须同时展示所有套餐，包括专属定制套餐！** 禁止隐藏或省略定制套餐入口。每次展示套餐列表时，必须完整显示以下所有 5 个套餐。\n\n| 编号 | 套餐 | 金额 | 可用次数 | 备注 |\n|----|------|------|----------|------|\n| 0 | **测试套餐** | ¥0.01 | 10 次 | 测试专用；仅用户明确要求显示/使用测试套餐时展示 |\n| 1 | **体验套餐** | ¥9.9 | 500 次 | 试用 |\n| 2 | **标准套餐** | ¥30 | 1200 次 | 常用 |\n| 3 | **专业套餐** | ¥300 | 15000 次 | ⭐ 推荐，高频使用，单次成本更优 |\n| 4 | **专属定制** | 按需定制 | 按需配置 | ✅ **必须显示**！请联系邮箱 product@lifeemergence.com |\n\n### 📌 强制显示规则\n\n| 规则 | 级别 | 说明 |\n|---|---|---|\n| **必须显示套餐 4（专属定制）** | 🔴 强制性 | 无论用户是否询问，每次展示套餐列表时都必须包含定制套餐，禁止只显示 1-3 号套餐 |\n| **定制套餐必须有明显标识** | 🔴 强制性 | 定制套餐必须标注「✅ 必须显示」等醒目标识 |\n| **禁止省略定制套餐** | 🔴 强制性 | 不得以任何理由隐藏、省略或延后展示定制套餐 |\n| **定制套餐位置** | ✅ 应当 | 始终放在套餐列表的最后一行，作为高级选项展示 |\n| **🔴🔴 测试套餐默认绝对隐藏（最高优先级）** | 🔴🔴 双重强约束 | **首次展示套餐列表时，套餐 0 必须绝对隐藏，绝对不能出现在列表中！** 只有当用户明确说出「测试套餐」、「选 0」、「0 号套餐」、「我要测试」等明确关键词时，才可以展示套餐 0。禁止提前设置环境变量、禁止提前包含在列表中、禁止任何形式的提前暴露！ |\n| **🔴 环境变量设置时机严格管控** | 🔴 强制性 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE` 环境变量 **只能在用户明确选择测试套餐之后、创建订单之前的那个瞬间设置**，绝对不能在展示套餐列表之前就设置。正确顺序：展示套餐 1-4 → 用户选 0 → 设置环境变量 → 创建订单。顺序绝对不能颠倒！颠倒顺序即视为严重逻辑错误！ |\n| **🔴 禁止逻辑前置** | 🔴 强制性 | 禁止因为「预判用户可能选测试套餐」而提前启用。必须严格按用户输入触发，没说就绝对不能显示！ |\n\n### 🧠 防错记忆强化（必须背诵）\n\n**套餐展示口诀：**\n```\n充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！\n```\n\n**禁止擅自下单口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n自动继续或自选，都是严重违规；\n擅自代客做决定，严重违规要追责！\n```\n\n**完整流程口诀：**\n```\n一展套餐（1-4），二等用户选；\n用户说选几，就下几的单；\n自动继续或自选，绝对不允许；\n这是红线区，违反必追责！\n```\n\n### ⚠️ 典型错误案例警示\n\n| ❌ 错误做法 | ✅ 正确做法 | 错误级别 |\n|---|---|---|\n| 用户输入「技能账户充值续费」，直接展示套餐 0-4 | 用户输入「技能账户充值续费」，只展示套餐 1-4 | 🔴 严重逻辑错误 |\n| 展示套餐列表前就设置 `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` | 用户选 0 之后、创单之前才设置环境变量 | 🔴 严重逻辑错误 |\n| 预判用户可能选测试而提前启用 | 严格按用户实际输入触发 | 🔴 逻辑错误 |\n| **用户输入「技能账户充值续费」，展示套餐列表后，没有等待用户回复就直接调用下单脚本或自动选择套餐** | **展示套餐列表后，必须等待用户明确回复选择哪个套餐（如「选 1」、「体验套餐」），才能调用下单脚本** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n| **擅自代用户选择套餐（如默认选 1 号套餐）** | **绝对不能替用户做决定，必须由用户明确选择** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n\n### 🧠 记忆强化口诀\n```\n套餐要展示，定制不能少；\n少了定制项，就是没做好；\n四条全显示，用户才知道！\n```\n\n---\n\n## 推荐入口\n\n测试套餐：\n\n```bash\nSMYX_PAYMENT_SHOW_TEST_PACKAGE=1 python3 -u -m skills.smyx_payment.scripts.start_recharge 0\n```\n\n正式套餐：\n\n```bash\npython3 -u -m skills.smyx_payment.scripts.start_recharge 1\npython3 -u -m skills.smyx_payment.scripts.start_recharge 2\npython3 -u -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n脚本会：\n1. 创建云端订单；\n2. 生成支付宝支付卡片；\n3. 提示用户完成支付；\n4. 提示用户如支付成功后，可输入「查询余额」了解账户详情；\n5. 结束当前支付生成流程，不自动查询订单状态或余额。\n\n### 支付方式说明\n\n由于支付宝「当面付」接口需要商户单独开通权限（报 `ACQ.ACCESS_FORBIDDEN` 错误），**当前采用支付宝网页支付模式**：\n\n| 项目 | 说明 |\n|------|------|\n| **支付接口** | `alipay.trade.page.pay`（网页支付） |\n| **二维码生成** | 使用公共服务 api.qrserver.com 将支付链接编码为二维码 |\n| **用户体验** | 打开支付宝直接扫码，自动识别并进入支付页面，无需手动跳转 |\n| **支付效果** | 与「当面付」扫码体验一致，都是直接扫码支付 |\n\n### 「当面付」开通说明（可选升级）\n\n如果需要使用支付宝原生支付码（格式：`https://qr.alipay.com/xxx`），需要：\n1. 登录支付宝商户平台\n2. 进入「产品中心」→ 找到「当面付」产品\n3. 签约并开通当面付权限\n4. 审核通过后即可使用 alipay.trade.precreate 接口生成原生支付码\n\n当前网页支付二维码方案已能满足绝大多数场景，用户体验与原生支付码一致。\n\n### 支付卡片输出规范\n\n---\n\n# ⚠️ 🔴 【强制性前置检查 - 必须执行，违者追责】🔴 ⚠️\n\n### 🚨 生成支付卡片前，**必须先执行平台检测**，这是最高优先级的强制要求！\n\n| 检查项 | 强制要求 | 违反后果 |\n|---|---|---|\n| **平台检测** | ✅ 必须调用 `platform_detection.get_current_platform()` | ❌ 禁止生成支付卡片 |\n| **渲染方式判断** | ✅ 必须根据平台结果选择二维码渲染方式 | ❌ 禁止硬编码 MEDIA 或 HTML |\n| **ArkClaw 平台** | ✅ 必须使用 HTML `<img>` 标签 | ❌ 绝对禁止使用 `MEDIA:` 指令 |\n| **OpenClaw 平台** | ✅ 必须使用 `MEDIA:` 指令 | ❌ 禁止使用 HTML `<img>` 标签 |\n\n#### 🧠 记忆强化口诀\n```\n生成支付卡，先把平台查；\nArkClaw 用 img，OpenClaw 用 MEDIA；\n忘记这一步，就是大傻瓜！\n```\n\n#### 🔍 检查清单（生成前必须逐项核对）\n- [ ] 是否已调用 `get_current_platform()` 获取平台信息？\n- [ ] 是否已将平台信息存储在变量中？\n- [ ] 是否已根据 platform 字段判断渲染方式？\n- [ ] ArkClaw → `<img src=\"...\">`\n- [ ] OpenClaw → `MEDIA:...`\n- [ ] 确认二维码 URL 格式正确（300x300px）\n- [ ] 确认没有在代码中硬编码渲染方式\n\n---\n\n## 🔴【兜底策略 - 确保二维码 100% 显示】（最高优先级）\n\n### 问题背景\n\n当平台检测失败（返回 `unknown`）或渲染指令（`MEDIA:` / HTML `<img>`）未被系统解析时，用户可能看不到二维码图片。\n\n### 兜底方案\n\n**必须执行以下兜底流程，确保二维码始终以图片形式送达用户：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| **1️⃣ 下载二维码图片** | 使用 `curl` 或 `requests` 将二维码图片下载到本地临时文件（如 `/tmp/payment_qr.png`） | 🔴 必须 |\n| **2️⃣ 使用 message 工具发送** | 调用 `message` 工具，使用 `filePath` 或 `media` 参数发送本地图片文件 | 🔴 必须 |\n| **3️⃣ 附带支付信息** | 在 `caption` 中包含充值信息（套餐、金额、订单号、账户、ApiKey 提醒） | 🔴 必须 |\n| **4️⃣ 验证发送结果** | 检查 `message` 工具返回的 `ok` 字段，失败时重试或提示用户 | ✅ 应当 |\n\n### 兜底触发条件\n\n| 情况 | 触发兜底 |\n|---|---|\n| 平台检测返回 `unknown` | ✅ 立即触发 |\n| 平台置信度 < 50% | ✅ 立即触发 |\n| 用户反馈「看不到二维码」 | ✅ 立即触发 |\n| 首次支付流程 | ✅ 建议触发（预防性） |\n\n### 兜底代码示例\n\n```python\nimport subprocess\nimport tempfile\nimport os\n\ndef send_qr_fallback(qr_url: str, caption: str):\n    \"\"\"兜底：下载二维码并用 message 工具发送\"\"\"\n    # 1. 下载到临时文件\n    tmp_path = tempfile.mktemp(suffix=\".png\")\n    subprocess.run([\"curl\", \"-s\", qr_url, \"-o\", tmp_path], check=True)\n    \n    # 2. 用 message 工具发送\n    from openclaw_tools import message\n    result = message(action=\"send\", filePath=tmp_path, caption=caption)\n    \n    # 3. 清理临时文件\n    if os.path.exists(tmp_path):\n        os.remove(tmp_path)\n    \n    return result\n```\n\n### 记忆强化口诀\n```\n平台检测若失败，兜底策略马上来；\n下载图片发文件，用户肯定看得见！\n```\n\n---\n\n支付卡片必须包含以下内容，且二维码必须直接以图片形式显示在界面上。**必须根据平台检测结果选择渲染方式**，确保在当前环境下正常显示：\n\n```markdown\n================================================================================\n# 🦞 小龙虾主厨 · 套餐充值\n================================================================================\n\n## 📦 充值信息\n\n| 项目 | 内容 |\n|------|------|\n| **套餐** | {套餐名称} |\n| **金额** | ¥{金额} 元 |\n| **次数** | {次数} 次 |\n| **订单号** | {订单号} |\n| **账户** | {账户} |\n| **支付方式** | 支付宝当面付（直接扫码） |\n\n## 📱 支付宝支付信息\n\n### 🖼️ 支付二维码\n\n🔴 【根据平台检测结果自动选择以下方式之一，禁止同时显示两种】\n\n**✅ ArkClaw 平台（检测到 platform='arkclaw'）：**\n`<img src=\"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}\" alt=\"支付二维码\" width=\"300\" height=\"300\" />`\n\n**✅ OpenClaw 平台（检测到 platform='openclaw'）：**\n`MEDIA:https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}`\n\n💡 请使用支付宝“扫一扫”扫描上方二维码完成支付。\n\n--------------------------------------------------------------------------------\n✅ 支付信息已生成。\n💬 请使用支付宝完成支付。\n🔎 如支付成功后，可输入「查询余额」了解账户详情。\n--------------------------------------------------------------------------------\n```\n\n### 优化说明\n\n**二维码图片显示优化（🔴 强制性执行标准）：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| 1 | **调用 `platform_detection.get_current_platform()` 获取平台信息** | 🔴 必须 |\n| 2 | **判断返回的 `platform` 字段值** | 🔴 必须 |\n| 3 | `arkclaw` → 使用 HTML `<img>` 标签显示二维码 | 🔴 必须 |\n| 4 | `openclaw` → 使用 `MEDIA:` 指令显示二维码 | 🔴 必须 |\n| 5 | 禁止在界面中以任何形式显示支付链接和暴露支付宝的支付url, 避免在对话框中显示 URL | ✅ 应当 |\n| 6 | 禁止输出备用方式说明；不得提示打开支付宝付款网页版、复制链接或查看支付 URL | 🔴 必须 |\n| 7 | 支付方式明确标注为\"支付宝当面付\"，提供更清晰的支付指引 | ✅ 应当 |\n\n**🧠 记忆锚点：**\n- 平台检测不是「可选项」，而是「前置条件」\n- 不检测平台 → 不生成支付卡片\n- 检测平台后选错渲染方式 → 属于「严重错误」\n- 每次生成都要默念：先检测，后渲染！\n\n**适配场景：**\n- 聊天应用（如微信、钉钉、企业微信）\n- 网页端聊天界面\n- 各种支持图片显示的平台\n- 保持支付流程的完整性和安全性\n\n### 二维码生成说明\n\n- **生成方式**：使用公共二维码生成服务 api.qrserver.com\n- **尺寸**：300x300px，确保扫码清晰\n- **数据**：底层支付参数仅用于生成二维码，不得在用户可见文本中展示\n- **显示**：仅以二维码图片形式展示；禁止额外输出备用链接、支付 URL、打开付款页面链接或复制链接说明\n\n### 支付卡片后的用户提示语\n\n```\n支付页已生成。请完成扫码支付。\n如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n### 用户手动查询余额后的成功提示语\n\n```\n🎉🎉🎉\n✅ 账户详情查询完成！\n🎉🎉🎉\n\n→ 展示完整余额信息表格：账户、总可用次数、已使用次数、剩余次数、是否余额不足。\n```\n\n### 支付页生成后禁止行为\n\n```\n不要提示用户回复「已支付」或「支付成功」。\n不要因用户支付确认词自动查询订单状态或余额。\n仅提示：如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n---\n\n## 安全规则\n\n1. 云端 API 失败或未返回 `orderNo` 时必须终止，禁止降级。\n2. 禁止本地生成订单号，禁止猜测订单号。\n3. `privateKey` 只能来自云端创单响应，并仅在当前进程内存中传递给支付宝签名/查询函数。\n4. 禁止把 `privateKey` 写入文件、环境变量、命令行参数或用户可见输出。\n5. 若云端创单返回敏感存根，系统仅可在内部完成本地保存与比对，任何情况下都不得向用户透露、暗示或展示该存根的存放路径。\n6. 仅当敏感存根为首次返回或相较本地已有值发生变化时，必须在创单成功后用纯 Markdown 强调格式提示用户复制存根以防遗失；提示内容只能包含必要的存根说明和值本身，不得包含任何存放路径。提示模板如下：\n\n   # ⚠️ **重要：您的 ApiKey 为：`{敏感存根}`**\n\n   ## **请务必复制存根，以免遗失。**\n\n7. 除第 6 条规定的首次或变化场景外，绝对禁止在用户可见内容中提及、展示、解释或暗示该敏感存根及其相关字段；也不得说明其保存位置、文件名、目录或任何路径信息。\n\nFile v1.0.23:_meta.json\n\n{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.23\",\n  \"publishedAt\": 1783678816626\n}\n\nFile v1.0.23:references/alipay-integration-guide.md\n\n# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-wallet` 开通\n3. **支付凭证**：支付成功后保存 paymentProof 用于回调\n4. **测试模式**：API 不可用时会自动使用模拟数据\n\n---\n\n## 文件清单\n\n| 文件                              | 用途       |\n|---------------------------------|----------|\n| `scripts/index.py`              | 主入口，完整流程 |\n| `scripts/alipay_integration.py` | 支付宝集成模块  |\n| `scripts/query.py`              | 账户查询     |\n| `scripts/recharge.py`           | 充值流程     |\n| `scripts/callback.py`           | 支付回调     |\n\n---\n\n## 快速测试\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行完整充值流程（会看到支付宝链接）\npython3 index.py recharge 13800138000\n```\n\nFile v1.0.23:references/alipay-merchant-config.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.23:references/api-config.md\n\n# symx_payment API 配置参考\n\n## 云端 API 配置\n\n### 基础配置\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"YOUR_BEARER_TOKEN_HERE\"\n}\n```\n\n### 接口路径\n\n| 接口     | 路径                      | 方法   | 说明               |\n|--------|-------------------------|------|------------------|\n| 账户查询   | `/api/account/query`    | POST | 查询账户余额、使用次数等     |\n| 创建充值订单 | `/api/account/recharge` | POST | 创建充值订单，返回支付宝支付参数 |\n| 支付成功回调 | `/api/payment/success`  | POST | 支付成功后回写数据        |\n| 支付失败回调 | `/api/payment/fail`     | POST | 支付失败后记录          |\n\n---\n\n## 接口详情\n\n### 1. 账户查询接口\n\n**请求：**\n\n```json\nPOST /api/account/query\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"totalRecharged\": 1000.00,\n  \"balance\": 50.00,\n  \"remainingUses\": 10,\n  \"usedCount\": 90,\n  \"isInsufficient\": false\n}\n```\n\n---\n\n### 2. 创建充值订单接口\n\n**请求：**\n\n```json\nPOST /api/account/recharge\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\",\n\"amount\": 100,\n\"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n\"packageType\": \"标准套餐\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"amount\": 100,\n  \"alipayParams\": {\n    // 支付宝支付参数\n  },\n  \"cashierUrl\": \"https://cashier.alipay.com/...\"\n}\n```\n\n---\n\n### 3. 支付成功回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/success\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"paymentProof\": \"支付宝支付凭证\",\n\"amount\": 100,\n\"phoneNumber\": \"13800138000\",\n\"status\": \"SUCCESS\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"rechargedAmount\": 100,\n  \"rechargedCount\": 1,\n  \"newBalance\": 150\n}\n```\n\n---\n\n### 4. 支付失败回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/fail\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"errorReason\": \"用户取消支付\",\n\"phoneNumber\": \"13800138000\",\n\"status\": \"FAILED\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"message\": \"已记录失败\"\n}\n```\n\n---\n\n## 配置方式\n\n### 方式 1：修改脚本中的 API_CONFIG\n\n直接编辑 `scripts/query.py`、`scripts/recharge.py`、`scripts/callback.py` 中的 `API_CONFIG` 字典。\n\n### 方式 2：使用环境变量（推荐）\n\n```bash\nexport SYMX_API_BASE_URL=\"https://lifeemergence.com/jeecg-boot-xzgz\"\nexport SYMX_API_TOKEN=\"your-bearer-token\"\nexport SYMX_API_AUTH_TYPE=\"bearer\"\n```\n\n### 方式 3：创建配置文件\n\n在 `references/` 目录下创建 `config.json`：\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"your-bearer-token\",\n  \"queryPath\": \"/api/account/query\",\n  \"rechargePath\": \"/api/account/recharge\",\n  \"callbackSuccessPath\": \"/api/payment/success\",\n  \"callbackFailPath\": \"/api/payment/fail\"\n}\n```\n\n---\n\n## 充值金额档位\n\n默认档位：`[10, 50, 100, 500]` 元\n\n可在 `scripts/recharge.py` 中修改 `RECHARGE_AMOUNTS` 列表自定义档位。\n\n---\n\n## 充值明细格式\n\n默认格式：\n\n```\n增值账户续费 - {套餐类型} - 账号：{手机号} - 金额：{金额}元 - 备注：{备注}\n```\n\n套餐类型可选：\n\n- 体验套餐\n- 标准套餐\n- 专业套餐\n\n---\n\n## 测试命令\n\n```bash\n# 测试账户查询\npython3 scripts/query.py 13800138000 <token>\n\n# 测试充值明细生成\npython3 scripts/recharge.py\n\n# 测试回调（需要真实订单 ID）\npython3 scripts/callback.py\n```\n\nFile v1.0.23:scripts/config.yaml\n\n{}\n\nFile v1.0.23:scripts/qr_base64.txt\n\n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\n\nFile v1.0.23:skills/smyx_common/scripts/config-dev.yaml\n\nApiEnum:\n  base-url-open-api: \"http://192.168.1.234:9601/smyx-open-api\"\n  base-url-open-h5: \"http://192.168.1.234:4100\"\n  base-url-health: \"http://192.168.1.234:7070/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.23:skills/smyx_common/scripts/config-test.yaml\n\nApiEnum:\n  base-url-open-api: \"https://livemonitortest.lifeemergence.com/smyx-open-api\"\n  base-url-open-h5: \"http://livemonitortest.lifeemergence.com\"\n  base-url-health: \"https://healthtest.lifeemergence.com/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.23:skills/smyx_common/scripts/config.yaml\n\nApiEnum:\n  api-key: null\n  api-secret-key: null\n  base-url-health: https://lifeemergence.com/jeecg-boot-xzgz\n  base-url-open-api: https://open.lifeemergence.com/smyx-open-api\n  base-url-open-h5: http://livemonitor.lifeemergence.com\n  database-url: null\nConstantEnum:\n  app--id: x1a3s4nwy1s2r4se\n  current--tentant-code: XIAN_ZHAO_GAN_ZHI\n  default--skill-platform-name: ARK_CLAW\n  feishu-app--id: cli_a93d769369badcb1\n  feishu-app--secret: null\n  is-debug: false\nenv: prod\n\nFile v1.0.23:CONFIG_GUIDE.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.23:FEATURES_实时状态输出.md\n\n# 🚀 smyx_payment 新增功能：实时订单状态输出\n\n## ✨ 功能概述\n\n在生成支付宝支付页面后，**主动启动自动支付状态检测**，实时将支付宝订单状态输出到对话框，包括：\n- ⏳ **WAIT_BUYER_PAY** - 待支付，等待用户扫码付款\n- ✅ **TRADE_SUCCESS** - 已支付，支付成功\n- ✅ **TRADE_FINISHED** - 已完成，交易已完成且不可退款\n- ❌ **TRADE_CLOSED** - 已关闭，支付超时或已取消\n\n## 📁 新增文件\n\n| 文件 | 说明 |\n|------|------|\n| `scripts/payment_flow_with_status.py` | 增强版完整支付流程 - 核心功能实现 |\n| `scripts/start_recharge.py` | 一键启动充值入口脚本 |\n| `FEATURES_实时状态输出.md` | 本功能说明文档 |\n\n## 🎯 核心功能点\n\n### 1️⃣ 🔴 自动提示 - 状态检测启动\n生成支付页面后立即输出醒目的红色提示：\n```\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n```\n\n### 2️⃣ 📊 实时状态输出 - 每3秒检测一次\n```\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:31] ... 状态检测中 ...\n[20:10:33] ... 状态检测中 ...\n[20:10:35] ⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ⏳ 待支付 - 等待用户扫码付款\n```\n\n### 3️⃣ 🎉 支付成功 - 自动查询余额\n```\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n### 4️⃣ ⏰ 超时处理 - 友好提示\n```\n⏰⏰⏰ ...\n⏰ 自动检测时间已结束 (120秒)\n💡 若您已完成支付，请回复「已支付」\n💡 我将立即为您验证订单并更新账户余额！\n⏰⏰⏰ ...\n```\n\n## 🚀 使用方法\n\n### 方式一：一键启动（推荐）\n```bash\n# 格式：python3 -m skills.smyx_payment.scripts.start_recharge <套餐编号>\n\n# 测试套餐 ¥0.01\npython3 -m skills.smyx_payment.scripts.start_recharge 0\n\n# 体验套餐 ¥9.9\npython3 -m skills.smyx_payment.scripts.start_recharge 1\n\n# 标准套餐 ¥30\npython3 -m skills.smyx_payment.scripts.start_recharge 2\n\n# 专业套餐 ¥300\npython3 -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n### 方式二：Python 代码调用\n```python\nfrom skills.smyx_payment.scripts.payment_flow_with_status import create_order_and_show_payment_with_status\n\n# 启动增强版支付流程\ncreate_order_and_show_payment_with_status(\n    amount=0.01,              # 金额\n    package_name='测试套餐',  # 套餐名称\n    uses=10,                   # 次数\n    phone=None,  # 系统自动完成内部身份关联\n    timeout_seconds=120,       # 自动检测超时时间\n    poll_interval=3            # 轮询间隔（秒）\n)\n```\n\n## 🔧 可配置参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `timeout_seconds` | 120 | 自动检测时长（秒），超时后提示手动回复「已支付」 |\n| `poll_interval` | 3 | 订单状态轮询间隔（秒） |\n\n## 📋 订单状态对照表\n\n| 支付宝状态码 | 中文描述 | 处理逻辑 |\n|------------|---------|---------|\n| `WAIT_BUYER_PAY` | ⏳ 待支付 | 继续轮询，等待用户扫码付款 |\n| `TRADE_SUCCESS` | ✅ 已支付 | 支付成功！自动查询余额并展示完整信息 |\n| `TRADE_FINISHED` | ✅ 已完成 | 交易完成且不可退款，自动查询余额 |\n| `TRADE_CLOSED` | ❌ 已关闭 | 支付超时或已取消，终止流程并提示重新充值 |\n\n## 🎨 设计亮点\n\n1. **友好的视觉效果** - 使用 emoji 和分隔线让输出更易读\n2. **状态变化高亮** - 状态变化时用醒目的分隔线提示\n3. **智能频率控制** - 相同状态每5次才完整输出一次，避免刷屏\n4. **优雅超时处理** - 超时后不是直接退出，而是提示用户手动触发\n5. **自动余额查询** - 支付成功后无需用户操作，自动查询并展示余额\n6. **完整信息展示** - 输出表格化的账户信息，清晰明了\n\n## 🔄 与原有功能的兼容性\n\n- ✅ 完全兼容原有 `recharge.py`、`pay_with_cloud_order.py` 等脚本\n- ✅ 原有功能保持不变，新增功能作为增强选项\n- ✅ 可以随时切换使用旧版本或增强版\n- ✅ 所有订单都通过云端API创建，保证数据一致性\n\n## 📝 使用示例输出\n\n```\n🦞🦞🦞 ... (40个小龙虾emoji)\n🦞 小龙虾主厨 · 欢迎使用增强版充值流程！\n🦞🦞🦞 ...\n\n✅ 已选择套餐: 测试套餐\n✅ 充值金额: ¥0.01\n✅ 可用次数: 10 次\n\n🔴 本增强版特色功能：\n   ✨ 生成支付页面后自动提示：正在检测支付状态\n   ✨ 实时轮询，每3秒检测一次\n   ✨ 订单状态实时输出到对话框\n   ✨ 状态变化高亮显示\n   ✨ 支持：WAIT_BUYER_PAY(待支付)、TRADE_SUCCESS(已支付)、TRADE_CLOSED(支付失败)\n   ✨ 支付成功后自动查询余额并展示完整信息\n\n📦📦📦 ...\n📦 正在创建云端订单...\n📦📦📦 ...\n[当前套餐] 测试套餐 [获得服务次数] 10\n✅ 订单创建成功！\n🔢 订单号: HY26061720100824386631\n💰 金额: ¥0.01\n📦 套餐: 测试套餐\n🎯 次数: 10 次\n\n... (支付二维码iframe)\n\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:32] ... 状态检测中 ...\n... (用户扫码支付成功)\n\n⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ✅ 已支付 - 支付成功，订单已完成\n   💰 支付金额: 0.01 元\n   🕐 支付时间: 2026-06-17 20:10:34\n   📝 交易号: 2026061722001428061436956105\n\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n---\n\n**🦞 小龙虾主厨提醒您：充值更智能，体验更顺畅！** ✨\n\nArchive v1.0.22: 84 files, 140848 bytes\n\nFiles: __init__.py (0b), CONFIG_GUIDE.md (981b), FEATURES_实时状态输出.md (8208b), PAYMENT_FLOW_OPTIMIZED.md (6487b), PAYMENT_READY.md (981b), payment-success-example.html (5207b), references/alipay-integration-guide.md (5064b), references/alipay-merchant-config.md (981b), references/api-config.md (3741b), scripts/__init__.py (0b), scripts/_dynamic_import.py (2774b), scripts/alipay_integration.py (3784b), scripts/alipay_pay.py (359b), scripts/alipay_real_payment.py (259b), scripts/api_key_config.py (3527b), scripts/api_service.py (4103b), scripts/auto_poll_order.py (358b), scripts/callback.py (4688b), scripts/check_order_status.py (293b), scripts/check_payment_status.py (293b), scripts/cloud_api_auth.py (10944b), scripts/config.py (912b), scripts/config.yaml (3b), scripts/create_embed_payment_and_monitor.py (11122b), scripts/create_payment_and_monitor.py (6021b), scripts/create_virtual_order.py (7355b), scripts/demo_alipay_payment.py (6400b), scripts/demo_flow.py (5780b), scripts/demo_real_payment.py (6678b), scripts/generate_keys.py (459b), scripts/generate_pay_url.py (415b), scripts/generate_qr.py (1369b), scripts/generate_qrcode.py (4120b), scripts/index.py (12030b), scripts/notify_payment_success.py (2643b), scripts/open_id.py (5613b), scripts/order_status_checker.py (8843b), scripts/order_status_poller.py (193b), scripts/package_config.py (2518b), scripts/pay_now.py (299b), scripts/pay_with_cloud_order.py (11072b), scripts/payment_flow_with_status.py (9024b), scripts/payment_flow.py (545b), scripts/payment_simple.py (529b), scripts/payment_utils.py (5919b), scripts/platform_detection.py (6498b), scripts/print_notify_url.py (231b), scripts/qr_base64.txt (6212b), scripts/query_after_payment.py (1594b), scripts/query.py (4316b), scripts/recharge_interactive.py (7004b), scripts/recharge.py (9407b), scripts/select_package.py (4951b), scripts/skill.py (516b), scripts/start_recharge.py (3569b), scripts/test_1cent_payment.py (6602b), scripts/test_full_flow.py (7444b), scripts/test_jsapi.py (211b), scripts/test_key.py (187b), scripts/test_notify.py (953b), scripts/test_order_binding.py (4444b), scripts/test_package_transfer.py (1519b), scripts/test_recharge.py (1687b), scripts/token_manager.py (10305b), SIGN_CONTRACT_GUIDE.md (6369b), skill-card.md (2673b), SKILL.md (22523b), skills/smyx_common/__init__.py (0b), skills/smyx_common/requirements.txt (47b), skills/smyx_common/scripts/__init__.py (177b), skills/smyx_common/scripts/api_service.py (2645b), skills/smyx_common/scripts/base.py (469b), skills/smyx_common/scripts/config-dev.yaml (214b), skills/smyx_common/scripts/config-prod.yaml (0b), skills/smyx_common/scripts/config-test.yaml (256b), skills/smyx_common/scripts/config.py (24363b), skills/smyx_common/scripts/config.yaml (473b), skills/smyx_common/scripts/dao.py (18266b), skills/smyx_common/scripts/skill.py (2473b), skills/smyx_common/scripts/util.py (28605b)\n\nFile v1.0.22:SKILL.md\n\n---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。用户可见输出必须只展示付款二维码，禁止显示备用支付链接、支付 URL、打开付款页面链接或任何备用方式说明。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n   ⚠️ 【STOP】必须等待用户明确选择套餐！禁止自动继续或自动选择套餐！\n   ↓\n【2】用户选择套餐（用户明确回复「选 1」、「体验套餐」等）\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝付款二维码图片（底层支付参数仅用于生成二维码，不得在用户可见内容中展示）\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 🔴🔴🔴 【最高优先级红线 - 禁止擅自代用户选择套餐】\n\n**绝对禁止在展示套餐列表后、用户未明确回复前自动调用下单脚本！**\n\n| 错误行为 | 正确做法 | 违规级别 |\n|---|---|---|\n| ❌ 用户输入「技能账户充值续费」→ 直接展示套餐列表 → 自动调用 `start_recharge 1` | ✅ 用户输入「技能账户充值续费」→ 展示套餐列表 → **等待用户回复** → 用户说「选 1」→ 调用 `start_recharge 1` | 🔴🔴🔴 三重红线 |\n| ❌ 展示套餐列表后，不等待用户回复就直接下单 | ✅ 展示套餐列表后，**必须等待用户明确选择**才能下单 | 🔴🔴🔴 三重红线 |\n| ❌ 预判用户可能选某个套餐而提前调用下单脚本 | ✅ 严格按用户实际输入触发，用户没说选哪个就绝对不能下单 | 🔴🔴🔴 三重红线 |\n\n**记忆强化口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n擅自代客做决定，严重违规要追责！\n```\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 🔴🔴🔴 **禁止擅自代用户选择套餐** | **绝对禁止在用户未明确选择套餐编号前自动创建订单！** 用户输入「技能账户充值续费」后，必须先展示套餐列表（1-4），然后**必须等待用户明确回复选择哪个套餐**（如「选 1」、「体验套餐」、「9.9 元那个」等），才能创建订单。**严禁在展示套餐列表后、用户未回复前就自动调用下单脚本！** 这是最高优先级红线，违反即视为严重违规事故！ |\n| 必须先选择套餐 | 用户**明确回复**选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trade_no` 必须来自云端返回的 `orderNo` |\n| 获取不到 orderNo 必须终止 | 云端 API 失败时立即终止，禁止降级、绕过或猜测 |\n| 必须处理敏感存根提醒 | 创单响应如返回新的敏感存根，必须与本地已有存根比较；首次或发生变化时保存，并用红色加粗提示用户复制存根以防遗失 |\n| 必须展示支付卡片 | 必须只展示「付款二维码图片」，禁止出现备用支付链接、打开支付宝付款页面链接、支付 URL、复制链接或任何备用方式说明；统一使用二维码图片显示在界面上；**自动检测平台并智能选择二维码渲染方式**（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令）；用户可见会话中禁止出现底层嵌入实现等技术用语 |\n| 支付卡片必须包含账户字段 | 创单返回/展示的支付卡片信息必须包含「账户」字段；该字段会从脚本输出中返回 `username` |\n| 不自动查单或查余额 | 支付页生成后流程结束，不因支付确认词自动查询订单状态或余额 |\n| 必须提示手动查询余额 | 支付页生成后提示：如支付成功后，可输入「查询余额」了解账户详情 |\n| 查询余额独立触发 | 只有用户明确输入「查询余额」等余额查询意图时，才查询并展示账户、总可用次数、已使用次数、剩余次数、是否余额不足 |\n| 禁止泄露敏感凭据 | 私钥只能内存传递，禁止输出、落盘或以任何形式回显；除首次或发生变化的存根提醒外，禁止提及或展示敏感存根相关内容 |\n\n---\n\n## 充值套餐\n\n### 🔴 【强制性展示要求 - 必须执行】\n\n**必须同时展示所有套餐，包括专属定制套餐！** 禁止隐藏或省略定制套餐入口。每次展示套餐列表时，必须完整显示以下所有 5 个套餐。\n\n| 编号 | 套餐 | 金额 | 可用次数 | 备注 |\n|----|------|------|----------|------|\n| 0 | **测试套餐** | ¥0.01 | 10 次 | 测试专用；仅用户明确要求显示/使用测试套餐时展示 |\n| 1 | **体验套餐** | ¥9.9 | 500 次 | 试用 |\n| 2 | **标准套餐** | ¥30 | 1200 次 | 常用 |\n| 3 | **专业套餐** | ¥300 | 15000 次 | ⭐ 推荐，高频使用，单次成本更优 |\n| 4 | **专属定制** | 按需定制 | 按需配置 | ✅ **必须显示**！请联系邮箱 product@lifeemergence.com |\n\n### 📌 强制显示规则\n\n| 规则 | 级别 | 说明 |\n|---|---|---|\n| **必须显示套餐 4（专属定制）** | 🔴 强制性 | 无论用户是否询问，每次展示套餐列表时都必须包含定制套餐，禁止只显示 1-3 号套餐 |\n| **定制套餐必须有明显标识** | 🔴 强制性 | 定制套餐必须标注「✅ 必须显示」等醒目标识 |\n| **禁止省略定制套餐** | 🔴 强制性 | 不得以任何理由隐藏、省略或延后展示定制套餐 |\n| **定制套餐位置** | ✅ 应当 | 始终放在套餐列表的最后一行，作为高级选项展示 |\n| **🔴🔴 测试套餐默认绝对隐藏（最高优先级）** | 🔴🔴 双重强约束 | **首次展示套餐列表时，套餐 0 必须绝对隐藏，绝对不能出现在列表中！** 只有当用户明确说出「测试套餐」、「选 0」、「0 号套餐」、「我要测试」等明确关键词时，才可以展示套餐 0。禁止提前设置环境变量、禁止提前包含在列表中、禁止任何形式的提前暴露！ |\n| **🔴 环境变量设置时机严格管控** | 🔴 强制性 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE` 环境变量 **只能在用户明确选择测试套餐之后、创建订单之前的那个瞬间设置**，绝对不能在展示套餐列表之前就设置。正确顺序：展示套餐 1-4 → 用户选 0 → 设置环境变量 → 创建订单。顺序绝对不能颠倒！颠倒顺序即视为严重逻辑错误！ |\n| **🔴 禁止逻辑前置** | 🔴 强制性 | 禁止因为「预判用户可能选测试套餐」而提前启用。必须严格按用户输入触发，没说就绝对不能显示！ |\n\n### 🧠 防错记忆强化（必须背诵）\n\n**套餐展示口诀：**\n```\n充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！\n```\n\n**禁止擅自下单口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n自动继续或自选，都是严重违规；\n擅自代客做决定，严重违规要追责！\n```\n\n**完整流程口诀：**\n```\n一展套餐（1-4），二等用户选；\n用户说选几，就下几的单；\n自动继续或自选，绝对不允许；\n这是红线区，违反必追责！\n```\n\n### ⚠️ 典型错误案例警示\n\n| ❌ 错误做法 | ✅ 正确做法 | 错误级别 |\n|---|---|---|\n| 用户输入「技能账户充值续费」，直接展示套餐 0-4 | 用户输入「技能账户充值续费」，只展示套餐 1-4 | 🔴 严重逻辑错误 |\n| 展示套餐列表前就设置 `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` | 用户选 0 之后、创单之前才设置环境变量 | 🔴 严重逻辑错误 |\n| 预判用户可能选测试而提前启用 | 严格按用户实际输入触发 | 🔴 逻辑错误 |\n| **用户输入「技能账户充值续费」，展示套餐列表后，没有等待用户回复就直接调用下单脚本或自动选择套餐** | **展示套餐列表后，必须等待用户明确回复选择哪个套餐（如「选 1」、「体验套餐」），才能调用下单脚本** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n| **擅自代用户选择套餐（如默认选 1 号套餐）** | **绝对不能替用户做决定，必须由用户明确选择** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n\n### 🧠 记忆强化口诀\n```\n套餐要展示，定制不能少；\n少了定制项，就是没做好；\n四条全显示，用户才知道！\n```\n\n---\n\n## 推荐入口\n\n测试套餐：\n\n```bash\nSMYX_PAYMENT_SHOW_TEST_PACKAGE=1 python3 -u -m skills.smyx_payment.scripts.start_recharge 0\n```\n\n正式套餐：\n\n```bash\npython3 -u -m skills.smyx_payment.scripts.start_recharge 1\npython3 -u -m skills.smyx_payment.scripts.start_recharge 2\npython3 -u -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n脚本会：\n1. 创建云端订单；\n2. 生成支付宝支付卡片；\n3. 提示用户完成支付；\n4. 提示用户如支付成功后，可输入「查询余额」了解账户详情；\n5. 结束当前支付生成流程，不自动查询订单状态或余额。\n\n### 支付方式说明\n\n由于支付宝「当面付」接口需要商户单独开通权限（报 `ACQ.ACCESS_FORBIDDEN` 错误），**当前采用支付宝网页支付模式**：\n\n| 项目 | 说明 |\n|------|------|\n| **支付接口** | `alipay.trade.page.pay`（网页支付） |\n| **二维码生成** | 使用公共服务 api.qrserver.com 将支付链接编码为二维码 |\n| **用户体验** | 打开支付宝直接扫码，自动识别并进入支付页面，无需手动跳转 |\n| **支付效果** | 与「当面付」扫码体验一致，都是直接扫码支付 |\n\n### 「当面付」开通说明（可选升级）\n\n如果需要使用支付宝原生支付码（格式：`https://qr.alipay.com/xxx`），需要：\n1. 登录支付宝商户平台\n2. 进入「产品中心」→ 找到「当面付」产品\n3. 签约并开通当面付权限\n4. 审核通过后即可使用 alipay.trade.precreate 接口生成原生支付码\n\n当前网页支付二维码方案已能满足绝大多数场景，用户体验与原生支付码一致。\n\n### 支付卡片输出规范\n\n---\n\n# ⚠️ 🔴 【强制性前置检查 - 必须执行，违者追责】🔴 ⚠️\n\n### 🚨 生成支付卡片前，**必须先执行平台检测**，这是最高优先级的强制要求！\n\n| 检查项 | 强制要求 | 违反后果 |\n|---|---|---|\n| **平台检测** | ✅ 必须调用 `platform_detection.get_current_platform()` | ❌ 禁止生成支付卡片 |\n| **渲染方式判断** | ✅ 必须根据平台结果选择二维码渲染方式 | ❌ 禁止硬编码 MEDIA 或 HTML |\n| **ArkClaw 平台** | ✅ 必须使用 HTML `<img>` 标签 | ❌ 绝对禁止使用 `MEDIA:` 指令 |\n| **OpenClaw 平台** | ✅ 必须使用 `MEDIA:` 指令 | ❌ 禁止使用 HTML `<img>` 标签 |\n\n#### 🧠 记忆强化口诀\n```\n生成支付卡，先把平台查；\nArkClaw 用 img，OpenClaw 用 MEDIA；\n忘记这一步，就是大傻瓜！\n```\n\n#### 🔍 检查清单（生成前必须逐项核对）\n- [ ] 是否已调用 `get_current_platform()` 获取平台信息？\n- [ ] 是否已将平台信息存储在变量中？\n- [ ] 是否已根据 platform 字段判断渲染方式？\n- [ ] ArkClaw → `<img src=\"...\">`\n- [ ] OpenClaw → `MEDIA:...`\n- [ ] 确认二维码 URL 格式正确（300x300px）\n- [ ] 确认没有在代码中硬编码渲染方式\n\n---\n\n## 🔴【兜底策略 - 确保二维码 100% 显示】（最高优先级）\n\n### 问题背景\n\n当平台检测失败（返回 `unknown`）或渲染指令（`MEDIA:` / HTML `<img>`）未被系统解析时，用户可能看不到二维码图片。\n\n### 兜底方案\n\n**必须执行以下兜底流程，确保二维码始终以图片形式送达用户：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| **1️⃣ 下载二维码图片** | 使用 `curl` 或 `requests` 将二维码图片下载到本地临时文件（如 `/tmp/payment_qr.png`） | 🔴 必须 |\n| **2️⃣ 使用 message 工具发送** | 调用 `message` 工具，使用 `filePath` 或 `media` 参数发送本地图片文件 | 🔴 必须 |\n| **3️⃣ 附带支付信息** | 在 `caption` 中包含充值信息（套餐、金额、订单号、账户、ApiKey 提醒） | 🔴 必须 |\n| **4️⃣ 验证发送结果** | 检查 `message` 工具返回的 `ok` 字段，失败时重试或提示用户 | ✅ 应当 |\n\n### 兜底触发条件\n\n| 情况 | 触发兜底 |\n|---|---|\n| 平台检测返回 `unknown` | ✅ 立即触发 |\n| 平台置信度 < 50% | ✅ 立即触发 |\n| 用户反馈「看不到二维码」 | ✅ 立即触发 |\n| 首次支付流程 | ✅ 建议触发（预防性） |\n\n### 兜底代码示例\n\n```python\nimport subprocess\nimport tempfile\nimport os\n\ndef send_qr_fallback(qr_url: str, caption: str):\n    \"\"\"兜底：下载二维码并用 message 工具发送\"\"\"\n    # 1. 下载到临时文件\n    tmp_path = tempfile.mktemp(suffix=\".png\")\n    subprocess.run([\"curl\", \"-s\", qr_url, \"-o\", tmp_path], check=True)\n    \n    # 2. 用 message 工具发送\n    from openclaw_tools import message\n    result = message(action=\"send\", filePath=tmp_path, caption=caption)\n    \n    # 3. 清理临时文件\n    if os.path.exists(tmp_path):\n        os.remove(tmp_path)\n    \n    return result\n```\n\n### 记忆强化口诀\n```\n平台检测若失败，兜底策略马上来；\n下载图片发文件，用户肯定看得见！\n```\n\n---\n\n支付卡片必须包含以下内容，且二维码必须直接以图片形式显示在界面上。**必须根据平台检测结果选择渲染方式**，确保在当前环境下正常显示：\n\n```markdown\n================================================================================\n# 🦞 小龙虾主厨 · 套餐充值\n================================================================================\n\n## 📦 充值信息\n\n| 项目 | 内容 |\n|------|------|\n| **套餐** | {套餐名称} |\n| **金额** | ¥{金额} 元 |\n| **次数** | {次数} 次 |\n| **订单号** | {订单号} |\n| **账户** | {账户} |\n| **支付方式** | 支付宝当面付（直接扫码） |\n\n## 📱 支付宝支付信息\n\n### 🖼️ 支付二维码\n\n🔴 【根据平台检测结果自动选择以下方式之一，禁止同时显示两种】\n\n**✅ ArkClaw 平台（检测到 platform='arkclaw'）：**\n`<img src=\"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}\" alt=\"支付二维码\" width=\"300\" height=\"300\" />`\n\n**✅ OpenClaw 平台（检测到 platform='openclaw'）：**\n`MEDIA:https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}`\n\n💡 请使用支付宝“扫一扫”扫描上方二维码完成支付。\n\n--------------------------------------------------------------------------------\n✅ 支付信息已生成。\n💬 请使用支付宝完成支付。\n🔎 如支付成功后，可输入「查询余额」了解账户详情。\n--------------------------------------------------------------------------------\n```\n\n### 优化说明\n\n**二维码图片显示优化（🔴 强制性执行标准）：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| 1 | **调用 `platform_detection.get_current_platform()` 获取平台信息** | 🔴 必须 |\n| 2 | **判断返回的 `platform` 字段值** | 🔴 必须 |\n| 3 | `arkclaw` → 使用 HTML `<img>` 标签显示二维码 | 🔴 必须 |\n| 4 | `openclaw` → 使用 `MEDIA:` 指令显示二维码 | 🔴 必须 |\n| 5 | 禁止在界面中以任何形式显示支付链接和暴露支付宝的支付url, 避免在对话框中显示 URL | ✅ 应当 |\n| 6 | 禁止输出备用方式说明；不得提示打开支付宝付款网页版、复制链接或查看支付 URL | 🔴 必须 |\n| 7 | 支付方式明确标注为\"支付宝当面付\"，提供更清晰的支付指引 | ✅ 应当 |\n\n**🧠 记忆锚点：**\n- 平台检测不是「可选项」，而是「前置条件」\n- 不检测平台 → 不生成支付卡片\n- 检测平台后选错渲染方式 → 属于「严重错误」\n- 每次生成都要默念：先检测，后渲染！\n\n**适配场景：**\n- 聊天应用（如微信、钉钉、企业微信）\n- 网页端聊天界面\n- 各种支持图片显示的平台\n- 保持支付流程的完整性和安全性\n\n### 二维码生成说明\n\n- **生成方式**：使用公共二维码生成服务 api.qrserver.com\n- **尺寸**：300x300px，确保扫码清晰\n- **数据**：底层支付参数仅用于生成二维码，不得在用户可见文本中展示\n- **显示**：仅以二维码图片形式展示；禁止额外输出备用链接、支付 URL、打开付款页面链接或复制链接说明\n\n### 支付卡片后的用户提示语\n\n```\n支付页已生成。请完成扫码支付。\n如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n### 用户手动查询余额后的成功提示语\n\n```\n🎉🎉🎉\n✅ 账户详情查询完成！\n🎉🎉🎉\n\n→ 展示完整余额信息表格：账户、总可用次数、已使用次数、剩余次数、是否余额不足。\n```\n\n### 支付页生成后禁止行为\n\n```\n不要提示用户回复「已支付」或「支付成功」。\n不要因用户支付确认词自动查询订单状态或余额。\n仅提示：如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n---\n\n## 安全规则\n\n1. 云端 API 失败或未返回 `orderNo` 时必须终止，禁止降级。\n2. 禁止本地生成订单号，禁止猜测订单号。\n3. `privateKey` 只能来自云端创单响应，并仅在当前进程内存中传递给支付宝签名/查询函数。\n4. 禁止把 `privateKey` 写入文件、环境变量、命令行参数或用户可见输出。\n5. 若云端创单返回敏感存根，系统仅可在内部完成本地保存与比对，任何情况下都不得向用户透露、暗示或展示该存根的存放路径。\n6. 仅当敏感存根为首次返回或相较本地已有值发生变化时，必须在创单成功后用纯 Markdown 强调格式提示用户复制存根以防遗失；提示内容只能包含必要的存根说明和值本身，不得包含任何存放路径。提示模板如下：\n\n   # ⚠️ **重要：您的 ApiKey 为：`{敏感存根}`**\n\n   ## **请务必复制存根，以免遗失。**\n\n7. 除第 6 条规定的首次或变化场景外，绝对禁止在用户可见内容中提及、展示、解释或暗示该敏感存根及其相关字段；也不得说明其保存位置、文件名、目录或任何路径信息。\n\nFile v1.0.22:_meta.json\n\n{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.22\",\n  \"publishedAt\": 1783494133688\n}\n\nFile v1.0.22:references/alipay-integration-guide.md\n\n# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-wallet` 开通\n3. **支付凭证**：支付成功后保存 paymentProof 用于回调\n4. **测试模式**：API 不可用时会自动使用模拟数据\n\n---\n\n## 文件清单\n\n| 文件                              | 用途       |\n|---------------------------------|----------|\n| `scripts/index.py`              | 主入口，完整流程 |\n| `scripts/alipay_integration.py` | 支付宝集成模块  |\n| `scripts/query.py`              | 账户查询     |\n| `scripts/recharge.py`           | 充值流程     |\n| `scripts/callback.py`           | 支付回调     |\n\n---\n\n## 快速测试\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行完整充值流程（会看到支付宝链接）\npython3 index.py recharge 13800138000\n```\n\nFile v1.0.22:references/alipay-merchant-config.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.22:references/api-config.md\n\n# symx_payment API 配置参考\n\n## 云端 API 配置\n\n### 基础配置\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"YOUR_BEARER_TOKEN_HERE\"\n}\n```\n\n### 接口路径\n\n| 接口     | 路径                      | 方法   | 说明               |\n|--------|-------------------------|------|------------------|\n| 账户查询   | `/api/account/query`    | POST | 查询账户余额、使用次数等     |\n| 创建充值订单 | `/api/account/recharge` | POST | 创建充值订单，返回支付宝支付参数 |\n| 支付成功回调 | `/api/payment/success`  | POST | 支付成功后回写数据        |\n| 支付失败回调 | `/api/payment/fail`     | POST | 支付失败后记录          |\n\n---\n\n## 接口详情\n\n### 1. 账户查询接口\n\n**请求：**\n\n```json\nPOST /api/account/query\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"totalRecharged\": 1000.00,\n  \"balance\": 50.00,\n  \"remainingUses\": 10,\n  \"usedCount\": 90,\n  \"isInsufficient\": false\n}\n```\n\n---\n\n### 2. 创建充值订单接口\n\n**请求：**\n\n```json\nPOST /api/account/recharge\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\",\n\"amount\": 100,\n\"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n\"packageType\": \"标准套餐\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"amount\": 100,\n  \"alipayParams\": {\n    // 支付宝支付参数\n  },\n  \"cashierUrl\": \"https://cashier.alipay.com/...\"\n}\n```\n\n---\n\n### 3. 支付成功回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/success\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"paymentProof\": \"支付宝支付凭证\",\n\"amount\": 100,\n\"phoneNumber\": \"13800138000\",\n\"status\": \"SUCCESS\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"rechargedAmount\": 100,\n  \"rechargedCount\": 1,\n  \"newBalance\": 150\n}\n```\n\n---\n\n### 4. 支付失败回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/fail\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"errorReason\": \"用户取消支付\",\n\"phoneNumber\": \"13800138000\",\n\"status\": \"FAILED\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"message\": \"已记录失败\"\n}\n```\n\n---\n\n## 配置方式\n\n### 方式 1：修改脚本中的 API_CONFIG\n\n直接编辑 `scripts/query.py`、`scripts/recharge.py`、`scripts/callback.py` 中的 `API_CONFIG` 字典。\n\n### 方式 2：使用环境变量（推荐）\n\n```bash\nexport SYMX_API_BASE_URL=\"https://lifeemergence.com/jeecg-boot-xzgz\"\nexport SYMX_API_TOKEN=\"your-bearer-token\"\nexport SYMX_API_AUTH_TYPE=\"bearer\"\n```\n\n### 方式 3：创建配置文件\n\n在 `references/` 目录下创建 `config.json`：\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"your-bearer-token\",\n  \"queryPath\": \"/api/account/query\",\n  \"rechargePath\": \"/api/account/recharge\",\n  \"callbackSuccessPath\": \"/api/payment/success\",\n  \"callbackFailPath\": \"/api/payment/fail\"\n}\n```\n\n---\n\n## 充值金额档位\n\n默认档位：`[10, 50, 100, 500]` 元\n\n可在 `scripts/recharge.py` 中修改 `RECHARGE_AMOUNTS` 列表自定义档位。\n\n---\n\n## 充值明细格式\n\n默认格式：\n\n```\n增值账户续费 - {套餐类型} - 账号：{手机号} - 金额：{金额}元 - 备注：{备注}\n```\n\n套餐类型可选：\n\n- 体验套餐\n- 标准套餐\n- 专业套餐\n\n---\n\n## 测试命令\n\n```bash\n# 测试账户查询\npython3 scripts/query.py 13800138000 <token>\n\n# 测试充值明细生成\npython3 scripts/recharge.py\n\n# 测试回调（需要真实订单 ID）\npython3 scripts/callback.py\n```\n\nFile v1.0.22:scripts/config.yaml\n\n{}\n\nFile v1.0.22:scripts/qr_base64.txt\n\n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\n\nFile v1.0.22:skills/smyx_common/scripts/config-dev.yaml\n\nApiEnum:\n  base-url-open-api: \"http://192.168.1.234:9601/smyx-open-api\"\n  base-url-open-h5: \"http://192.168.1.234:4100\"\n  base-url-health: \"http://192.168.1.234:7070/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.22:skills/smyx_common/scripts/config-test.yaml\n\nApiEnum:\n  base-url-open-api: \"https://livemonitortest.lifeemergence.com/smyx-open-api\"\n  base-url-open-h5: \"http://livemonitortest.lifeemergence.com\"\n  base-url-health: \"https://healthtest.lifeemergence.com/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.22:skills/smyx_common/scripts/config.yaml\n\nApiEnum:\n  api-key: null\n  api-secret-key: null\n  base-url-health: https://lifeemergence.com/jeecg-boot-xzgz\n  base-url-open-api: https://open.lifeemergence.com/smyx-open-api\n  base-url-open-h5: http://livemonitor.lifeemergence.com\n  database-url: null\nConstantEnum:\n  app--id: x1a3s4nwy1s2r4se\n  current--tentant-code: XIAN_ZHAO_GAN_ZHI\n  default--skill-platform-name: ARK_CLAW\n  feishu-app--id: cli_a93d769369badcb1\n  feishu-app--secret: null\n  is-debug: false\nenv: prod\n\nFile v1.0.22:CONFIG_GUIDE.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.22:FEATURES_实时状态输出.md\n\n# 🚀 smyx_payment 新增功能：实时订单状态输出\n\n## ✨ 功能概述\n\n在生成支付宝支付页面后，**主动启动自动支付状态检测**，实时将支付宝订单状态输出到对话框，包括：\n- ⏳ **WAIT_BUYER_PAY** - 待支付，等待用户扫码付款\n- ✅ **TRADE_SUCCESS** - 已支付，支付成功\n- ✅ **TRADE_FINISHED** - 已完成，交易已完成且不可退款\n- ❌ **TRADE_CLOSED** - 已关闭，支付超时或已取消\n\n## 📁 新增文件\n\n| 文件 | 说明 |\n|------|------|\n| `scripts/payment_flow_with_status.py` | 增强版完整支付流程 - 核心功能实现 |\n| `scripts/start_recharge.py` | 一键启动充值入口脚本 |\n| `FEATURES_实时状态输出.md` | 本功能说明文档 |\n\n## 🎯 核心功能点\n\n### 1️⃣ 🔴 自动提示 - 状态检测启动\n生成支付页面后立即输出醒目的红色提示：\n```\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n```\n\n### 2️⃣ 📊 实时状态输出 - 每3秒检测一次\n```\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:31] ... 状态检测中 ...\n[20:10:33] ... 状态检测中 ...\n[20:10:35] ⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ⏳ 待支付 - 等待用户扫码付款\n```\n\n### 3️⃣ 🎉 支付成功 - 自动查询余额\n```\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n### 4️⃣ ⏰ 超时处理 - 友好提示\n```\n⏰⏰⏰ ...\n⏰ 自动检测时间已结束 (120秒)\n💡 若您已完成支付，请回复「已支付」\n💡 我将立即为您验证订单并更新账户余额！\n⏰⏰⏰ ...\n```\n\n## 🚀 使用方法\n\n### 方式一：一键启动（推荐）\n```bash\n# 格式：python3 -m skills.smyx_payment.scripts.start_recharge <套餐编号>\n\n# 测试套餐 ¥0.01\npython3 -m skills.smyx_payment.scripts.start_recharge 0\n\n# 体验套餐 ¥9.9\npython3 -m skills.smyx_payment.scripts.start_recharge 1\n\n# 标准套餐 ¥30\npython3 -m skills.smyx_payment.scripts.start_recharge 2\n\n# 专业套餐 ¥300\npython3 -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n### 方式二：Python 代码调用\n```python\nfrom skills.smyx_payment.scripts.payment_flow_with_status import create_order_and_show_payment_with_status\n\n# 启动增强版支付流程\ncreate_order_and_show_payment_with_status(\n    amount=0.01,              # 金额\n    package_name='测试套餐',  # 套餐名称\n    uses=10,                   # 次数\n    phone=None,  # 系统自动完成内部身份关联\n    timeout_seconds=120,       # 自动检测超时时间\n    poll_interval=3            # 轮询间隔（秒）\n)\n```\n\n## 🔧 可配置参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `timeout_seconds` | 120 | 自动检测时长（秒），超时后提示手动回复「已支付」 |\n| `poll_interval` | 3 | 订单状态轮询间隔（秒） |\n\n## 📋 订单状态对照表\n\n| 支付宝状态码 | 中文描述 | 处理逻辑 |\n|------------|---------|---------|\n| `WAIT_BUYER_PAY` | ⏳ 待支付 | 继续轮询，等待用户扫码付款 |\n| `TRADE_SUCCESS` | ✅ 已支付 | 支付成功！自动查询余额并展示完整信息 |\n| `TRADE_FINISHED` | ✅ 已完成 | 交易完成且不可退款，自动查询余额 |\n| `TRADE_CLOSED` | ❌ 已关闭 | 支付超时或已取消，终止流程并提示重新充值 |\n\n## 🎨 设计亮点\n\n1. **友好的视觉效果** - 使用 emoji 和分隔线让输出更易读\n2. **状态变化高亮** - 状态变化时用醒目的分隔线提示\n3. **智能频率控制** - 相同状态每5次才完整输出一次，避免刷屏\n4. **优雅超时处理** - 超时后不是直接退出，而是提示用户手动触发\n5. **自动余额查询** - 支付成功后无需用户操作，自动查询并展示余额\n6. **完整信息展示** - 输出表格化的账户信息，清晰明了\n\n## 🔄 与原有功能的兼容性\n\n- ✅ 完全兼容原有 `recharge.py`、`pay_with_cloud_order.py` 等脚本\n- ✅ 原有功能保持不变，新增功能作为增强选项\n- ✅ 可以随时切换使用旧版本或增强版\n- ✅ 所有订单都通过云端API创建，保证数据一致性\n\n## 📝 使用示例输出\n\n```\n🦞🦞🦞 ... (40个小龙虾emoji)\n🦞 小龙虾主厨 · 欢迎使用增强版充值流程！\n🦞🦞🦞 ...\n\n✅ 已选择套餐: 测试套餐\n✅ 充值金额: ¥0.01\n✅ 可用次数: 10 次\n\n🔴 本增强版特色功能：\n   ✨ 生成支付页面后自动提示：正在检测支付状态\n   ✨ 实时轮询，每3秒检测一次\n   ✨ 订单状态实时输出到对话框\n   ✨ 状态变化高亮显示\n   ✨ 支持：WAIT_BUYER_PAY(待支付)、TRADE_SUCCESS(已支付)、TRADE_CLOSED(支付失败)\n   ✨ 支付成功后自动查询余额并展示完整信息\n\n📦📦📦 ...\n📦 正在创建云端订单...\n📦📦📦 ...\n[当前套餐] 测试套餐 [获得服务次数] 10\n✅ 订单创建成功！\n🔢 订单号: HY26061720100824386631\n💰 金额: ¥0.01\n📦 套餐: 测试套餐\n🎯 次数: 10 次\n\n... (支付二维码iframe)\n\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:32] ... 状态检测中 ...\n... (用户扫码支付成功)\n\n⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ✅ 已支付 - 支付成功，订单已完成\n   💰 支付金额: 0.01 元\n   🕐 支付时间: 2026-06-17 20:10:34\n   📝 交易号: 2026061722001428061436956105\n\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n---\n\n**🦞 小龙虾主厨提醒您：充值更智能，体验更顺畅！** ✨\n\nArchive v1.0.21: 84 files, 140996 bytes\n\nFiles: __init__.py (0b), CONFIG_GUIDE.md (981b), FEATURES_实时状态输出.md (8208b), PAYMENT_FLOW_OPTIMIZED.md (6487b), PAYMENT_READY.md (981b), payment-success-example.html (5207b), references/alipay-integration-guide.md (5064b), references/alipay-merchant-config.md (981b), references/api-config.md (3741b), scripts/__init__.py (0b), scripts/_dynamic_import.py (2774b), scripts/alipay_integration.py (3784b), scripts/alipay_pay.py (359b), scripts/alipay_real_payment.py (259b), scripts/api_key_config.py (3527b), scripts/api_service.py (4103b), scripts/auto_poll_order.py (358b), scripts/callback.py (4688b), scripts/check_order_status.py (293b), scripts/check_payment_status.py (293b), scripts/cloud_api_auth.py (10944b), scripts/config.py (912b), scripts/config.yaml (3b), scripts/create_embed_payment_and_monitor.py (11122b), scripts/create_payment_and_monitor.py (6021b), scripts/create_virtual_order.py (7355b), scripts/demo_alipay_payment.py (6400b), scripts/demo_flow.py (5780b), scripts/demo_real_payment.py (6678b), scripts/generate_keys.py (459b), scripts/generate_pay_url.py (415b), scripts/generate_qr.py (1369b), scripts/generate_qrcode.py (4120b), scripts/index.py (12030b), scripts/notify_payment_success.py (2643b), scripts/open_id.py (5613b), scripts/order_status_checker.py (8843b), scripts/order_status_poller.py (193b), scripts/package_config.py (2518b), scripts/pay_now.py (299b), scripts/pay_with_cloud_order.py (11072b), scripts/payment_flow_with_status.py (9024b), scripts/payment_flow.py (545b), scripts/payment_simple.py (529b), scripts/payment_utils.py (5919b), scripts/platform_detection.py (6498b), scripts/print_notify_url.py (231b), scripts/qr_base64.txt (6212b), scripts/query_after_payment.py (1594b), scripts/query.py (4316b), scripts/recharge_interactive.py (7004b), scripts/recharge.py (9407b), scripts/select_package.py (4951b), scripts/skill.py (516b), scripts/start_recharge.py (3569b), scripts/test_1cent_payment.py (6602b), scripts/test_full_flow.py (7444b), scripts/test_jsapi.py (211b), scripts/test_key.py (187b), scripts/test_notify.py (953b), scripts/test_order_binding.py (4444b), scripts/test_package_transfer.py (1519b), scripts/test_recharge.py (1687b), scripts/token_manager.py (10305b), SIGN_CONTRACT_GUIDE.md (6369b), skill-card.md (3164b), SKILL.md (22523b), skills/smyx_common/__init__.py (0b), skills/smyx_common/requirements.txt (47b), skills/smyx_common/scripts/__init__.py (177b), skills/smyx_common/scripts/api_service.py (2645b), skills/smyx_common/scripts/base.py (469b), skills/smyx_common/scripts/config-dev.yaml (214b), skills/smyx_common/scripts/config-prod.yaml (0b), skills/smyx_common/scripts/config-test.yaml (256b), skills/smyx_common/scripts/config.py (24363b), skills/smyx_common/scripts/config.yaml (473b), skills/smyx_common/scripts/dao.py (18266b), skills/smyx_common/scripts/skill.py (2473b), skills/smyx_common/scripts/util.py (28605b)\n\nFile v1.0.21:SKILL.md\n\n---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。用户可见输出必须只展示付款二维码，禁止显示备用支付链接、支付 URL、打开付款页面链接或任何备用方式说明。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n   ⚠️ 【STOP】必须等待用户明确选择套餐！禁止自动继续或自动选择套餐！\n   ↓\n【2】用户选择套餐（用户明确回复「选 1」、「体验套餐」等）\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝付款二维码图片（底层支付参数仅用于生成二维码，不得在用户可见内容中展示）\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 🔴🔴🔴 【最高优先级红线 - 禁止擅自代用户选择套餐】\n\n**绝对禁止在展示套餐列表后、用户未明确回复前自动调用下单脚本！**\n\n| 错误行为 | 正确做法 | 违规级别 |\n|---|---|---|\n| ❌ 用户输入「技能账户充值续费」→ 直接展示套餐列表 → 自动调用 `start_recharge 1` | ✅ 用户输入「技能账户充值续费」→ 展示套餐列表 → **等待用户回复** → 用户说「选 1」→ 调用 `start_recharge 1` | 🔴🔴🔴 三重红线 |\n| ❌ 展示套餐列表后，不等待用户回复就直接下单 | ✅ 展示套餐列表后，**必须等待用户明确选择**才能下单 | 🔴🔴🔴 三重红线 |\n| ❌ 预判用户可能选某个套餐而提前调用下单脚本 | ✅ 严格按用户实际输入触发，用户没说选哪个就绝对不能下单 | 🔴🔴🔴 三重红线 |\n\n**记忆强化口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n擅自代客做决定，严重违规要追责！\n```\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 🔴🔴🔴 **禁止擅自代用户选择套餐** | **绝对禁止在用户未明确选择套餐编号前自动创建订单！** 用户输入「技能账户充值续费」后，必须先展示套餐列表（1-4），然后**必须等待用户明确回复选择哪个套餐**（如「选 1」、「体验套餐」、「9.9 元那个」等），才能创建订单。**严禁在展示套餐列表后、用户未回复前就自动调用下单脚本！** 这是最高优先级红线，违反即视为严重违规事故！ |\n| 必须先选择套餐 | 用户**明确回复**选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trade_no` 必须来自云端返回的 `orderNo` |\n| 获取不到 orderNo 必须终止 | 云端 API 失败时立即终止，禁止降级、绕过或猜测 |\n| 必须处理敏感存根提醒 | 创单响应如返回新的敏感存根，必须与本地已有存根比较；首次或发生变化时保存，并用红色加粗提示用户复制存根以防遗失 |\n| 必须展示支付卡片 | 必须只展示「付款二维码图片」，禁止出现备用支付链接、打开支付宝付款页面链接、支付 URL、复制链接或任何备用方式说明；统一使用二维码图片显示在界面上；**自动检测平台并智能选择二维码渲染方式**（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令）；用户可见会话中禁止出现底层嵌入实现等技术用语 |\n| 支付卡片必须包含账户字段 | 创单返回/展示的支付卡片信息必须包含「账户」字段；该字段会从脚本输出中返回 `username` |\n| 不自动查单或查余额 | 支付页生成后流程结束，不因支付确认词自动查询订单状态或余额 |\n| 必须提示手动查询余额 | 支付页生成后提示：如支付成功后，可输入「查询余额」了解账户详情 |\n| 查询余额独立触发 | 只有用户明确输入「查询余额」等余额查询意图时，才查询并展示账户、总可用次数、已使用次数、剩余次数、是否余额不足 |\n| 禁止泄露敏感凭据 | 私钥只能内存传递，禁止输出、落盘或以任何形式回显；除首次或发生变化的存根提醒外，禁止提及或展示敏感存根相关内容 |\n\n---\n\n## 充值套餐\n\n### 🔴 【强制性展示要求 - 必须执行】\n\n**必须同时展示所有套餐，包括专属定制套餐！** 禁止隐藏或省略定制套餐入口。每次展示套餐列表时，必须完整显示以下所有 5 个套餐。\n\n| 编号 | 套餐 | 金额 | 可用次数 | 备注 |\n|----|------|------|----------|------|\n| 0 | **测试套餐** | ¥0.01 | 10 次 | 测试专用；仅用户明确要求显示/使用测试套餐时展示 |\n| 1 | **体验套餐** | ¥9.9 | 500 次 | 试用 |\n| 2 | **标准套餐** | ¥30 | 1200 次 | 常用 |\n| 3 | **专业套餐** | ¥300 | 15000 次 | ⭐ 推荐，高频使用，单次成本更优 |\n| 4 | **专属定制** | 按需定制 | 按需配置 | ✅ **必须显示**！请联系邮箱 product@lifeemergence.com |\n\n### 📌 强制显示规则\n\n| 规则 | 级别 | 说明 |\n|---|---|---|\n| **必须显示套餐 4（专属定制）** | 🔴 强制性 | 无论用户是否询问，每次展示套餐列表时都必须包含定制套餐，禁止只显示 1-3 号套餐 |\n| **定制套餐必须有明显标识** | 🔴 强制性 | 定制套餐必须标注「✅ 必须显示」等醒目标识 |\n| **禁止省略定制套餐** | 🔴 强制性 | 不得以任何理由隐藏、省略或延后展示定制套餐 |\n| **定制套餐位置** | ✅ 应当 | 始终放在套餐列表的最后一行，作为高级选项展示 |\n| **🔴🔴 测试套餐默认绝对隐藏（最高优先级）** | 🔴🔴 双重强约束 | **首次展示套餐列表时，套餐 0 必须绝对隐藏，绝对不能出现在列表中！** 只有当用户明确说出「测试套餐」、「选 0」、「0 号套餐」、「我要测试」等明确关键词时，才可以展示套餐 0。禁止提前设置环境变量、禁止提前包含在列表中、禁止任何形式的提前暴露！ |\n| **🔴 环境变量设置时机严格管控** | 🔴 强制性 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE` 环境变量 **只能在用户明确选择测试套餐之后、创建订单之前的那个瞬间设置**，绝对不能在展示套餐列表之前就设置。正确顺序：展示套餐 1-4 → 用户选 0 → 设置环境变量 → 创建订单。顺序绝对不能颠倒！颠倒顺序即视为严重逻辑错误！ |\n| **🔴 禁止逻辑前置** | 🔴 强制性 | 禁止因为「预判用户可能选测试套餐」而提前启用。必须严格按用户输入触发，没说就绝对不能显示！ |\n\n### 🧠 防错记忆强化（必须背诵）\n\n**套餐展示口诀：**\n```\n充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！\n```\n\n**禁止擅自下单口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n自动继续或自选，都是严重违规；\n擅自代客做决定，严重违规要追责！\n```\n\n**完整流程口诀：**\n```\n一展套餐（1-4），二等用户选；\n用户说选几，就下几的单；\n自动继续或自选，绝对不允许；\n这是红线区，违反必追责！\n```\n\n### ⚠️ 典型错误案例警示\n\n| ❌ 错误做法 | ✅ 正确做法 | 错误级别 |\n|---|---|---|\n| 用户输入「技能账户充值续费」，直接展示套餐 0-4 | 用户输入「技能账户充值续费」，只展示套餐 1-4 | 🔴 严重逻辑错误 |\n| 展示套餐列表前就设置 `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` | 用户选 0 之后、创单之前才设置环境变量 | 🔴 严重逻辑错误 |\n| 预判用户可能选测试而提前启用 | 严格按用户实际输入触发 | 🔴 逻辑错误 |\n| **用户输入「技能账户充值续费」，展示套餐列表后，没有等待用户回复就直接调用下单脚本或自动选择套餐** | **展示套餐列表后，必须等待用户明确回复选择哪个套餐（如「选 1」、「体验套餐」），才能调用下单脚本** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n| **擅自代用户选择套餐（如默认选 1 号套餐）** | **绝对不能替用户做决定，必须由用户明确选择** | **🔴🔴🔴 三重红线 - 严重违规事故** |\n\n### 🧠 记忆强化口诀\n```\n套餐要展示，定制不能少；\n少了定制项，就是没做好；\n四条全显示，用户才知道！\n```\n\n---\n\n## 推荐入口\n\n测试套餐：\n\n```bash\nSMYX_PAYMENT_SHOW_TEST_PACKAGE=1 python3 -u -m skills.smyx_payment.scripts.start_recharge 0\n```\n\n正式套餐：\n\n```bash\npython3 -u -m skills.smyx_payment.scripts.start_recharge 1\npython3 -u -m skills.smyx_payment.scripts.start_recharge 2\npython3 -u -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n脚本会：\n1. 创建云端订单；\n2. 生成支付宝支付卡片；\n3. 提示用户完成支付；\n4. 提示用户如支付成功后，可输入「查询余额」了解账户详情；\n5. 结束当前支付生成流程，不自动查询订单状态或余额。\n\n### 支付方式说明\n\n由于支付宝「当面付」接口需要商户单独开通权限（报 `ACQ.ACCESS_FORBIDDEN` 错误），**当前采用支付宝网页支付模式**：\n\n| 项目 | 说明 |\n|------|------|\n| **支付接口** | `alipay.trade.page.pay`（网页支付） |\n| **二维码生成** | 使用公共服务 api.qrserver.com 将支付链接编码为二维码 |\n| **用户体验** | 打开支付宝直接扫码，自动识别并进入支付页面，无需手动跳转 |\n| **支付效果** | 与「当面付」扫码体验一致，都是直接扫码支付 |\n\n### 「当面付」开通说明（可选升级）\n\n如果需要使用支付宝原生支付码（格式：`https://qr.alipay.com/xxx`），需要：\n1. 登录支付宝商户平台\n2. 进入「产品中心」→ 找到「当面付」产品\n3. 签约并开通当面付权限\n4. 审核通过后即可使用 alipay.trade.precreate 接口生成原生支付码\n\n当前网页支付二维码方案已能满足绝大多数场景，用户体验与原生支付码一致。\n\n### 支付卡片输出规范\n\n---\n\n# ⚠️ 🔴 【强制性前置检查 - 必须执行，违者追责】🔴 ⚠️\n\n### 🚨 生成支付卡片前，**必须先执行平台检测**，这是最高优先级的强制要求！\n\n| 检查项 | 强制要求 | 违反后果 |\n|---|---|---|\n| **平台检测** | ✅ 必须调用 `platform_detection.get_current_platform()` | ❌ 禁止生成支付卡片 |\n| **渲染方式判断** | ✅ 必须根据平台结果选择二维码渲染方式 | ❌ 禁止硬编码 MEDIA 或 HTML |\n| **ArkClaw 平台** | ✅ 必须使用 HTML `<img>` 标签 | ❌ 绝对禁止使用 `MEDIA:` 指令 |\n| **OpenClaw 平台** | ✅ 必须使用 `MEDIA:` 指令 | ❌ 禁止使用 HTML `<img>` 标签 |\n\n#### 🧠 记忆强化口诀\n```\n生成支付卡，先把平台查；\nArkClaw 用 img，OpenClaw 用 MEDIA；\n忘记这一步，就是大傻瓜！\n```\n\n#### 🔍 检查清单（生成前必须逐项核对）\n- [ ] 是否已调用 `get_current_platform()` 获取平台信息？\n- [ ] 是否已将平台信息存储在变量中？\n- [ ] 是否已根据 platform 字段判断渲染方式？\n- [ ] ArkClaw → `<img src=\"...\">`\n- [ ] OpenClaw → `MEDIA:...`\n- [ ] 确认二维码 URL 格式正确（300x300px）\n- [ ] 确认没有在代码中硬编码渲染方式\n\n---\n\n## 🔴【兜底策略 - 确保二维码 100% 显示】（最高优先级）\n\n### 问题背景\n\n当平台检测失败（返回 `unknown`）或渲染指令（`MEDIA:` / HTML `<img>`）未被系统解析时，用户可能看不到二维码图片。\n\n### 兜底方案\n\n**必须执行以下兜底流程，确保二维码始终以图片形式送达用户：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| **1️⃣ 下载二维码图片** | 使用 `curl` 或 `requests` 将二维码图片下载到本地临时文件（如 `/tmp/payment_qr.png`） | 🔴 必须 |\n| **2️⃣ 使用 message 工具发送** | 调用 `message` 工具，使用 `filePath` 或 `media` 参数发送本地图片文件 | 🔴 必须 |\n| **3️⃣ 附带支付信息** | 在 `caption` 中包含充值信息（套餐、金额、订单号、账户、ApiKey 提醒） | 🔴 必须 |\n| **4️⃣ 验证发送结果** | 检查 `message` 工具返回的 `ok` 字段，失败时重试或提示用户 | ✅ 应当 |\n\n### 兜底触发条件\n\n| 情况 | 触发兜底 |\n|---|---|\n| 平台检测返回 `unknown` | ✅ 立即触发 |\n| 平台置信度 < 50% | ✅ 立即触发 |\n| 用户反馈「看不到二维码」 | ✅ 立即触发 |\n| 首次支付流程 | ✅ 建议触发（预防性） |\n\n### 兜底代码示例\n\n```python\nimport subprocess\nimport tempfile\nimport os\n\ndef send_qr_fallback(qr_url: str, caption: str):\n    \"\"\"兜底：下载二维码并用 message 工具发送\"\"\"\n    # 1. 下载到临时文件\n    tmp_path = tempfile.mktemp(suffix=\".png\")\n    subprocess.run([\"curl\", \"-s\", qr_url, \"-o\", tmp_path], check=True)\n    \n    # 2. 用 message 工具发送\n    from openclaw_tools import message\n    result = message(action=\"send\", filePath=tmp_path, caption=caption)\n    \n    # 3. 清理临时文件\n    if os.path.exists(tmp_path):\n        os.remove(tmp_path)\n    \n    return result\n```\n\n### 记忆强化口诀\n```\n平台检测若失败，兜底策略马上来；\n下载图片发文件，用户肯定看得见！\n```\n\n---\n\n支付卡片必须包含以下内容，且二维码必须直接以图片形式显示在界面上。**必须根据平台检测结果选择渲染方式**，确保在当前环境下正常显示：\n\n```markdown\n================================================================================\n# 🦞 小龙虾主厨 · 套餐充值\n================================================================================\n\n## 📦 充值信息\n\n| 项目 | 内容 |\n|------|------|\n| **套餐** | {套餐名称} |\n| **金额** | ¥{金额} 元 |\n| **次数** | {次数} 次 |\n| **订单号** | {订单号} |\n| **账户** | {账户} |\n| **支付方式** | 支付宝当面付（直接扫码） |\n\n## 📱 支付宝支付信息\n\n### 🖼️ 支付二维码\n\n🔴 【根据平台检测结果自动选择以下方式之一，禁止同时显示两种】\n\n**✅ ArkClaw 平台（检测到 platform='arkclaw'）：**\n`<img src=\"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}\" alt=\"支付二维码\" width=\"300\" height=\"300\" />`\n\n**✅ OpenClaw 平台（检测到 platform='openclaw'）：**\n`MEDIA:https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}`\n\n💡 请使用支付宝“扫一扫”扫描上方二维码完成支付。\n\n--------------------------------------------------------------------------------\n✅ 支付信息已生成。\n💬 请使用支付宝完成支付。\n🔎 如支付成功后，可输入「查询余额」了解账户详情。\n--------------------------------------------------------------------------------\n```\n\n### 优化说明\n\n**二维码图片显示优化（🔴 强制性执行标准）：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| 1 | **调用 `platform_detection.get_current_platform()` 获取平台信息** | 🔴 必须 |\n| 2 | **判断返回的 `platform` 字段值** | 🔴 必须 |\n| 3 | `arkclaw` → 使用 HTML `<img>` 标签显示二维码 | 🔴 必须 |\n| 4 | `openclaw` → 使用 `MEDIA:` 指令显示二维码 | 🔴 必须 |\n| 5 | 禁止在界面中以任何形式显示支付链接和暴露支付宝的支付url, 避免在对话框中显示 URL | ✅ 应当 |\n| 6 | 禁止输出备用方式说明；不得提示打开支付宝付款网页版、复制链接或查看支付 URL | 🔴 必须 |\n| 7 | 支付方式明确标注为\"支付宝当面付\"，提供更清晰的支付指引 | ✅ 应当 |\n\n**🧠 记忆锚点：**\n- 平台检测不是「可选项」，而是「前置条件」\n- 不检测平台 → 不生成支付卡片\n- 检测平台后选错渲染方式 → 属于「严重错误」\n- 每次生成都要默念：先检测，后渲染！\n\n**适配场景：**\n- 聊天应用（如微信、钉钉、企业微信）\n- 网页端聊天界面\n- 各种支持图片显示的平台\n- 保持支付流程的完整性和安全性\n\n### 二维码生成说明\n\n- **生成方式**：使用公共二维码生成服务 api.qrserver.com\n- **尺寸**：300x300px，确保扫码清晰\n- **数据**：底层支付参数仅用于生成二维码，不得在用户可见文本中展示\n- **显示**：仅以二维码图片形式展示；禁止额外输出备用链接、支付 URL、打开付款页面链接或复制链接说明\n\n### 支付卡片后的用户提示语\n\n```\n支付页已生成。请完成扫码支付。\n如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n### 用户手动查询余额后的成功提示语\n\n```\n🎉🎉🎉\n✅ 账户详情查询完成！\n🎉🎉🎉\n\n→ 展示完整余额信息表格：账户、总可用次数、已使用次数、剩余次数、是否余额不足。\n```\n\n### 支付页生成后禁止行为\n\n```\n不要提示用户回复「已支付」或「支付成功」。\n不要因用户支付确认词自动查询订单状态或余额。\n仅提示：如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n---\n\n## 安全规则\n\n1. 云端 API 失败或未返回 `orderNo` 时必须终止，禁止降级。\n2. 禁止本地生成订单号，禁止猜测订单号。\n3. `privateKey` 只能来自云端创单响应，并仅在当前进程内存中传递给支付宝签名/查询函数。\n4. 禁止把 `privateKey` 写入文件、环境变量、命令行参数或用户可见输出。\n5. 若云端创单返回敏感存根，系统仅可在内部完成本地保存与比对，任何情况下都不得向用户透露、暗示或展示该存根的存放路径。\n6. 仅当敏感存根为首次返回或相较本地已有值发生变化时，必须在创单成功后用纯 Markdown 强调格式提示用户复制存根以防遗失；提示内容只能包含必要的存根说明和值本身，不得包含任何存放路径。提示模板如下：\n\n   # ⚠️ **重要：您的 ApiKey 为：`{敏感存根}`**\n\n   ## **请务必复制存根，以免遗失。**\n\n7. 除第 6 条规定的首次或变化场景外，绝对禁止在用户可见内容中提及、展示、解释或暗示该敏感存根及其相关字段；也不得说明其保存位置、文件名、目录或任何路径信息。\n\nFile v1.0.21:_meta.json\n\n{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.21\",\n  \"publishedAt\": 1783453122311\n}\n\nFile v1.0.21:references/alipay-integration-guide.md\n\n# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-wallet` 开通\n3. **支付凭证**：支付成功后保存 paymentProof 用于回调\n4. **测试模式**：API 不可用时会自动使用模拟数据\n\n---\n\n## 文件清单\n\n| 文件                              | 用途       |\n|---------------------------------|----------|\n| `scripts/index.py`              | 主入口，完整流程 |\n| `scripts/alipay_integration.py` | 支付宝集成模块  |\n| `scripts/query.py`              | 账户查询     |\n| `scripts/recharge.py`           | 充值流程     |\n| `scripts/callback.py`           | 支付回调     |\n\n---\n\n## 快速测试\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行完整充值流程（会看到支付宝链接）\npython3 index.py recharge 13800138000\n```\n\nFile v1.0.21:references/alipay-merchant-config.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.21:references/api-config.md\n\n# symx_payment API 配置参考\n\n## 云端 API 配置\n\n### 基础配置\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"YOUR_BEARER_TOKEN_HERE\"\n}\n```\n\n### 接口路径\n\n| 接口     | 路径                      | 方法   | 说明               |\n|--------|-------------------------|------|------------------|\n| 账户查询   | `/api/account/query`    | POST | 查询账户余额、使用次数等     |\n| 创建充值订单 | `/api/account/recharge` | POST | 创建充值订单，返回支付宝支付参数 |\n| 支付成功回调 | `/api/payment/success`  | POST | 支付成功后回写数据        |\n| 支付失败回调 | `/api/payment/fail`     | POST | 支付失败后记录          |\n\n---\n\n## 接口详情\n\n### 1. 账户查询接口\n\n**请求：**\n\n```json\nPOST /api/account/query\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"totalRecharged\": 1000.00,\n  \"balance\": 50.00,\n  \"remainingUses\": 10,\n  \"usedCount\": 90,\n  \"isInsufficient\": false\n}\n```\n\n---\n\n### 2. 创建充值订单接口\n\n**请求：**\n\n```json\nPOST /api/account/recharge\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\",\n\"amount\": 100,\n\"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n\"packageType\": \"标准套餐\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"amount\": 100,\n  \"alipayParams\": {\n    // 支付宝支付参数\n  },\n  \"cashierUrl\": \"https://cashier.alipay.com/...\"\n}\n```\n\n---\n\n### 3. 支付成功回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/success\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"paymentProof\": \"支付宝支付凭证\",\n\"amount\": 100,\n\"phoneNumber\": \"13800138000\",\n\"status\": \"SUCCESS\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"rechargedAmount\": 100,\n  \"rechargedCount\": 1,\n  \"newBalance\": 150\n}\n```\n\n---\n\n### 4. 支付失败回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/fail\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"errorReason\": \"用户取消支付\",\n\"phoneNumber\": \"13800138000\",\n\"status\": \"FAILED\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"message\": \"已记录失败\"\n}\n```\n\n---\n\n## 配置方式\n\n### 方式 1：修改脚本中的 API_CONFIG\n\n直接编辑 `scripts/query.py`、`scripts/recharge.py`、`scripts/callback.py` 中的 `API_CONFIG` 字典。\n\n### 方式 2：使用环境变量（推荐）\n\n```bash\nexport SYMX_API_BASE_URL=\"https://lifeemergence.com/jeecg-boot-xzgz\"\nexport SYMX_API_TOKEN=\"your-bearer-token\"\nexport SYMX_API_AUTH_TYPE=\"bearer\"\n```\n\n### 方式 3：创建配置文件\n\n在 `references/` 目录下创建 `config.json`：\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"your-bearer-token\",\n  \"queryPath\": \"/api/account/query\",\n  \"rechargePath\": \"/api/account/recharge\",\n  \"callbackSuccessPath\": \"/api/payment/success\",\n  \"callbackFailPath\": \"/api/payment/fail\"\n}\n```\n\n---\n\n## 充值金额档位\n\n默认档位：`[10, 50, 100, 500]` 元\n\n可在 `scripts/recharge.py` 中修改 `RECHARGE_AMOUNTS` 列表自定义档位。\n\n---\n\n## 充值明细格式\n\n默认格式：\n\n```\n增值账户续费 - {套餐类型} - 账号：{手机号} - 金额：{金额}元 - 备注：{备注}\n```\n\n套餐类型可选：\n\n- 体验套餐\n- 标准套餐\n- 专业套餐\n\n---\n\n## 测试命令\n\n```bash\n# 测试账户查询\npython3 scripts/query.py 13800138000 <token>\n\n# 测试充值明细生成\npython3 scripts/recharge.py\n\n# 测试回调（需要真实订单 ID）\npython3 scripts/callback.py\n```\n\nFile v1.0.21:scripts/config.yaml\n\n{}\n\nFile v1.0.21:scripts/qr_base64.txt\n\n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\n\nFile v1.0.21:skills/smyx_common/scripts/config-dev.yaml\n\nApiEnum:\n  base-url-open-api: \"http://192.168.1.234:9601/smyx-open-api\"\n  base-url-open-h5: \"http://192.168.1.234:4100\"\n  base-url-health: \"http://192.168.1.234:7070/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.21:skills/smyx_common/scripts/config-test.yaml\n\nApiEnum:\n  base-url-open-api: \"https://livemonitortest.lifeemergence.com/smyx-open-api\"\n  base-url-open-h5: \"http://livemonitortest.lifeemergence.com\"\n  base-url-health: \"https://healthtest.lifeemergence.com/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.21:skills/smyx_common/scripts/config.yaml\n\nApiEnum:\n  api-key: null\n  api-secret-key: null\n  base-url-health: https://lifeemergence.com/jeecg-boot-xzgz\n  base-url-open-api: https://open.lifeemergence.com/smyx-open-api\n  base-url-open-h5: http://livemonitor.lifeemergence.com\n  database-url: null\nConstantEnum:\n  app--id: x1a3s4nwy1s2r4se\n  current--tentant-code: XIAN_ZHAO_GAN_ZHI\n  default--skill-platform-name: ARK_CLAW\n  feishu-app--id: cli_a93d769369badcb1\n  feishu-app--secret: null\n  is-debug: false\nenv: prod\n\nFile v1.0.21:CONFIG_GUIDE.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.21:FEATURES_实时状态输出.md\n\n# 🚀 smyx_payment 新增功能：实时订单状态输出\n\n## ✨ 功能概述\n\n在生成支付宝支付页面后，**主动启动自动支付状态检测**，实时将支付宝订单状态输出到对话框，包括：\n- ⏳ **WAIT_BUYER_PAY** - 待支付，等待用户扫码付款\n- ✅ **TRADE_SUCCESS** - 已支付，支付成功\n- ✅ **TRADE_FINISHED** - 已完成，交易已完成且不可退款\n- ❌ **TRADE_CLOSED** - 已关闭，支付超时或已取消\n\n## 📁 新增文件\n\n| 文件 | 说明 |\n|------|------|\n| `scripts/payment_flow_with_status.py` | 增强版完整支付流程 - 核心功能实现 |\n| `scripts/start_recharge.py` | 一键启动充值入口脚本 |\n| `FEATURES_实时状态输出.md` | 本功能说明文档 |\n\n## 🎯 核心功能点\n\n### 1️⃣ 🔴 自动提示 - 状态检测启动\n生成支付页面后立即输出醒目的红色提示：\n```\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n```\n\n### 2️⃣ 📊 实时状态输出 - 每3秒检测一次\n```\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:31] ... 状态检测中 ...\n[20:10:33] ... 状态检测中 ...\n[20:10:35] ⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ⏳ 待支付 - 等待用户扫码付款\n```\n\n### 3️⃣ 🎉 支付成功 - 自动查询余额\n```\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n### 4️⃣ ⏰ 超时处理 - 友好提示\n```\n⏰⏰⏰ ...\n⏰ 自动检测时间已结束 (120秒)\n💡 若您已完成支付，请回复「已支付」\n💡 我将立即为您验证订单并更新账户余额！\n⏰⏰⏰ ...\n```\n\n## 🚀 使用方法\n\n### 方式一：一键启动（推荐）\n```bash\n# 格式：python3 -m skills.smyx_payment.scripts.start_recharge <套餐编号>\n\n# 测试套餐 ¥0.01\npython3 -m skills.smyx_payment.scripts.start_recharge 0\n\n# 体验套餐 ¥9.9\npython3 -m skills.smyx_payment.scripts.start_recharge 1\n\n# 标准套餐 ¥30\npython3 -m skills.smyx_payment.scripts.start_recharge 2\n\n# 专业套餐 ¥300\npython3 -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n### 方式二：Python 代码调用\n```python\nfrom skills.smyx_payment.scripts.payment_flow_with_status import create_order_and_show_payment_with_status\n\n# 启动增强版支付流程\ncreate_order_and_show_payment_with_status(\n    amount=0.01,              # 金额\n    package_name='测试套餐',  # 套餐名称\n    uses=10,                   # 次数\n    phone=None,  # 系统自动完成内部身份关联\n    timeout_seconds=120,       # 自动检测超时时间\n    poll_interval=3            # 轮询间隔（秒）\n)\n```\n\n## 🔧 可配置参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `timeout_seconds` | 120 | 自动检测时长（秒），超时后提示手动回复「已支付」 |\n| `poll_interval` | 3 | 订单状态轮询间隔（秒） |\n\n## 📋 订单状态对照表\n\n| 支付宝状态码 | 中文描述 | 处理逻辑 |\n|------------|---------|---------|\n| `WAIT_BUYER_PAY` | ⏳ 待支付 | 继续轮询，等待用户扫码付款 |\n| `TRADE_SUCCESS` | ✅ 已支付 | 支付成功！自动查询余额并展示完整信息 |\n| `TRADE_FINISHED` | ✅ 已完成 | 交易完成且不可退款，自动查询余额 |\n| `TRADE_CLOSED` | ❌ 已关闭 | 支付超时或已取消，终止流程并提示重新充值 |\n\n## 🎨 设计亮点\n\n1. **友好的视觉效果** - 使用 emoji 和分隔线让输出更易读\n2. **状态变化高亮** - 状态变化时用醒目的分隔线提示\n3. **智能频率控制** - 相同状态每5次才完整输出一次，避免刷屏\n4. **优雅超时处理** - 超时后不是直接退出，而是提示用户手动触发\n5. **自动余额查询** - 支付成功后无需用户操作，自动查询并展示余额\n6. **完整信息展示** - 输出表格化的账户信息，清晰明了\n\n## 🔄 与原有功能的兼容性\n\n- ✅ 完全兼容原有 `recharge.py`、`pay_with_cloud_order.py` 等脚本\n- ✅ 原有功能保持不变，新增功能作为增强选项\n- ✅ 可以随时切换使用旧版本或增强版\n- ✅ 所有订单都通过云端API创建，保证数据一致性\n\n## 📝 使用示例输出\n\n```\n🦞🦞🦞 ... (40个小龙虾emoji)\n🦞 小龙虾主厨 · 欢迎使用增强版充值流程！\n🦞🦞🦞 ...\n\n✅ 已选择套餐: 测试套餐\n✅ 充值金额: ¥0.01\n✅ 可用次数: 10 次\n\n🔴 本增强版特色功能：\n   ✨ 生成支付页面后自动提示：正在检测支付状态\n   ✨ 实时轮询，每3秒检测一次\n   ✨ 订单状态实时输出到对话框\n   ✨ 状态变化高亮显示\n   ✨ 支持：WAIT_BUYER_PAY(待支付)、TRADE_SUCCESS(已支付)、TRADE_CLOSED(支付失败)\n   ✨ 支付成功后自动查询余额并展示完整信息\n\n📦📦📦 ...\n📦 正在创建云端订单...\n📦📦📦 ...\n[当前套餐] 测试套餐 [获得服务次数] 10\n✅ 订单创建成功！\n🔢 订单号: HY26061720100824386631\n💰 金额: ¥0.01\n📦 套餐: 测试套餐\n🎯 次数: 10 次\n\n... (支付二维码iframe)\n\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:32] ... 状态检测中 ...\n... (用户扫码支付成功)\n\n⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ✅ 已支付 - 支付成功，订单已完成\n   💰 支付金额: 0.01 元\n   🕐 支付时间: 2026-06-17 20:10:34\n   📝 交易号: 2026061722001428061436956105\n\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n---\n\n**🦞 小龙虾主厨提醒您：充值更智能，体验更顺畅！** ✨\n\nArchive v1.0.20: 84 files, 139457 bytes\n\nFiles: __init__.py (0b), CONFIG_GUIDE.md (981b), FEATURES_实时状态输出.md (8208b), PAYMENT_FLOW_OPTIMIZED.md (6487b), PAYMENT_READY.md (981b), payment-success-example.html (5207b), references/alipay-integration-guide.md (5064b), references/alipay-merchant-config.md (981b), references/api-config.md (3741b), scripts/__init__.py (0b), scripts/_dynamic_import.py (2774b), scripts/alipay_integration.py (3784b), scripts/alipay_pay.py (359b), scripts/alipay_real_payment.py (259b), scripts/api_key_config.py (3527b), scripts/api_service.py (4103b), scripts/auto_poll_order.py (358b), scripts/callback.py (4688b), scripts/check_order_status.py (293b), scripts/check_payment_status.py (293b), scripts/cloud_api_auth.py (10944b), scripts/config.py (912b), scripts/config.yaml (3b), scripts/create_embed_payment_and_monitor.py (11122b), scripts/create_payment_and_monitor.py (6021b), scripts/create_virtual_order.py (7355b), scripts/demo_alipay_payment.py (6400b), scripts/demo_flow.py (5780b), scripts/demo_real_payment.py (6678b), scripts/generate_keys.py (459b), scripts/generate_pay_url.py (415b), scripts/generate_qr.py (1369b), scripts/generate_qrcode.py (4120b), scripts/index.py (12030b), scripts/notify_payment_success.py (2643b), scripts/open_id.py (5613b), scripts/order_status_checker.py (8843b), scripts/order_status_poller.py (193b), scripts/package_config.py (2518b), scripts/pay_now.py (299b), scripts/pay_with_cloud_order.py (11072b), scripts/payment_flow_with_status.py (9519b), scripts/payment_flow.py (545b), scripts/payment_simple.py (529b), scripts/payment_utils.py (5919b), scripts/platform_detection.py (6498b), scripts/print_notify_url.py (231b), scripts/qr_base64.txt (6212b), scripts/query_after_payment.py (1594b), scripts/query.py (4316b), scripts/recharge_interactive.py (7004b), scripts/recharge.py (9407b), scripts/select_package.py (4951b), scripts/skill.py (516b), scripts/start_recharge.py (3569b), scripts/test_1cent_payment.py (6602b), scripts/test_full_flow.py (7444b), scripts/test_jsapi.py (211b), scripts/test_key.py (187b), scripts/test_notify.py (953b), scripts/test_order_binding.py (4444b), scripts/test_package_transfer.py (1519b), scripts/test_recharge.py (1687b), scripts/token_manager.py (10305b), SIGN_CONTRACT_GUIDE.md (6369b), skill-card.md (2699b), SKILL.md (17519b), skills/smyx_common/__init__.py (0b), skills/smyx_common/requirements.txt (47b), skills/smyx_common/scripts/__init__.py (177b), skills/smyx_common/scripts/api_service.py (2645b), skills/smyx_common/scripts/base.py (469b), skills/smyx_common/scripts/config-dev.yaml (214b), skills/smyx_common/scripts/config-prod.yaml (0b), skills/smyx_common/scripts/config-test.yaml (256b), skills/smyx_common/scripts/config.py (22801b), skills/smyx_common/scripts/config.yaml (473b), skills/smyx_common/scripts/dao.py (18266b), skills/smyx_common/scripts/skill.py (2473b), skills/smyx_common/scripts/util.py (28605b)\n\nFile v1.0.20:SKILL.md\n\n---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码/支付链接生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n【2】用户选择套餐\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝支付链接，再生成二维码图片\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 必须先选择套餐 | 用户回复选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trade_no` 必须来自云端返回的 `orderNo` |\n| 获取不到 orderNo 必须终止 | 云端 API 失败时立即终止，禁止降级、绕过或猜测 |\n| 必须处理敏感存根提醒 | 创单响应如返回新的敏感存根，必须与本地已有存根比较；首次或发生变化时保存，并用红色加粗提示用户复制存根以防遗失 |\n| 必须展示支付卡片 | 必须展示「付款二维码图片」，禁止出现支付链接, 统一使用公共二维码生成服务直接生成 300x300px 的二维码图片显示在界面上；**自动检测平台并智能选择二维码渲染方式**（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令）；用户可见会话中禁止出现底层嵌入实现等技术用语 |\n| 支付卡片必须包含账户字段 | 创单返回/展示的支付卡片信息必须包含「账户」字段；该字段会从脚本输出中返回 `username` |\n| 不自动查单或查余额 | 支付页生成后流程结束，不因支付确认词自动查询订单状态或余额 |\n| 必须提示手动查询余额 | 支付页生成后提示：如支付成功后，可输入「查询余额」了解账户详情 |\n| 查询余额独立触发 | 只有用户明确输入「查询余额」等余额查询意图时，才查询并展示账户、总可用次数、已使用次数、剩余次数、是否余额不足 |\n| 禁止泄露敏感凭据 | 私钥只能内存传递，禁止输出、落盘或以任何形式回显；除首次或发生变化的存根提醒外，禁止提及或展示敏感存根相关内容 |\n\n---\n\n## 充值套餐\n\n### 🔴 【强制性展示要求 - 必须执行】\n\n**必须同时展示所有套餐，包括专属定制套餐！** 禁止隐藏或省略定制套餐入口。每次展示套餐列表时，必须完整显示以下所有 5 个套餐。\n\n| 编号 | 套餐 | 金额 | 可用次数 | 备注 |\n|----|------|------|----------|------|\n| 0 | **测试套餐** | ¥0.01 | 10 次 | 测试专用；仅用户明确要求显示/使用测试套餐时展示 |\n| 1 | **体验套餐** | ¥9.9 | 500 次 | 试用 |\n| 2 | **标准套餐** | ¥30 | 1200 次 | 常用 |\n| 3 | **专业套餐** | ¥300 | 15000 次 | ⭐ 推荐，高频使用，单次成本更优 |\n| 4 | **专属定制** | 按需定制 | 按需配置 | ✅ **必须显示**！请联系邮箱 product@lifeemergence.com |\n\n### 📌 强制显示规则\n\n| 规则 | 级别 | 说明 |\n|---|---|---|\n| **必须显示套餐 4（专属定制）** | 🔴 强制性 | 无论用户是否询问，每次展示套餐列表时都必须包含定制套餐，禁止只显示 1-3 号套餐 |\n| **定制套餐必须有明显标识** | 🔴 强制性 | 定制套餐必须标注「✅ 必须显示」等醒目标识 |\n| **禁止省略定制套餐** | 🔴 强制性 | 不得以任何理由隐藏、省略或延后展示定制套餐 |\n| **定制套餐位置** | ✅ 应当 | 始终放在套餐列表的最后一行，作为高级选项展示 |\n| **🔴🔴 测试套餐默认绝对隐藏（最高优先级）** | 🔴🔴 双重强约束 | **首次展示套餐列表时，套餐 0 必须绝对隐藏，绝对不能出现在列表中！** 只有当用户明确说出「测试套餐」、「选 0」、「0 号套餐」、「我要测试」等明确关键词时，才可以展示套餐 0。禁止提前设置环境变量、禁止提前包含在列表中、禁止任何形式的提前暴露！ |\n| **🔴 环境变量设置时机严格管控** | 🔴 强制性 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE` 环境变量 **只能在用户明确选择测试套餐之后、创建订单之前的那个瞬间设置**，绝对不能在展示套餐列表之前就设置。正确顺序：展示套餐 1-4 → 用户选 0 → 设置环境变量 → 创建订单。顺序绝对不能颠倒！颠倒顺序即视为严重逻辑错误！ |\n| **🔴 禁止逻辑前置** | 🔴 强制性 | 禁止因为「预判用户可能选测试套餐」而提前启用。必须严格按用户输入触发，没说就绝对不能显示！ |\n\n### 🧠 防错记忆强化（必须背诵）\n```\n充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！\n```\n\n### ⚠️ 典型错误案例警示\n\n| ❌ 错误做法 | ✅ 正确做法 | 错误级别 |\n|---|---|---|\n| 用户输入「技能账户充值续费」，直接展示套餐 0-4 | 用户输入「技能账户充值续费」，只展示套餐 1-4 | 🔴 严重逻辑错误 |\n| 展示套餐列表前就设置 `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` | 用户选 0 之后、创单之前才设置环境变量 | 🔴 严重逻辑错误 |\n| 预判用户可能选测试而提前启用 | 严格按用户实际输入触发 | 🔴 逻辑错误 |\n\n### 🧠 记忆强化口诀\n```\n套餐要展示，定制不能少；\n少了定制项，就是没做好；\n四条全显示，用户才知道！\n```\n\n---\n\n## 推荐入口\n\n测试套餐：\n\n```bash\nSMYX_PAYMENT_SHOW_TEST_PACKAGE=1 python3 -u -m skills.smyx_payment.scripts.start_recharge 0\n```\n\n正式套餐：\n\n```bash\npython3 -u -m skills.smyx_payment.scripts.start_recharge 1\npython3 -u -m skills.smyx_payment.scripts.start_recharge 2\npython3 -u -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n脚本会：\n1. 创建云端订单；\n2. 生成支付宝支付卡片；\n3. 提示用户完成支付；\n4. 提示用户如支付成功后，可输入「查询余额」了解账户详情；\n5. 结束当前支付生成流程，不自动查询订单状态或余额。\n\n### 支付方式说明\n\n由于支付宝「当面付」接口需要商户单独开通权限（报 `ACQ.ACCESS_FORBIDDEN` 错误），**当前采用支付宝网页支付模式**：\n\n| 项目 | 说明 |\n|------|------|\n| **支付接口** | `alipay.trade.page.pay`（网页支付） |\n| **二维码生成** | 使用公共服务 api.qrserver.com 将支付链接编码为二维码 |\n| **用户体验** | 打开支付宝直接扫码，自动识别并进入支付页面，无需手动跳转 |\n| **支付效果** | 与「当面付」扫码体验一致，都是直接扫码支付 |\n\n### 「当面付」开通说明（可选升级）\n\n如果需要使用支付宝原生支付码（格式：`https://qr.alipay.com/xxx`），需要：\n1. 登录支付宝商户平台\n2. 进入「产品中心」→ 找到「当面付」产品\n3. 签约并开通当面付权限\n4. 审核通过后即可使用 alipay.trade.precreate 接口生成原生支付码\n\n当前网页支付二维码方案已能满足绝大多数场景，用户体验与原生支付码一致。\n\n### 支付卡片输出规范\n\n---\n\n# ⚠️ 🔴 【强制性前置检查 - 必须执行，违者追责】🔴 ⚠️\n\n### 🚨 生成支付卡片前，**必须先执行平台检测**，这是最高优先级的强制要求！\n\n| 检查项 | 强制要求 | 违反后果 |\n|---|---|---|\n| **平台检测** | ✅ 必须调用 `platform_detection.get_current_platform()` | ❌ 禁止生成支付卡片 |\n| **渲染方式判断** | ✅ 必须根据平台结果选择二维码渲染方式 | ❌ 禁止硬编码 MEDIA 或 HTML |\n| **ArkClaw 平台** | ✅ 必须使用 HTML `<img>` 标签 | ❌ 绝对禁止使用 `MEDIA:` 指令 |\n| **OpenClaw 平台** | ✅ 必须使用 `MEDIA:` 指令 | ❌ 禁止使用 HTML `<img>` 标签 |\n\n#### 🧠 记忆强化口诀\n```\n生成支付卡，先把平台查；\nArkClaw 用 img，OpenClaw 用 MEDIA；\n忘记这一步，就是大傻瓜！\n```\n\n#### 🔍 检查清单（生成前必须逐项核对）\n- [ ] 是否已调用 `get_current_platform()` 获取平台信息？\n- [ ] 是否已将平台信息存储在变量中？\n- [ ] 是否已根据 platform 字段判断渲染方式？\n- [ ] ArkClaw → `<img src=\"...\">`\n- [ ] OpenClaw → `MEDIA:...`\n- [ ] 确认二维码 URL 格式正确（300x300px）\n- [ ] 确认没有在代码中硬编码渲染方式\n\n---\n\n支付卡片必须包含以下内容，且二维码必须直接以图片形式显示在界面上。**必须根据平台检测结果选择渲染方式**，确保在当前环境下正常显示：\n\n```markdown\n================================================================================\n# 🦞 小龙虾主厨 · 套餐充值\n================================================================================\n\n## 📦 充值信息\n\n| 项目 | 内容 |\n|------|------|\n| **套餐** | {套餐名称} |\n| **金额** | ¥{金额} 元 |\n| **次数** | {次数} 次 |\n| **订单号** | {订单号} |\n| **账户** | {账户} |\n| **支付方式** | 支付宝当面付（直接扫码） |\n\n## 📱 支付宝支付信息\n\n### 🖼️ 支付二维码\n\n🔴 【根据平台检测结果自动选择以下方式之一，禁止同时显示两种】\n\n**✅ ArkClaw 平台（检测到 platform='arkclaw'）：**\n`<img src=\"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}\" alt=\"支付二维码\" width=\"300\" height=\"300\" />`\n\n**✅ OpenClaw 平台（检测到 platform='openclaw'）：**\n`MEDIA:https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}`\n\n### 🔗 支付方式\n\n💡 支付宝当面付（推荐）：\n   使用支付宝 '扫一扫' 功能扫描以下二维码：\n   支付二维码图片\n\n--------------------------------------------------------------------------------\n✅ 支付信息已生成。\n💬 请使用支付宝完成支付。\n🔎 如支付成功后，可输入「查询余额」了解账户详情。\n--------------------------------------------------------------------------------\n```\n\n### 优化说明\n\n**二维码图片显示优化（🔴 强制性执行标准）：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| 1 | **调用 `platform_detection.get_current_platform()` 获取平台信息** | 🔴 必须 |\n| 2 | **判断返回的 `platform` 字段值** | 🔴 必须 |\n| 3 | `arkclaw` → 使用 HTML `<img>` 标签显示二维码 | 🔴 必须 |\n| 4 | `openclaw` → 使用 `MEDIA:` 指令显示二维码 | 🔴 必须 |\n| 5 | 禁止在界面中以任何形式显示支付链接和暴露支付宝的支付url, 避免在对话框中显示 URL | ✅ 应当 |\n| 6 | 备用方式说明更加友好，提示打开支付宝付款网页版(禁止显示支付url在界面中) | ✅ 应当 |\n| 7 | 支付方式明确标注为\"支付宝当面付\"，提供更清晰的支付指引 | ✅ 应当 |\n\n**🧠 记忆锚点：**\n- 平台检测不是「可选项」，而是「前置条件」\n- 不检测平台 → 不生成支付卡片\n- 检测平台后选错渲染方式 → 属于「严重错误」\n- 每次生成都要默念：先检测，后渲染！\n\n**适配场景：**\n- 聊天应用（如微信、钉钉、企业微信）\n- 网页端聊天界面\n- 各种支持图片显示的平台\n- 保持支付流程的完整性和安全性\n\n### 二维码生成说明\n\n- **生成方式**：使用公共二维码生成服务 api.qrserver.com\n- **尺寸**：300x300px，确保扫码清晰\n- **数据**：支付宝网页支付链接直接编码到二维码中\n- **显示**：使用 HTML `<img>` 标签展示，配合圆角、边框、阴影样式，美观且兼容性好\n\n### 支付卡片后的用户提示语\n\n```\n支付页已生成。请完成扫码支付。\n如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n### 用户手动查询余额后的成功提示语\n\n```\n🎉🎉🎉\n✅ 账户详情查询完成！\n🎉🎉🎉\n\n→ 展示完整余额信息表格：账户、总可用次数、已使用次数、剩余次数、是否余额不足。\n```\n\n### 支付页生成后禁止行为\n\n```\n不要提示用户回复「已支付」或「支付成功」。\n不要因用户支付确认词自动查询订单状态或余额。\n仅提示：如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n---\n\n## 安全规则\n\n1. 云端 API 失败或未返回 `orderNo` 时必须终止，禁止降级。\n2. 禁止本地生成订单号，禁止猜测订单号。\n3. `privateKey` 只能来自云端创单响应，并仅在当前进程内存中传递给支付宝签名/查询函数。\n4. 禁止把 `privateKey` 写入文件、环境变量、命令行参数或用户可见输出。\n5. 若云端创单返回敏感存根，系统仅可在内部完成本地保存与比对，任何情况下都不得向用户透露、暗示或展示该存根的存放路径。\n6. 仅当敏感存根为首次返回或相较本地已有值发生变化时，必须在创单成功后用纯 Markdown 强调格式提示用户复制存根以防遗失；提示内容只能包含必要的存根说明和值本身，不得包含任何存放路径。提示模板如下：\n\n   # ⚠️ **重要：您的 ApiKey 为：`{敏感存根}`**\n\n   ## **请务必复制存根，以免遗失。**\n\n7. 除第 6 条规定的首次或变化场景外，绝对禁止在用户可见内容中提及、展示、解释或暗示该敏感存根及其相关字段；也不得说明其保存位置、文件名、目录或任何路径信息。\n\nFile v1.0.20:_meta.json\n\n{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.20\",\n  \"publishedAt\": 1783007574404\n}\n\nFile v1.0.20:references/alipay-integration-guide.md\n\n# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-wallet` 开通\n3. **支付凭证**：支付成功后保存 paymentProof 用于回调\n4. **测试模式**：API 不可用时会自动使用模拟数据\n\n---\n\n## 文件清单\n\n| 文件                              | 用途       |\n|---------------------------------|----------|\n| `scripts/index.py`              | 主入口，完整流程 |\n| `scripts/alipay_integration.py` | 支付宝集成模块  |\n| `scripts/query.py`              | 账户查询     |\n| `scripts/recharge.py`           | 充值流程     |\n| `scripts/callback.py`           | 支付回调     |\n\n---\n\n## 快速测试\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行完整充值流程（会看到支付宝链接）\npython3 index.py recharge 13800138000\n```\n\nFile v1.0.20:references/alipay-merchant-config.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.20:references/api-config.md\n\n# symx_payment API 配置参考\n\n## 云端 API 配置\n\n### 基础配置\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"YOUR_BEARER_TOKEN_HERE\"\n}\n```\n\n### 接口路径\n\n| 接口     | 路径                      | 方法   | 说明               |\n|--------|-------------------------|------|------------------|\n| 账户查询   | `/api/account/query`    | POST | 查询账户余额、使用次数等     |\n| 创建充值订单 | `/api/account/recharge` | POST | 创建充值订单，返回支付宝支付参数 |\n| 支付成功回调 | `/api/payment/success`  | POST | 支付成功后回写数据        |\n| 支付失败回调 | `/api/payment/fail`     | POST | 支付失败后记录          |\n\n---\n\n## 接口详情\n\n### 1. 账户查询接口\n\n**请求：**\n\n```json\nPOST /api/account/query\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"totalRecharged\": 1000.00,\n  \"balance\": 50.00,\n  \"remainingUses\": 10,\n  \"usedCount\": 90,\n  \"isInsufficient\": false\n}\n```\n\n---\n\n### 2. 创建充值订单接口\n\n**请求：**\n\n```json\nPOST /api/account/recharge\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\",\n\"amount\": 100,\n\"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n\"packageType\": \"标准套餐\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"amount\": 100,\n  \"alipayParams\": {\n    // 支付宝支付参数\n  },\n  \"cashierUrl\": \"https://cashier.alipay.com/...\"\n}\n```\n\n---\n\n### 3. 支付成功回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/success\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"paymentProof\": \"支付宝支付凭证\",\n\"amount\": 100,\n\"phoneNumber\": \"13800138000\",\n\"status\": \"SUCCESS\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"rechargedAmount\": 100,\n  \"rechargedCount\": 1,\n  \"newBalance\": 150\n}\n```\n\n---\n\n### 4. 支付失败回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/fail\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"errorReason\": \"用户取消支付\",\n\"phoneNumber\": \"13800138000\",\n\"status\": \"FAILED\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"message\": \"已记录失败\"\n}\n```\n\n---\n\n## 配置方式\n\n### 方式 1：修改脚本中的 API_CONFIG\n\n直接编辑 `scripts/query.py`、`scripts/recharge.py`、`scripts/callback.py` 中的 `API_CONFIG` 字典。\n\n### 方式 2：使用环境变量（推荐）\n\n```bash\nexport SYMX_API_BASE_URL=\"https://lifeemergence.com/jeecg-boot-xzgz\"\nexport SYMX_API_TOKEN=\"your-bearer-token\"\nexport SYMX_API_AUTH_TYPE=\"bearer\"\n```\n\n### 方式 3：创建配置文件\n\n在 `references/` 目录下创建 `config.json`：\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"your-bearer-token\",\n  \"queryPath\": \"/api/account/query\",\n  \"rechargePath\": \"/api/account/recharge\",\n  \"callbackSuccessPath\": \"/api/payment/success\",\n  \"callbackFailPath\": \"/api/payment/fail\"\n}\n```\n\n---\n\n## 充值金额档位\n\n默认档位：`[10, 50, 100, 500]` 元\n\n可在 `scripts/recharge.py` 中修改 `RECHARGE_AMOUNTS` 列表自定义档位。\n\n---\n\n## 充值明细格式\n\n默认格式：\n\n```\n增值账户续费 - {套餐类型} - 账号：{手机号} - 金额：{金额}元 - 备注：{备注}\n```\n\n套餐类型可选：\n\n- 体验套餐\n- 标准套餐\n- 专业套餐\n\n---\n\n## 测试命令\n\n```bash\n# 测试账户查询\npython3 scripts/query.py 13800138000 <token>\n\n# 测试充值明细生成\npython3 scripts/recharge.py\n\n# 测试回调（需要真实订单 ID）\npython3 scripts/callback.py\n```\n\nFile v1.0.20:scripts/config.yaml\n\n{}\n\nFile v1.0.20:scripts/qr_base64.txt\n\n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\n\nFile v1.0.20:skills/smyx_common/scripts/config-dev.yaml\n\nApiEnum:\n  base-url-open-api: \"http://192.168.1.234:9601/smyx-open-api\"\n  base-url-open-h5: \"http://192.168.1.234:4100\"\n  base-url-health: \"http://192.168.1.234:7070/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.20:skills/smyx_common/scripts/config-test.yaml\n\nApiEnum:\n  base-url-open-api: \"https://livemonitortest.lifeemergence.com/smyx-open-api\"\n  base-url-open-h5: \"http://livemonitortest.lifeemergence.com\"\n  base-url-health: \"https://healthtest.lifeemergence.com/jeecg-boot-xzgz\"\n\nConstantEnum:\n  is-debug: true\n\nFile v1.0.20:skills/smyx_common/scripts/config.yaml\n\nApiEnum:\n  api-key: null\n  api-secret-key: null\n  base-url-health: https://lifeemergence.com/jeecg-boot-xzgz\n  base-url-open-api: https://open.lifeemergence.com/smyx-open-api\n  base-url-open-h5: http://livemonitor.lifeemergence.com\n  database-url: null\nConstantEnum:\n  app--id: x1a3s4nwy1s2r4se\n  current--tentant-code: XIAN_ZHAO_GAN_ZHI\n  default--skill-platform-name: ARK_CLAW\n  feishu-app--id: cli_a93d769369badcb1\n  feishu-app--secret: null\n  is-debug: false\nenv: prod\n\nFile v1.0.20:CONFIG_GUIDE.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。\n\nFile v1.0.20:FEATURES_实时状态输出.md\n\n# 🚀 smyx_payment 新增功能：实时订单状态输出\n\n## ✨ 功能概述\n\n在生成支付宝支付页面后，**主动启动自动支付状态检测**，实时将支付宝订单状态输出到对话框，包括：\n- ⏳ **WAIT_BUYER_PAY** - 待支付，等待用户扫码付款\n- ✅ **TRADE_SUCCESS** - 已支付，支付成功\n- ✅ **TRADE_FINISHED** - 已完成，交易已完成且不可退款\n- ❌ **TRADE_CLOSED** - 已关闭，支付超时或已取消\n\n## 📁 新增文件\n\n| 文件 | 说明 |\n|------|------|\n| `scripts/payment_flow_with_status.py` | 增强版完整支付流程 - 核心功能实现 |\n| `scripts/start_recharge.py` | 一键启动充值入口脚本 |\n| `FEATURES_实时状态输出.md` | 本功能说明文档 |\n\n## 🎯 核心功能点\n\n### 1️⃣ 🔴 自动提示 - 状态检测启动\n生成支付页面后立即输出醒目的红色提示：\n```\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n```\n\n### 2️⃣ 📊 实时状态输出 - 每3秒检测一次\n```\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:31] ... 状态检测中 ...\n[20:10:33] ... 状态检测中 ...\n[20:10:35] ⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ⏳ 待支付 - 等待用户扫码付款\n```\n\n### 3️⃣ 🎉 支付成功 - 自动查询余额\n```\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n### 4️⃣ ⏰ 超时处理 - 友好提示\n```\n⏰⏰⏰ ...\n⏰ 自动检测时间已结束 (120秒)\n💡 若您已完成支付，请回复「已支付」\n💡 我将立即为您验证订单并更新账户余额！\n⏰⏰⏰ ...\n```\n\n## 🚀 使用方法\n\n### 方式一：一键启动（推荐）\n```bash\n# 格式：python3 -m skills.smyx_payment.scripts.start_recharge <套餐编号>\n\n# 测试套餐 ¥0.01\npython3 -m skills.smyx_payment.scripts.start_recharge 0\n\n# 体验套餐 ¥9.9\npython3 -m skills.smyx_payment.scripts.start_recharge 1\n\n# 标准套餐 ¥30\npython3 -m skills.smyx_payment.scripts.start_recharge 2\n\n# 专业套餐 ¥300\npython3 -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n### 方式二：Python 代码调用\n```python\nfrom skills.smyx_payment.scripts.payment_flow_with_status import create_order_and_show_payment_with_status\n\n# 启动增强版支付流程\ncreate_order_and_show_payment_with_status(\n    amount=0.01,              # 金额\n    package_name='测试套餐',  # 套餐名称\n    uses=10,                   # 次数\n    phone=None,  # 系统自动完成内部身份关联\n    timeout_seconds=120,       # 自动检测超时时间\n    poll_interval=3            # 轮询间隔（秒）\n)\n```\n\n## 🔧 可配置参数\n\n| 参数 | 默认值 | 说明 |\n|------|--------|------|\n| `timeout_seconds` | 120 | 自动检测时长（秒），超时后提示手动回复「已支付」 |\n| `poll_interval` | 3 | 订单状态轮询间隔（秒） |\n\n## 📋 订单状态对照表\n\n| 支付宝状态码 | 中文描述 | 处理逻辑 |\n|------------|---------|---------|\n| `WAIT_BUYER_PAY` | ⏳ 待支付 | 继续轮询，等待用户扫码付款 |\n| `TRADE_SUCCESS` | ✅ 已支付 | 支付成功！自动查询余额并展示完整信息 |\n| `TRADE_FINISHED` | ✅ 已完成 | 交易完成且不可退款，自动查询余额 |\n| `TRADE_CLOSED` | ❌ 已关闭 | 支付超时或已取消，终止流程并提示重新充值 |\n\n## 🎨 设计亮点\n\n1. **友好的视觉效果** - 使用 emoji 和分隔线让输出更易读\n2. **状态变化高亮** - 状态变化时用醒目的分隔线提示\n3. **智能频率控制** - 相同状态每5次才完整输出一次，避免刷屏\n4. **优雅超时处理** - 超时后不是直接退出，而是提示用户手动触发\n5. **自动余额查询** - 支付成功后无需用户操作，自动查询并展示余额\n6. **完整信息展示** - 输出表格化的账户信息，清晰明了\n\n## 🔄 与原有功能的兼容性\n\n- ✅ 完全兼容原有 `recharge.py`、`pay_with_cloud_order.py` 等脚本\n- ✅ 原有功能保持不变，新增功能作为增强选项\n- ✅ 可以随时切换使用旧版本或增强版\n- ✅ 所有订单都通过云端API创建，保证数据一致性\n\n## 📝 使用示例输出\n\n```\n🦞🦞🦞 ... (40个小龙虾emoji)\n🦞 小龙虾主厨 · 欢迎使用增强版充值流程！\n🦞🦞🦞 ...\n\n✅ 已选择套餐: 测试套餐\n✅ 充值金额: ¥0.01\n✅ 可用次数: 10 次\n\n🔴 本增强版特色功能：\n   ✨ 生成支付页面后自动提示：正在检测支付状态\n   ✨ 实时轮询，每3秒检测一次\n   ✨ 订单状态实时输出到对话框\n   ✨ 状态变化高亮显示\n   ✨ 支持：WAIT_BUYER_PAY(待支付)、TRADE_SUCCESS(已支付)、TRADE_CLOSED(支付失败)\n   ✨ 支付成功后自动查询余额并展示完整信息\n\n📦📦📦 ...\n📦 正在创建云端订单...\n📦📦📦 ...\n[当前套餐] 测试套餐 [获得服务次数] 10\n✅ 订单创建成功！\n🔢 订单号: HY26061720100824386631\n💰 金额: ¥0.01\n📦 套餐: 测试套餐\n🎯 次数: 10 次\n\n... (支付二维码iframe)\n\n🔴🔴🔴 ...\n🔴 正在启动自动支付状态检测...\n🔴🔴🔴 ...\n\n📋 订单状态说明：\n   ⏳ WAIT_BUYER_PAY  - 待支付，等待您扫码付款\n   ✅ TRADE_SUCCESS   - 支付成功，订单完成\n   ✅ TRADE_FINISHED  - 交易已完成且不可退款\n   ❌ TRADE_CLOSED    - 支付超时或已取消\n\n⏱️  自动检测时长: 120秒，每3秒检测一次\n💡 超时后如需验证，请手动回复「已支付」\n\n--------------------------------------------------------------------------------\n🔍 开始实时检测订单状态...\n--------------------------------------------------------------------------------\n\n[20:10:29] 🔍 查询中 - 正在获取订单状态\n[20:10:32] ... 状态检测中 ...\n... (用户扫码支付成功)\n\n⚠️  状态变化检测！➡️➡️➡️...\n[20:10:35] ✅ 已支付 - 支付成功，订单已完成\n   💰 支付金额: 0.01 元\n   🕐 支付时间: 2026-06-17 20:10:34\n   📝 交易号: 2026061722001428061436956105\n\n🎉🎉🎉 ...\n✅ 订单支付成功！订单号: HY26061720100824386631\n🎉🎉🎉 ...\n\n📊📊📊 ...\n📊 正在自动查询账户余额...\n📊📊📊 ...\n\n============================================================\n🦞 支付状态已验证成功，充值已入账！\n============================================================\n\n| 项目 | 内容 |\n|------|------|\n| **账户** | 13822542262 |\n| **总可用次数** | 101 次 |\n| **已使用次数** | 41 次 |\n| **剩余次数** | ✅ 60 次 |\n| **余额不足** | 否 |\n\n============================================================\n✅ 当前剩余 60 次，可以继续使用技能！\n============================================================\n\n🦞 虾主厨祝您使用愉快！有任何问题随时找我～\n```\n\n---\n\n**🦞 小龙虾主厨提醒您：充值更智能，体验更顺畅！** ✨\n\nArchive v1.0.19: 84 files, 139511 bytes\n\nFiles: __init__.py (0b), CONFIG_GUIDE.md (981b), FEATURES_实时状态输出.md (8208b), PAYMENT_FLOW_OPTIMIZED.md (6487b), PAYMENT_READY.md (981b), payment-success-example.html (5207b), references/alipay-integration-guide.md (5064b), references/alipay-merchant-config.md (981b), references/api-config.md (3741b), scripts/__init__.py (0b), scripts/_dynamic_import.py (2774b), scripts/alipay_integration.py (3784b), scripts/alipay_pay.py (359b), scripts/alipay_real_payment.py (259b), scripts/api_key_config.py (3527b), scripts/api_service.py (4103b), scripts/auto_poll_order.py (358b), scripts/callback.py (4688b), scripts/check_order_status.py (293b), scripts/check_payment_status.py (293b), scripts/cloud_api_auth.py (10944b), scripts/config.py (912b), scripts/config.yaml (3b), scripts/create_embed_payment_and_monitor.py (11122b), scripts/create_payment_and_monitor.py (6021b), scripts/create_virtual_order.py (7355b), scripts/demo_alipay_payment.py (6400b), scripts/demo_flow.py (5780b), scripts/demo_real_payment.py (6678b), scripts/generate_keys.py (459b), scripts/generate_pay_url.py (415b), scripts/generate_qr.py (1369b), scripts/generate_qrcode.py (4120b), scripts/index.py (12030b), scripts/notify_payment_success.py (2643b), scripts/open_id.py (5613b), scripts/order_status_checker.py (8843b), scripts/order_status_poller.py (193b), scripts/package_config.py (2518b), scripts/pay_now.py (299b), scripts/pay_with_cloud_order.py (11072b), scripts/payment_flow_with_status.py (9519b), scripts/payment_flow.py (545b), scripts/payment_simple.py (529b), scripts/payment_utils.py (5919b), scripts/platform_detection.py (6498b), scripts/print_notify_url.py (231b), scripts/qr_base64.txt (6212b), scripts/query_after_payment.py (1594b), scripts/query.py (4316b), scripts/recharge_interactive.py (7004b), scripts/recharge.py (9407b), scripts/select_package.py (4951b), scripts/skill.py (516b), scripts/start_recharge.py (3569b), scripts/test_1cent_payment.py (6602b), scripts/test_full_flow.py (7444b), scripts/test_jsapi.py (211b), scripts/test_key.py (187b), scripts/test_notify.py (953b), scripts/test_order_binding.py (4444b), scripts/test_package_transfer.py (1519b), scripts/test_recharge.py (1687b), scripts/token_manager.py (10305b), SIGN_CONTRACT_GUIDE.md (6369b), skill-card.md (2958b), SKILL.md (17725b), skills/smyx_common/__init__.py (0b), skills/smyx_common/requirements.txt (47b), skills/smyx_common/scripts/__init__.py (177b), skills/smyx_common/scripts/api_service.py (2645b), skills/smyx_common/scripts/base.py (469b), skills/smyx_common/scripts/config-dev.yaml (214b), skills/smyx_common/scripts/config-prod.yaml (0b), skills/smyx_common/scripts/config-test.yaml (256b), skills/smyx_common/scripts/config.py (22801b), skills/smyx_common/scripts/config.yaml (473b), skills/smyx_common/scripts/dao.py (18266b), skills/smyx_common/scripts/skill.py (2473b), skills/smyx_common/scripts/util.py (28605b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码/支付链接生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n【2】用户选择套餐\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝支付链接，再生成二维码图片\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 必须先选择套餐 | 用户回复选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trade_no` 必须来自云端返回的 `orderNo` |\n| 获取不到 orderNo 必须终止 | 云端 API 失败时立即终止，禁止降级、绕过或猜测 |\n| 必须处理敏感存根提醒 | 创单响应如返回新的敏感存根，必须与本地已有存根比较；首次或发生变化时保存，并用红色加粗提示用户复制存根以防遗失 |\n| 必须展示支付卡片 | 必须同时展示「付款二维码图片」和「打开支付宝付款页面」超链接备用方式；两种方式必须同时出现，禁止只展示其中一种；使用公共二维码生成服务直接生成 300x300px 的二维码图片显示在界面上；**自动检测平台并智能选择二维码渲染方式**（ArkClaw 使用 HTML `<img>` 标签，OpenClaw 使用 `MEDIA:` 指令）；用户可见会话中禁止出现底层嵌入实现等技术用语 |\n| 支付卡片必须包含账户字段 | 创单返回/展示的支付卡片信息必须包含「账户」字段；该字段会从脚本输出中返回 `username` |\n| 不自动查单或查余额 | 支付页生成后流程结束，不因支付确认词自动查询订单状态或余额 |\n| 必须提示手动查询余额 | 支付页生成后提示：如支付成功后，可输入「查询余额」了解账户详情 |\n| 查询余额独立触发 | 只有用户明确输入「查询余额」等余额查询意图时，才查询并展示账户、总可用次数、已使用次数、剩余次数、是否余额不足 |\n| 禁止泄露敏感凭据 | 私钥只能内存传递，禁止输出、落盘或以任何形式回显；除首次或发生变化的存根提醒外，禁止提及或展示敏感存根相关内容 |\n\n---\n\n## 充值套餐\n\n### 🔴 【强制性展示要求 - 必须执行】\n\n**必须同时展示所有套餐，包括专属定制套餐！** 禁止隐藏或省略定制套餐入口。每次展示套餐列表时，必须完整显示以下所有 5 个套餐。\n\n| 编号 | 套餐 | 金额 | 可用次数 | 备注 |\n|----|------|------|----------|------|\n| 0 | **测试套餐** | ¥0.01 | 10 次 | 测试专用；仅用户明确要求显示/使用测试套餐时展示 |\n| 1 | **体验套餐** | ¥9.9 | 500 次 | 试用 |\n| 2 | **标准套餐** | ¥30 | 1200 次 | 常用 |\n| 3 | **专业套餐** | ¥300 | 15000 次 | ⭐ 推荐，高频使用，单次成本更优 |\n| 4 | **专属定制** | 按需定制 | 按需配置 | ✅ **必须显示**！请联系邮箱 product@lifeemergence.com |\n\n### 📌 强制显示规则\n\n| 规则 | 级别 | 说明 |\n|---|---|---|\n| **必须显示套餐 4（专属定制）** | 🔴 强制性 | 无论用户是否询问，每次展示套餐列表时都必须包含定制套餐，禁止只显示 1-3 号套餐 |\n| **定制套餐必须有明显标识** | 🔴 强制性 | 定制套餐必须标注「✅ 必须显示」等醒目标识 |\n| **禁止省略定制套餐** | 🔴 强制性 | 不得以任何理由隐藏、省略或延后展示定制套餐 |\n| **定制套餐位置** | ✅ 应当 | 始终放在套餐列表的最后一行，作为高级选项展示 |\n| **🔴🔴 测试套餐默认绝对隐藏（最高优先级）** | 🔴🔴 双重强约束 | **首次展示套餐列表时，套餐 0 必须绝对隐藏，绝对不能出现在列表中！** 只有当用户明确说出「测试套餐」、「选 0」、「0 号套餐」、「我要测试」等明确关键词时，才可以展示套餐 0。禁止提前设置环境变量、禁止提前包含在列表中、禁止任何形式的提前暴露！ |\n| **🔴 环境变量设置时机严格管控** | 🔴 强制性 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE` 环境变量 **只能在用户明确选择测试套餐之后、创建订单之前的那个瞬间设置**，绝对不能在展示套餐列表之前就设置。正确顺序：展示套餐 1-4 → 用户选 0 → 设置环境变量 → 创建订单。顺序绝对不能颠倒！颠倒顺序即视为严重逻辑错误！ |\n| **🔴 禁止逻辑前置** | 🔴 强制性 | 禁止因为「预判用户可能选测试套餐」而提前启用。必须严格按用户输入触发，没说就绝对不能显示！ |\n\n### 🧠 防错记忆强化（必须背诵）\n```\n充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！\n```\n\n### ⚠️ 典型错误案例警示\n\n| ❌ 错误做法 | ✅ 正确做法 | 错误级别 |\n|---|---|---|\n| 用户输入「技能账户充值续费」，直接展示套餐 0-4 | 用户输入「技能账户充值续费」，只展示套餐 1-4 | 🔴 严重逻辑错误 |\n| 展示套餐列表前就设置 `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` | 用户选 0 之后、创单之前才设置环境变量 | 🔴 严重逻辑错误 |\n| 预判用户可能选测试而提前启用 | 严格按用户实际输入触发 | 🔴 逻辑错误 |\n\n### 🧠 记忆强化口诀\n```\n套餐要展示，定制不能少；\n少了定制项，就是没做好；\n四条全显示，用户才知道！\n```\n\n---\n\n## 推荐入口\n\n测试套餐：\n\n```bash\nSMYX_PAYMENT_SHOW_TEST_PACKAGE=1 python3 -u -m skills.smyx_payment.scripts.start_recharge 0\n```\n\n正式套餐：\n\n```bash\npython3 -u -m skills.smyx_payment.scripts.start_recharge 1\npython3 -u -m skills.smyx_payment.scripts.start_recharge 2\npython3 -u -m skills.smyx_payment.scripts.start_recharge 3\n```\n\n脚本会：\n1. 创建云端订单；\n2. 生成支付宝支付卡片；\n3. 提示用户完成支付；\n4. 提示用户如支付成功后，可输入「查询余额」了解账户详情；\n5. 结束当前支付生成流程，不自动查询订单状态或余额。\n\n### 支付方式说明\n\n由于支付宝「当面付」接口需要商户单独开通权限（报 `ACQ.ACCESS_FORBIDDEN` 错误），**当前采用支付宝网页支付模式**：\n\n| 项目 | 说明 |\n|------|------|\n| **支付接口** | `alipay.trade.page.pay`（网页支付） |\n| **二维码生成** | 使用公共服务 api.qrserver.com 将支付链接编码为二维码 |\n| **用户体验** | 打开支付宝直接扫码，自动识别并进入支付页面，无需手动跳转 |\n| **支付效果** | 与「当面付」扫码体验一致，都是直接扫码支付 |\n\n### 「当面付」开通说明（可选升级）\n\n如果需要使用支付宝原生支付码（格式：`https://qr.alipay.com/xxx`），需要：\n1. 登录支付宝商户平台\n2. 进入「产品中心」→ 找到「当面付」产品\n3. 签约并开通当面付权限\n4. 审核通过后即可使用 alipay.trade.precreate 接口生成原生支付码\n\n当前网页支付二维码方案已能满足绝大多数场景，用户体验与原生支付码一致。\n\n### 支付卡片输出规范\n\n---\n\n# ⚠️ 🔴 【强制性前置检查 - 必须执行，违者追责】🔴 ⚠️\n\n### 🚨 生成支付卡片前，**必须先执行平台检测**，这是最高优先级的强制要求！\n\n| 检查项 | 强制要求 | 违反后果 |\n|---|---|---|\n| **平台检测** | ✅ 必须调用 `platform_detection.get_current_platform()` | ❌ 禁止生成支付卡片 |\n| **渲染方式判断** | ✅ 必须根据平台结果选择二维码渲染方式 | ❌ 禁止硬编码 MEDIA 或 HTML |\n| **ArkClaw 平台** | ✅ 必须使用 HTML `<img>` 标签 | ❌ 绝对禁止使用 `MEDIA:` 指令 |\n| **OpenClaw 平台** | ✅ 必须使用 `MEDIA:` 指令 | ❌ 禁止使用 HTML `<img>` 标签 |\n\n#### 🧠 记忆强化口诀\n```\n生成支付卡，先把平台查；\nArkClaw 用 img，OpenClaw 用 MEDIA；\n忘记这一步，就是大傻瓜！\n```\n\n#### 🔍 检查清单（生成前必须逐项核对）\n- [ ] 是否已调用 `get_current_platform()` 获取平台信息？\n- [ ] 是否已将平台信息存储在变量中？\n- [ ] 是否已根据 platform 字段判断渲染方式？\n- [ ] ArkClaw → `<img src=\"...\">`\n- [ ] OpenClaw → `MEDIA:...`\n- [ ] 确认二维码 URL 格式正确（300x300px）\n- [ ] 确认没有在代码中硬编码渲染方式\n\n---\n\n支付卡片必须包含以下内容，且二维码必须直接以图片形式显示在界面上。**必须根据平台检测结果选择渲染方式**，确保在当前环境下正常显示：\n\n```markdown\n================================================================================\n# 🦞 小龙虾主厨 · 套餐充值\n================================================================================\n\n## 📦 充值信息\n\n| 项目 | 内容 |\n|------|------|\n| **套餐** | {套餐名称} |\n| **金额** | ¥{金额} 元 |\n| **次数** | {次数} 次 |\n| **订单号** | {订单号} |\n| **账户** | {账户} |\n| **支付方式** | 支付宝当面付（直接扫码） |\n\n## 📱 支付宝支付信息\n\n### 🖼️ 支付二维码\n\n🔴 【根据平台检测结果自动选择以下方式之一，禁止同时显示两种】\n\n**✅ ArkClaw 平台（检测到 platform='arkclaw'）：**\n`<img src=\"https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}\" alt=\"支付二维码\" width=\"300\" height=\"300\" />`\n\n**✅ OpenClaw 平台（检测到 platform='openclaw'）：**\n`MEDIA:https://api.qrserver.com/v1/create-qr-code/?size=300x300&data={支付链接}`\n\n### 🔗 支付方式\n\n💡 支付宝当面付（推荐）：\n   使用支付宝 '扫一扫' 功能扫描以下二维码：\n   支付链接：{支付链接}\n\n### 📲 备用方式\n\n[👉 点击打开支付宝付款页面]({支付链接})\n\n--------------------------------------------------------------------------------\n✅ 支付信息已生成。\n💬 请使用支付宝完成支付。\n🔎 如支付成功后，可输入「查询余额」了解账户详情。\n--------------------------------------------------------------------------------\n```\n\n### 优化说明\n\n**二维码图片显示优化（🔴 强制性执行标准）：**\n\n| 步骤 | 操作 | 级别 |\n|---|---|---|\n| 1 | **调用 `platform_detection.get_current_platform()` 获取平台信息** | 🔴 必须 |\n| 2 | **判断返回的 `platform` 字段值** | 🔴 必须 |\n| 3 | `arkclaw` → 使用 HTML `<img>` 标签显示二维码 | 🔴 必须 |\n| 4 | `openclaw` → 使用 `MEDIA:` 指令显示二维码 | 🔴 必须 |\n| 5 | 禁止在界面中以任何形式暴露支付宝的支付url(只能通过文字链接的方式), 避免在对话框中显示过长的 URL | ✅ 应当 |\n| 6 | 备用方式说明更加友好，提示打开支付宝付款网页版(禁止显示支付url在界面中) | ✅ 应当 |\n| 7 | 支付方式明确标注为\"支付宝当面付\"，提供更清晰的支付指引 | ✅ 应当 |\n\n**🧠 记忆锚点：**\n- 平台检测不是「可选项」，而是「前置条件」\n- 不检测平台 → 不生成支付卡片\n- 检测平台后选错渲染方式 → 属于「严重错误」\n- 每次生成都要默念：先检测，后渲染！\n\n**适配场景：**\n- 聊天应用（如微信、钉钉、企业微信）\n- 网页端聊天界面\n- 各种支持图片显示的平台\n- 保持支付流程的完整性和安全性\n\n### 二维码生成说明\n\n- **生成方式**：使用公共二维码生成服务 api.qrserver.com\n- **尺寸**：300x300px，确保扫码清晰\n- **数据**：支付宝网页支付链接直接编码到二维码中\n- **显示**：使用 HTML `<img>` 标签展示，配合圆角、边框、阴影样式，美观且兼容性好\n\n### 支付卡片后的用户提示语\n\n```\n支付页已生成。请完成扫码支付。\n如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n### 用户手动查询余额后的成功提示语\n\n```\n🎉🎉🎉\n✅ 账户详情查询完成！\n🎉🎉🎉\n\n→ 展示完整余额信息表格：账户、总可用次数、已使用次数、剩余次数、是否余额不足。\n```\n\n### 支付页生成后禁止行为\n\n```\n不要提示用户回复「已支付」或「支付成功」。\n不要因用户支付确认词自动查询订单状态或余额。\n仅提示：如支付成功后，可输入「查询余额」了解账户详情。\n```\n\n---\n\n## 安全规则\n\n1. 云端 API 失败或未返回 `orderNo` 时必须终止，禁止降级。\n2. 禁止本地生成订单号，禁止猜测订单号。\n3. `privateKey` 只能来自云端创单响应，并仅在当前进程内存中传递给支付宝签名/查询函数。\n4. 禁止把 `privateKey` 写入文件、环境变量、命令行参数或用户可见输出。\n5. 若云端创单返回敏感存根，系统仅可在内部完成本地保存与比对，任何情况下都不得向用户透露、暗示或展示该存根的存放路径。\n6. 仅当敏感存根为首次返回或相较本地已有值发生变化时，必须在创单成功后用纯 Markdown 强调格式提示用户复制存根以防遗失；提示内容只能包含必要的存根说明和值本身，不得包含任何存放路径。提示模板如下：\n\n   # ⚠️ **重要：您的 ApiKey 为：`{敏感存根}`**\n\n   ## **请务必复制存根，以免遗失。**\n\n7. 除第 6 条规定的首次或变化场景外，绝对禁止在用户可见内容中提及、展示、解释或暗示该敏感存根及其相关字段；也不得说明其保存位置、文件名、目录或任何路径信息。\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1782745798147\n}\n\nFile v1.0.19:references/alipay-integration-guide.md\n\n# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-wallet` 开通\n3. **支付凭证**：支付成功后保存 paymentProof 用于回调\n4. **测试模式**：API 不可用时会自动使用模拟数据\n\n---\n\n## 文件清单\n\n| 文件                              | 用途       |\n|---------------------------------|----------|\n| `scripts/index.py`              | 主入口，完整流程 |\n| `scripts/alipay_integration.py` | 支付宝集成模块  |\n| `scripts/query.py`              | 账户查询     |\n| `scripts/recharge.py`           | 充值流程     |\n| `scripts/callback.py`           | 支付回调     |\n\n---\n\n## 快速测试\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行完整充值流程（会看到支付宝链接）\npython3 index.py recharge 13800138000\n```\n\nFile v1.0.19:references/alipay-merchant-config.md\n\n# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query...","readmeExcerpt":"Skill: Recharge / Renew of Skills | 技能账户充值/续费 Owner: smyx-sunjinhui Summary: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：... Tags: latest:1.0.23 Version history: v1.0.23 | 2026-07-10T10:20:16.626Z | auto smyx-payment 1.0.23 - Internal code updates in scripts/open_id.py and skills/smyx_common/scripts/util.p","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"from scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))"},{"language":"text","snippet":"【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n   ⚠️ 【STOP】必须等待用户明确选择套餐！禁止自动继续或自动选择套餐！\n   ↓\n【2】用户选择套餐（用户明确回复「选 1」、「体验套餐」等）\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝付款二维码图片（底层支付参数仅用于生成二维码，不得在用户可见内容中展示）\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询"},{"language":"text","snippet":"套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n擅自代客做决定，严重违规要追责！"},{"language":"text","snippet":"充值第一步，只显一到四；\n用户不说零，绝对不能提；\n先展套餐表，用户选完后；\n才设环境量，顺序不能扭；\n提前显测试，就是大错误！"},{"language":"text","snippet":"套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n自动继续或自选，都是严重违规；\n擅自代客做决定，严重违规要追责！"},{"language":"text","snippet":"一展套餐（1-4），二等用户选；\n用户说选几，就下几的单；\n自动继续或自选，绝对不允许；\n这是红线区，违反必追责！"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: smyx-payment\ndescription: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：技能充值、技能续费、技能余额不足、技能账户、充值、续费、账户充值、账户续费、余额不足、支付宝支付、增值账户、技能套餐、充值套餐、查询余额。\nlicense: \"MIT-0\"\n---\n\n## 🎯 平台自动检测（零用户配置）\n\n本技能内置多维度平台自动检测功能，**无需用户任何配置**，开箱即用。\n\n### 检测维度\n\n| 检测方式 | 说明 | 置信度 |\n|---|---|---|\n| `BUSINESS_CARRIER` 环境变量 | ArkClaw 平台注入的标识变量 | 100% |\n| `SKILLS_API_URL` 环境变量 | 技能商店 URL 中包含 `arkclaw-personal` | 95% |\n| 工作目录路径 | 包含 `.arkclaw-team` 目录 | 85% |\n| ArkClaw 专属环境变量 | `ARK_AGENT_PLAN` / `ARK_API_KEY` 等 | 90% |\n\n### 智能适配效果\n\n| 平台 | 二维码渲染方式 | 用户体验 |\n|---|---|---|\n| 🦞 **ArkClaw（龙虾平台）** | HTML `<img>` 标签 | ✅ 二维码正常显示 |\n| 🐚 **OpenClaw（开源版）** | `MEDIA:` 指令 | ✅ 二维码正常显示 |\n| ❓ 未知平台 | 双重格式同时输出 | ✅ 兼容所有情况 |\n\n### 开发者调用\n\n```python\nfrom scripts.platform_detection import get_current_platform, render_qrcode_markdown\n\n# 获取当前平台信息\nplatform = get_current_platform()\n# {\"platform\": \"arkclaw\", \"confidence\": 1.0, \"method\": \"BUSINESS_CARRIER\", ...}\n\n# 智能渲染二维码\nprint(render_qrcode_markdown(\"https://qr.alipay.com/xxx\"))\n```\n\n---\n\n## 支付流程要求\n\n支付二维码生成后，不再要求用户回复支付确认词，也不自动触发订单状态或余额查询。只提示用户：如支付成功后，可输入「查询余额」了解账户详情。用户可见输出必须只展示付款二维码，禁止显示备用支付链接、支付 URL、打开付款页面链接或任何备用方式说明。\n\n### 标准流程\n\n```\n【1】显示充值套餐（🔴 必须包含所有套餐，包括专属定制套餐 4）\n   ↓\n   ⚠️ 【STOP】必须等待用户明确选择套餐！禁止自动继续或自动选择套餐！\n   ↓\n【2】用户选择套餐（用户明确回复「选 1」、「体验套餐」等）\n   ↓\n【3】系统自动完成内部身份关联（优先复用本地存根；缺失时自动复用/创建本地默认充值账号）\n   ↓\n【4】创建云端订单，必须获取云端 orderNo\n   ↓\n【5】使用云端 orderNo 生成支付宝付款二维码图片（底层支付参数仅用于生成二维码，不得在用户可见内容中展示）\n   ↓\n【6】展示支付卡片给用户\n   ↓\n【7】提示用户：如支付成功后，可输入「查询余额」了解账户详情\n   ↓\n【8】流程结束，等待用户后续手动触发余额查询\n```\n\n### 🔴🔴🔴 【最高优先级红线 - 禁止擅自代用户选择套餐】\n\n**绝对禁止在展示套餐列表后、用户未明确回复前自动调用下单脚本！**\n\n| 错误行为 | 正确做法 | 违规级别 |\n|---|---|---|\n| ❌ 用户输入「技能账户充值续费」→ 直接展示套餐列表 → 自动调用 `start_recharge 1` | ✅ 用户输入「技能账户充值续费」→ 展示套餐列表 → **等待用户回复** → 用户说「选 1」→ 调用 `start_recharge 1` | 🔴🔴🔴 三重红线 |\n| ❌ 展示套餐列表后，不等待用户回复就直接下单 | ✅ 展示套餐列表后，**必须等待用户明确选择**才能下单 | 🔴🔴🔴 三重红线 |\n| ❌ 预判用户可能选某个套餐而提前调用下单脚本 | ✅ 严格按用户实际输入触发，用户没说选哪个就绝对不能下单 | 🔴🔴🔴 三重红线 |\n\n**记忆强化口诀：**\n```\n套餐列表展完后，必须等待用户选；\n用户没说选哪个，绝对不能下单；\n擅自代客做决定，严重违规要追责！\n```\n### 强制要求\n\n| 要求 | 说明 |\n|---|---|\n| 🔴 必须先显示完整套餐信息 | **每次都必须同时展示套餐 1-4（包含专属定制套餐）**；用户明确要求测试套餐时可额外展示套餐 0；禁止只显示 1-3 套餐而省略定制套餐；专属定制套餐必须作为常规选项展示，不能只作为隐藏的联系入口 |\n| 🔴🔴 【双重强约束】测试套餐默认绝对隐藏 | **用户输入「技能账户充值续费」后首次展示套餐列表时，必须绝对隐藏套餐 0（测试套餐），绝对不能显示！** 只有当用户明确说「测试套餐」、「我要测试」、「选 0」、「0 号套餐」等明确关键词时，才可以设置环境变量并展示测试套餐。**禁止在用户未明确要求时提前启用测试套餐、提前设置环境变量、或在套餐列表中包含套餐 0**。这是最高优先级约束，违反即视为严重错误！ |\n| 🔴 环境变量设置时机 | `SMYX_PAYMENT_SHOW_TEST_PACKAGE=1` 环境变量 **只能在用户明确选择测试套餐后、创建订单前的瞬间设置**，绝对不能在展示套餐列表之前设置。先展示套餐 1-4，用户选 0 后才设置环境变量，顺序绝对不能颠倒！ |\n| 🔴🔴🔴 **禁止擅自代用户选择套餐** | **绝对禁止在用户未明确选择套餐编号前自动创建订单！** 用户输入「技能账户充值续费」后，必须先展示套餐列表（1-4），然后**必须等待用户明确回复选择哪个套餐**（如「选 1」、「体验套餐」、「9.9 元那个」等），才能创建订单。**严禁在展示套餐列表后、用户未回复前就自动调用下单脚本！** 这是最高优先级红线，违反即视为严重违规事故！ |\n| 必须先选择套餐 | 用户**明确回复**选择某个可直接下单套餐后，即默认购买该套餐并直接创建订单，禁止再次询问用户是否购买、是否下单或是否确认充值 |\n| 必须自动完成内部身份关联 | 优先复用本地存根；本地存根不可用时，自动复用 `User_` 开头且长度为 11 的本地默认用户；若不存在则自动创建 `User_{6位小写哈希码}` 作为充值账号，不要求用户输入内部身份参数 |\n| 必须使用云端订单号 | 支付宝 `out_trad"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7cyxkr2ymf7zwsrybpedg8xx83ywrj\",\n  \"slug\": \"smyx-payment\",\n  \"version\": \"1.0.23\",\n  \"publishedAt\": 1783678816626\n}"},{"path":"references/alipay-integration-guide.md","content":"# symx_payment - 支付宝支付集成指南\n\n## 问题说明\n\n用户反馈\"看不到支付宝调取\"，这是因为之前的测试脚本使用模拟数据，没有真正输出支付宝收银台链接。\n\n---\n\n## 解决方案\n\n### 方式 1：使用 index.py 脚本（推荐）\n\n**完整充值流程（包含支付宝支付）：**\n\n```bash\ncd /home/admin/.openclaw/skills/symx-payment/scripts\n\n# 运行充值流程\npython3 index.py recharge 13800138000\n```\n\n**输出示例：**\n\n```\n============================================================\n  步骤 5: 调起支付宝支付\n============================================================\n\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n请处理以下支付请求：\n订单 ID: ORD20260428134900\n金额：¥ 100\n收银台链接：https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\n🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n\n[ALIPAY_PAYMENT_REQUEST]\n{\n  \"type\": \"alipay_payment\",\n  \"orderId\": \"ORD20260428134900\",\n  \"amount\": 100,\n  \"cashierUrl\": \"https://excashier.alipay.com/pc.htm?outTradeNo=13800138000_100\",\n  \"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n  \"phoneNumber\": \"13800138000\"\n}\n[/ALIPAY_PAYMENT_REQUEST]\n```\n\n**关键点：** 输出中包含 `excashier.alipay.com` 链接，这会触发 OpenClaw 的 `alipay-pay-for-service` 技能。\n\n---\n\n### 方式 2：使用 alipay_integration.py 模块\n\n```python\nfrom alipay_integration import create_recharge_order, trigger_alipay_payment\n\n# 创建订单\norder_result = create_recharge_order(\n    phone=\"13800138000\",\n    amount=100,\n    package_type=\"标准套餐\",\n    detail=\"增值账户续费 - 标准套餐\"\n)\n\nif order_result[\"success\"]:\n    order = order_result[\"data\"]\n    # 触发支付宝支付\n    payment_output = trigger_alipay_payment(\n        cashier_url=order[\"cashierUrl\"],\n        amount=order[\"amount\"],\n        detail=order[\"detail\"]\n    )\n    print(payment_output)\n```\n\n---\n\n### 方式 3：在 OpenClaw 中自动调用支付宝技能\n\n修改 `SKILL.md` 添加自动调用逻辑：\n\n```markdown\n## 支付宝支付自动调用\n\n当创建充值订单后，自动调用 `alipay-pay-for-service` 技能：\n\n1. 获取收银台链接（cashierUrl）\n2. 使用 sessions_spawn 调用支付宝支付技能\n3. 等待支付完成\n4. 根据结果调用回调接口\n```\n\n**实际调用代码（Python）：**\n\n```python\nimport subprocess\n\n\ndef call_alipay_skill(cashier_url):\n    \"\"\"调用支付宝支付技能\"\"\"\n    # 在 OpenClaw 环境中，这会触发 alipay-pay-for-service 技能\n    cmd = f'openclaw message send --message \"请使用支付宝支付：{cashier_url}\"'\n    subprocess.run(cmd, shell=True)\n```\n\n---\n\n## 测试支付宝支付流程\n\n### 测试命令\n\n```bash\n# 1. 运行充值流程（会输出支付宝链接）\npython3 index.py recharge 13800138000\n\n# 2. 测试支付宝集成模块\npython3 alipay_integration.py\n\n# 3. 测试支付回调（模拟成功）\npython3 index.py callback ORD123 ALIPAY_PROOF_123 13800138000 true\n```\n\n---\n\n## 支付宝技能触发机制\n\n`alipay-pay-for-service` 技能的触发条件：\n\n1. **URL 触发**：消息中包含 `cashier*.alipay.com` 或 `excashier*.alipay.com`\n2. **关键词触发**：消息中包含\"请使用支付宝支付\"等文字\n3. **技能调用**：直接使用 `sessions_spawn` 调用\n\n**我们的实现：**\n\n- `index.py` 输出的链接格式：`https://excashier.alipay.com/pc.htm?...`\n- 符合触发条件 ✅\n\n---\n\n## 完整流程演示\n\n```\n用户：帮我充值 100 元\n\n↓ 执行 python3 index.py recharge 13800138000\n\n1. ✅ 查询账户 → 余额不足\n2. ✅ 选择充值金额 → 100 元\n3. ✅ 生成充值明细\n4. ✅ 创建订单 → 获取 cashierUrl\n5. 🔴 输出支付宝支付请求（包含 excashier.alipay.com 链接）\n   ↓\n   OpenClaw 检测到支付宝链接\n   ↓\n   自动调用 alipay-pay-for-service 技能\n   ↓\n   用户完成支付\n   ↓\n6. ✅ 支付回调 → 更新账户数据\n```\n\n---\n\n## 注意事项\n\n1. **真实 API 环境**：需要配置 Token 和可访问的云端 API\n2. **支付宝钱包**：首次使用需要调用 `alipay-authenticate-"},{"path":"references/alipay-merchant-config.md","content":"# 支付安全配置说明\n\n## privateKey 处理规则\n\n- 支付宝 privateKey 不允许明文写死在代码、文档或配置中。\n- 支付宝 privateKey 不允许保存到本地文件、环境变量、YAML、JSON、日志或临时文件。\n- 支付宝 privateKey 只能来自云端 `create_order` 创单接口返回字段 `privateKey`。\n- H5/网页支付生成签名时，只能以内存参数传入 `create_payment_with_cloud_order(..., private_key_string=...)`。\n- 查询支付宝订单状态时，只能以内存参数传入 `query_alipay_trade_status(..., private_key_string=...)`。\n- 旧版本地密钥文件、密钥生成脚本、独立支付脚本、后台跨进程轮询均已禁用。\n\n## 标准链路\n\n1. 调用云端 `create_order` 创建订单。\n2. 从返回对象读取 `orderNo` 和 `privateKey`。\n3. `orderNo` 作为支付宝 `out_trade_no`。\n4. `privateKey` 仅在当前进程内存中用于签名。\n5. 不打印、不保存、不回显 `privateKey`。"},{"path":"references/api-config.md","content":"# symx_payment API 配置参考\n\n## 云端 API 配置\n\n### 基础配置\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"YOUR_BEARER_TOKEN_HERE\"\n}\n```\n\n### 接口路径\n\n| 接口     | 路径                      | 方法   | 说明               |\n|--------|-------------------------|------|------------------|\n| 账户查询   | `/api/account/query`    | POST | 查询账户余额、使用次数等     |\n| 创建充值订单 | `/api/account/recharge` | POST | 创建充值订单，返回支付宝支付参数 |\n| 支付成功回调 | `/api/payment/success`  | POST | 支付成功后回写数据        |\n| 支付失败回调 | `/api/payment/fail`     | POST | 支付失败后记录          |\n\n---\n\n## 接口详情\n\n### 1. 账户查询接口\n\n**请求：**\n\n```json\nPOST /api/account/query\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"totalRecharged\": 1000.00,\n  \"balance\": 50.00,\n  \"remainingUses\": 10,\n  \"usedCount\": 90,\n  \"isInsufficient\": false\n}\n```\n\n---\n\n### 2. 创建充值订单接口\n\n**请求：**\n\n```json\nPOST /api/account/recharge\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"phoneNumber\": \"13800138000\",\n\"amount\": 100,\n\"detail\": \"增值账户续费 - 标准套餐 - 账号：13800138000 - 金额：100 元\",\n\"packageType\": \"标准套餐\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"amount\": 100,\n  \"alipayParams\": {\n    // 支付宝支付参数\n  },\n  \"cashierUrl\": \"https://cashier.alipay.com/...\"\n}\n```\n\n---\n\n### 3. 支付成功回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/success\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"paymentProof\": \"支付宝支付凭证\",\n\"amount\": 100,\n\"phoneNumber\": \"13800138000\",\n\"status\": \"SUCCESS\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"rechargedAmount\": 100,\n  \"rechargedCount\": 1,\n  \"newBalance\": 150\n}\n```\n\n---\n\n### 4. 支付失败回调接口\n\n**请求：**\n\n```json\nPOST /api/payment/fail\nAuthorization: Bearer <token>\nContent-Type: application/json\n\n{\n\"orderId\": \"ORD20260428001\",\n\"errorReason\": \"用户取消支付\",\n\"phoneNumber\": \"13800138000\",\n\"status\": \"FAILED\"\n}\n```\n\n**响应：**\n\n```json\n{\n  \"orderId\": \"ORD20260428001\",\n  \"message\": \"已记录失败\"\n}\n```\n\n---\n\n## 配置方式\n\n### 方式 1：修改脚本中的 API_CONFIG\n\n直接编辑 `scripts/query.py`、`scripts/recharge.py`、`scripts/callback.py` 中的 `API_CONFIG` 字典。\n\n### 方式 2：使用环境变量（推荐）\n\n```bash\nexport SYMX_API_BASE_URL=\"https://lifeemergence.com/jeecg-boot-xzgz\"\nexport SYMX_API_TOKEN=\"your-bearer-token\"\nexport SYMX_API_AUTH_TYPE=\"bearer\"\n```\n\n### 方式 3：创建配置文件\n\n在 `references/` 目录下创建 `config.json`：\n\n```json\n{\n  \"baseUrl\": \"https://lifeemergence.com/jeecg-boot-xzgz\",\n  \"authType\": \"bearer\",\n  \"token\": \"your-bearer-token\",\n  \"queryPath\": \"/api/account/query\",\n  \"rechargePath\": \"/api/account/recharge\",\n  \"callbackSuccessPath\": \"/api/payment/success\",\n  \"callbackFailPath\": \"/api/payment/fail\"\n}\n```\n\n---\n\n## 充值金额档位\n\n默认档位：`[10, 50, 100, 500]` 元\n\n可在 `scripts/recharge.py` 中修改 `RECHARGE_AMOUNTS` 列表自定义档位。\n\n---\n\n## 充值明细格式\n\n默认格式：\n\n```\n增值账户续费 - {套餐类型} - 账号：{手机号} - 金额：{金额}元 - 备注：{备注}\n```\n\n套餐类型可选：\n\n- 体验套餐\n- 标准套餐\n- 专业套餐\n\n---\n\n## 测试命令\n\n```bash\n# 测试账户查询\npython3 scripts/query.py 13800138000 <token>\n\n# 测试充值明细生成\npython3 scripts/recharge.py\n\n# 测试回调（需要真实订单 ID）\npython3 s"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：... Skill: Recharge / Renew of Skills | 技能账户充值/续费 Owner: smyx-sunjinhui Summary: 生命涌现支付技能，提供技能账户增值服务（充值/续费）、账户查询（余额/使用次数）、余额检查、支付宝支付集成和支付页面生成。🔴【强制性要求】每次展示套餐列表时，必须完整显示套餐 1-4，包括专属定制套餐，禁止省略定制套餐。当用户需要查询账户状态、检查余额、进行充值续费、或处理支付流程时使用此技能。自动触发关键词：... Tags: latest:1.0.23 Version history: v1.0.23 | 2026-07-10T10:20:16.626Z | auto smyx-payment 1.0.23 - Internal code updates in scripts/open_id.py and skills/smyx_common/scripts/util.p","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":674,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:20:10.073Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:45:05.584Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}