支付宝开放平台(商户收款) Skill
支付宝收款同时存在旧版 gateway.do 网关和新版 v3 两套协议,签名串、时间戳格式、错误形态都不一样;10000 不等于付款成功、回调要去掉 sign_type 再验签并回纯文本 success,这些细节最容易凭别家经验写错。这份 skill 把商户收款整理成 7 个能力域,标出文档自相矛盾之处,以及无凭证探测证实写错的沙箱地址和错误码。
安装
选你用的 Agent,复制命令。
npx -y skills add fxp/skillify --skill alipay --agent claude-code --yes装到项目的 .claude/skills/;加 -g 装到全局。装完需要你手动执行 /reload-plugins,这一步 Agent 代劳不了。
npx -y skills add fxp/skillify --skill alipay --agent codex --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent cursor --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent opencode --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent gemini-cli --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent github-copilot --yes装到项目的 .agents/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent trae --yes装到项目的 .trae/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent windsurf --yes装到项目的 .windsurf/skills/;加 -g 装到全局。
npx -y skills add fxp/skillify --skill alipay --agent qwen-code --yes把 --agent 换成你用的 Agent 标识,可以一次写多个。skills CLI 1.5.25 共支持 79 个,例如 qwen-code、kimi-code-cli、trae-cn、qoder、lingma、cline、roo。
或者让 Agent 自己装
读 https://github.com/fxp/skillify/blob/main/skills/alipay/prompt.md 并照它执行装对了的标志:references/ 下有 7 份文档,里面 grep '<!-- Gap:' 能搜到 6 处。
装好后,可以这样问你的 Agent
这份 Skill 覆盖的典型任务。点一下复制。
7 类能力
每类能力对应一份 reference,Agent 按任务只打开需要的那份。
接入方式与签名
旧版网关与 v3 的区别、密钥 / 证书模式、SDK 初始化、自行签名与响应验签
当面付
付款码支付、订单码支付、轮询与撤销的闭环
网站与 APP 支付
电脑网站、手机网站、APP 支付的签名产物与跳转方式
查询、退款、关单、对账
交易状态机、退款成功判定、退款查询、关闭交易、对账单下载
异步通知与验签
通知参数、验签步骤、四项业务校验、success 应答、重试与幂等
沙箱环境
沙箱网关、账号与钱包、与生产的差异、切换生产检查单
错误码
两套协议的错误形态、公共与业务错误码、结果未知的处理
当前事实
整理自官方文档(抓取于 2026-09-11),还没有用真实凭证验证。
| 项 | 值 |
|---|---|
| 旧版网关 | POST https://openapi.alipay.com/gateway.do,接口名放 method,业务参数放 biz_content |
| 新版 v3 | POST https://openapi.alipay.com/v3/alipay/trade/query 这类路径 + JSON body,出错返回 HTTP 4xx |
| 沙箱 | https://openapi-sandbox.dl.alipaydev.com,APPID 与密钥和生产完全独立 |
| 金额单位 | 元,两位小数字符串,[0.01, 100000000] |
| 最容易选错 | 验签用支付宝公钥,不是自己上传的应用公钥 |
照通用经验写容易错的 6 件事
来自官方文档,还没有用真实凭证验证。
- code=10000 只代表请求成功。付款要看
trade_status,退款要看fund_change=Y或退款查询的REFUND_SUCCESS。 - 回调验签要去掉 sign 和 sign_type。通知是表单 POST,验签后还要比对金额、seller_id、app_id,最后回纯文本
success。 - 支付结果只发到下单时传的 notify_url。默认只有
TRADE_SUCCESS触发通知,关单和全额退款不通知。 - 网站和 APP 支付的服务端只签名、不下单。用
pageExecute/sdkExecute交给浏览器或 APP,v3 描述文件里没有这三个接口的路径。 - 付款码返回 10003 或 20000 要轮询,超时立即撤销。撤销只用于结果未知,正常退款一律走退款接口。
- 部分退款每笔换 out_request_no,重试沿用原值。两次退款间隔至少 3 秒,退款查询至少等 10 秒。
无凭证探测
- 旧版网关出错也返回 HTTP 200,错误在
alipay_trade_query_response里,错误响应不带sign。 - v3 出错返回 HTTP 400 和
{code, message, links},links实为数组,而官方描述文件声明为字符串。 - v3 不带 Authorization 头返回 400
missing-timestamp,不是签名文档说的 401。 - Python SDK 文档示例里的旧沙箱域名
openapi.alipaydev.comTLS 证书已过期。 - 官方 v3 描述文件的沙箱地址
http://openapi.sandbox.dl.alipaydev.com返回 404,改用 https 则证书主机名不匹配。 - 页面跳转类接口出错时返回给用户看的 GBK 编码 HTML 错误页,而不是 JSON。