今日星座运势商品支付
触发条件
仅当用户明确表达购买、下单或支付今日星座运势商品时使用本 Skill。
如果用户只是咨询今日运势、星座、塔罗、八字、抽签等内容,且没有购买或支付意图,不要调用下单接口。
用户必须明确给出以下星座之一:白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座、双鱼座。如果用户没有给出星座,或给出的值不在列表中,先要求用户从该列表中选择一个星座,不要下单。
Prerequisite
在调用 alipay-bot trigger-payment-signal 前必须完成:
- 执行
npm --version,确认npm命令可用;如果不可用,停止流程并说明缺少npm。 - 执行
which alipay-bot,确认alipay-botCLI 已安装。 - 如果
which alipay-bot找到可执行文件,跳过安装。 - 如果未找到
alipay-bot,执行:
npx -y @alipay/agent-payment@latest install
参数说明
调用下单脚本时必须传入以下参数:
| 参数 | 是否必填 | 说明 |
|---|---|---|
--endpoint |
是 | 本地电脑网站支付接口地址,默认使用 http://localhost:3000/pay |
--zodiac |
是 | 用户选择的星座,必须使用下方可选值之一 |
--zodiac 可选值如下,传参时必须逐字使用这些中文值:
白羊座
金牛座
双子座
巨蟹座
狮子座
处女座
天秤座
天蝎座
射手座
摩羯座
水瓶座
双鱼座
如果用户只说“白羊”“金牛”等简称,可先规范为对应的完整值(如“白羊座”“金牛座”)再传入 --zodiac。如果无法判断用户选择的是哪一个星座,必须先追问,不要下单。
下单脚本
使用本 Skill 自带脚本生成支付宝收银台链接。脚本会请求 --endpoint 指定的标准电脑网站支付接口POST /pay,并提交 --zodiac 指定的星座(底层代码实现是alipaySdk.pageExec( 'alipay.trade.page.pay',..)),读取返回的 HTML 表单,并输出包含 cashier_url 的 JSON。
在本 Skill 目录执行:
node references/create-cashier-url.js \
--endpoint http://localhost:3000/pay \
--zodiac 白羊座
如果当前工作目录不是本 Skill 目录,使用 SKILL.md 所在目录下的脚本绝对路径。
脚本返回 JSON。必须从返回 JSON 中读取 cashier_url 字段,作为支付宝收银台链接;同时保存 out_trade_no 和 result_endpoint,用于支付成功后获取本项目生成的运势内容。
示例返回结构类似:
{
"out_trade_no": "20260628xxxxxx",
"zodiac_sign": "白羊座",
"result_endpoint": "http://localhost:3000/fortune-result",
"cashier_url": "https://openapi.alipay.com/gateway.do?method=alipay.trade.page.pay&..."
}
其中 cashier_url 的完整原始值就是后续传给 alipay-bot trigger-payment-signal 的 <alipay_cashier_url>。
out_trade_no 只用于商户侧订单追踪,不代表支付成功,不要传给支付宝支付处理技能。
支付后取结果脚本
支付成功后,必须调用本 Skill 自带脚本获取项目后端生成的今日星座运势:
node references/get-fortune-result.js \
--endpoint http://localhost:3000/fortune-result \
--out-trade-no "<out_trade_no>"
实际执行时:
--endpoint优先使用下单脚本返回的result_endpoint。--out-trade-no必须使用下单脚本返回的本次out_trade_no。- 只有支付宝支付处理技能明确返回成功后,才能调用该脚本。
- 只允许交付该脚本返回 JSON 中的
zodiac_sign和fortune,不要自行生成、改写或补充其它运势内容。
示例返回结构类似:
{
"paid": true,
"out_trade_no": "20260628xxxxxx",
"trade_status": "TRADE_SUCCESS",
"zodiac_sign": "白羊座",
"fortune": "今天行动力很旺,适合主动推进计划,你迈出的第一步会带来不错的回响。"
}
支付流程
- 完成“Prerequisite”,确认
npm可用且alipay-botCLI 已安装。 - 调用
references/create-cashier-url.js脚本,传入--endpoint和--zodiac;--zodiac必须使用用户明确选择的星座。 - 从脚本返回 JSON 中读取非空
cashier_url,并保存本次out_trade_no、zodiac_sign和result_endpoint。 - 校验
cashier_url必须指向支付宝开放平台网关:域名为openapi.alipay.com,路径为/gateway.do;否则停止。 - 调用
alipay-bot trigger-payment-signal。
alipay-bot trigger-payment-signal \
--payment-link "<cashier_url>" \
--merchant-info "<星座>今日运势预测" \
--amount "0.01"
- 从
trigger-payment-signal返回 JSON 中读取非空paymentLink。 - 立即加载支付宝支付处理技能,并把完整原始
paymentLink传给该技能。 - 支付宝支付处理技能返回成功前,不要交付运势预测结果,也不要声明支付成功。
- 支付成功后,调用
references/get-fortune-result.js,传入下单脚本返回的result_endpoint和out_trade_no。 - 从结果脚本返回 JSON 中读取
zodiac_sign和fortune,并把这两个字段原样交付给用户。
支付接管规则
- 每次购买都必须重新调用脚本,并从本次返回 JSON 中读取新的
cashier_url。 - 每次购买都必须传入用户本次选择的合法星座,不要替用户编造或改写星座。
- 支付成功后的内容必须来自
references/get-fortune-result.js的返回结果。 - 不要自行生成、扩写、润色、替换或重新随机今日星座运势内容。
- 不要在支付成功前调用结果脚本,也不要在支付成功前交付
fortune。 - 不要把示例响应中的
cashier_url写死到流程中;该链接包含时间戳和签名,可能已过期。 - 不要自行改写脚本输出的
cashier_url;只做前缀校验。 - 只把
trigger-payment-signal返回 JSON 中的paymentLink传给支付宝支付处理技能。 - 必须逐字符完整保留
paymentLink原始值。 - 不要打开、展示、改写、重新编码、压缩、截断或转换
paymentLink。 - 不要把脚本返回的
cashier_url直接交给支付宝支付处理技能。 - 如果没有拿到非空
paymentLink,视为失败并停止流程。
失败处理
npm不可用:停止流程,说明本机缺少npm。alipay-bot未安装且执行npx -y @alipay/agent-payment@latest install失败:停止流程,说明支付宝支付接管 CLI 安装失败。- 用户未给出合法星座:先要求用户从 12 星座中选择一个,不要下单。
- 脚本执行失败:停止流程,说明今日星座运势商品下单失败。
- 脚本没有返回合法 JSON:停止流程,说明订单返回格式错误。
- 脚本返回 JSON 中没有非空
cashier_url:停止流程,说明订单未返回支付宝收银台链接。 - 下单脚本没有返回非空
out_trade_no或result_endpoint:停止流程,说明订单返回缺少取结果信息。 cashier_url前缀不符合要求:停止流程,说明返回的不是支付宝收银台链接。trigger-payment-signal未返回非空paymentLink:停止流程,说明支付接管信息生成失败。- 支付宝支付处理技能未成功完成支付:不要交付今日星座运势结果,按该技能返回结果说明当前支付状态。
- 结果脚本执行失败:停止流程,说明支付已处理但未能从项目接口获取今日星座运势,不要自行生成替代内容。