支付宝支付
Zion 支持支付宝电脑网站支付,包括单次支付、周期支付和退款。开始前,请先阅读支付功能概述,准备订单表并了解支付回调的处理方式。
配置支付宝
准备支付宝应用
按照支付宝接入准备 注册商户并创建网页应用。接口加签方式选择密钥,算法使用 RSA2。

通过支付宝开放平台密钥工具生成应用私钥,并在应用的开发设置中获取支付宝公钥。不要把应用公钥误填为支付宝公钥。

Zion 会管理支付结果的通知地址,无需在支付配置中填写应用网关或 Webhook 地址。
激活支付宝
打开 行为 → 支付 → 支付宝(Web),点击 激活。如果这是项目中第一个支付渠道,请选择订单表。
填写商户信息
| 配置项 | 必填 | 说明 |
|---|---|---|
| APPID | 是 | 支付宝开放平台应用的 APPID |
| 应用私钥 | 是 | 与应用公钥配对的 RSA2 私钥 |
| 支付宝公钥 | 是 | 支付宝开放平台提供的支付宝公钥,不是应用公钥 |
保存后,支付配置中的 关联行为流 会显示支付和退款处理、周期支付处理及周期支付扣款处理等系统流程。
发布并测试
发布支付配置、系统表、行为流和页面修改。先使用支付宝沙盒或受控金额测试,再切换到正式业务。
单次支付
创建订单并添加行为
先在已绑定的订单表中创建订单,再从组件触发器的 支付 菜单添加 支付宝支付 → 单次支付。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 订单表 id | 长整数 | 是 | 已绑定订单表中的订单记录 id |
| 商品名称 | 文本 | 是 | 支付宝收银台显示的交易标题 |
| 金额 | 小数 | 是 | 单位为元,不能小于 0.01,小数点后最多两位 |
支付行为的 成功时 用于处理前端调用结果,不能配置修改数据的行为。最终支付状态由支付宝回调确认。
处理支付回调
支付宝的支付和退款共用系统生成的 支付和退款处理行为流。支付分支会更新支付表,并提供:
| 结果 | 类型 | 说明 |
|---|---|---|
orderId | 长整数 | 本次支付关联的订单 id |
paymentFound | 布尔值 | 是否找到对应的支付记录 |
paymentStatus | 文本 | SUCCESSFUL 或 FAILED |
alreadyProcessed | 布尔值 | 当前状态是否已处理过 |
仅当 paymentFound 为 true 且 alreadyProcessed 为 false 时,根据 paymentStatus 处理订单。支付成功前应核对订单和支付记录中的金额。
退款
配置权限并添加行为
退款行为默认不向普通用户开放。在 设置 → 权限 → 支付 中,只为可信任的管理员角色开启支付宝退款权限。
从 支付 菜单添加 支付宝支付 → 退款:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 支付表 id | 长整数 | 是 | 需要退款的支付记录 id,不是订单 id |
| 退款金额 | 小数 | 是 | 单位为元;多次退款的总额不能超过原支付金额 |
处理退款结果
支付和退款处理行为流的退款分支会更新退款表,并提供 orderId、refundFound、paymentStatus 和 alreadyProcessed。paymentStatus 为 REFUNDED 或 FAILED。
支付宝全额退款不会触发支付和退款处理行为流。不能只依赖该行为流处理全额退款后的订单或权益变更;需要在发起退款的受信任业务流程中同时处理相应业务状态。
周期支付
周期支付包含发起订阅、取消订阅和后续自动扣款。
发起周期支付
从 支付 菜单添加 支付宝支付 → 周期支付 → 发起。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 订单表 id | 长整数 | 是 | 首次订阅对应的订单记录 id |
| 价格 | 小数 | 是 | 单位为元,有效范围为 0.01 至 100 |
| 商品名称 | 文本 | 是 | 订阅商品名称 |
| 扣款间隔 | 整数 | 是 | 与周期单位组合使用;间隔不能少于 7 天 |
| 周期单位 | 枚举 | 是 | 天或月 |
| 场景 | 文本 | 是 | 支付宝规定的签约场景值 |
同一用户不能用相同场景重复创建周期支付。不同订阅业务应使用符合支付宝规范的不同场景值。
取消周期支付
添加 支付宝支付 → 周期支付 → 取消,并绑定需要取消的 周期支付表 id。
处理订阅状态
系统生成的周期支付处理行为流负责同步订阅状态。根据业务需要,在其预留分支中启用或停用订阅权益。
配置周期扣款订单
支付宝周期支付扣款由系统生成的定时行为流执行。每次扣款都需要一条新的业务订单,因此需要在行为流预留位置:
- 根据周期支付记录创建新的订单。
- 将新订单的 id 绑定到后续扣款节点的
orderId入参。 - 在支付回调确认成功后,再更新订单和发放本期权益。
常见问题
- 提示商户协议状态不正常:检查同一账户是否使用同一场景重复订阅,并确认支付宝签约能力已经开通。
- 支付拉起失败:检查 APPID、应用私钥和支付宝公钥是否来自同一个应用,并确认使用 RSA2。
- 前端显示成功但订单未更新:检查支付和退款处理行为流是否已发布,以及支付成功分支中的业务逻辑。
- 退款后没有进入行为流:如果是全额退款,这是支付宝当前的处理限制;按退款章节中的方案同步业务状态。