支付参考
本页汇总支付功能的数据结构和取值。配置流程见支付功能概述。
支付回调数据
在 支付结果处理 中配置行为流输入时,可以绑定 支付回调 下的数据。不同事件提供的数据不同:
| 数据 | 类型 | 支付完成时 | 退款成功时 | 订阅状态变更时 | 订阅续费时 |
|---|---|---|---|---|---|
| 支付 | 支付表记录 | 是 | 是 | ||
| 订单已支付金额 | 小数 | 是 | |||
| 退款 | 退款表记录 | 是 | |||
| 周期性支付 | 周期性支付表记录 | 是 | |||
| 变更前状态 | 文本 | 是 | |||
| 变更前是否到期取消 | 布尔值 | 是 | |||
| 回调请求体 | JSON | 是 | 是 | 是 |
- 支付、退款 和 周期性支付 可以选择记录本身或其字段,不能选择关联数据。
- 订单已支付金额 是该订单所有
SUCCESSFUL支付记录的金额合计。 - 回调请求体 是支付平台发来的原始通知内容,各渠道格式不同。
系统表字段
支付
| 字段 | 显示名 | 说明 |
|---|---|---|
id | id | 支付记录 id,退款时使用 |
type | 类型 | 支付渠道类型 |
grand_total_value | 总金额 | 支付金额,单位与该渠道行为的金额单位一致 |
currency | 币种 | 币种代码 |
status | 状态 | 见支付状态 |
description | 描述 | 交易描述 |
order_id | 订单id | 关联的订单 id |
transaction_id | 交易号 | 支付平台的交易号 |
out_trade_no | 外部订单号 | Zion 发给支付平台的订单号 |
account_id | 帐户id | 发起支付的账户 |
recurring_payment_id | 周期性支付id | 订阅扣款时关联的订阅 |
config_id | 支付配置id | 发起支付使用的支付配置 |
退款
| 字段 | 显示名 | 说明 |
|---|---|---|
id | id | 退款记录 id |
payment_record_id | 支付id | 被退款的支付记录 |
account_id | 帐户id | 发起退款的账户 |
status | 状态 | REFUNDING、REFUNDED 或 FAILED |
out_refund_no | 外部退款号 | 支付平台的退款单号 |
amount | 金额 | 退款金额 |
周期性支付
| 字段 | 显示名 | 说明 |
|---|---|---|
id | id | 订阅 id,取消订阅时使用 |
account_id | 帐户id | 订阅的账户 |
agreement_no | 周期性支付协议号 | 支付平台的订阅 id |
first_order_id | 第一笔订单id | 发起订阅时的订单 |
status | 状态 | 见订阅状态 |
payment_type | 支付方式 | 订阅所属渠道 |
current_period_start | 当前周期开始时间 | |
current_period_end | 当前周期结束时间 | |
cancel_at_period_end | 周期结束时取消 | 为 true 时,订阅会在当前周期结束后取消 |
config_id | 支付配置id | 发起订阅使用的支付配置 |
三张表都包含创建时间和更新时间。
支付状态
| 状态 | 说明 |
|---|---|
PENDING | 已创建支付记录,等待支付平台通知 |
SUCCESSFUL | 支付成功 |
CANCELLED | 支付已取消 |
PARTIALLY_REFUNDED | 已部分退款 |
REFUNDED | 已全额退款 |
PENDING 只能变为 SUCCESSFUL 或 CANCELLED;SUCCESSFUL 和 PARTIALLY_REFUNDED 只能因退款变为 PARTIALLY_REFUNDED 或 REFUNDED。不符合这些规则的通知会被忽略。
只有 SUCCESSFUL 或 PARTIALLY_REFUNDED 的支付记录可以退款。退款记录从 REFUNDING 变为 REFUNDED 或 FAILED。
订阅状态
| 状态 | 说明 |
|---|---|
INCOMPLETE | 已发起订阅,首期尚未支付 |
INCOMPLETE_EXPIRED | 首期未在期限内支付,订阅失效 |
TRIALING | 试用中 |
ACTIVE | 订阅生效 |
PAST_DUE | 扣款逾期 |
UNPAID | 未支付 |
CANCELED | 已取消 |
CANCELED 和 INCOMPLETE_EXPIRED 是终止状态。只改变计费周期的通知会直接更新记录,不触发 订阅状态变更时。
金额单位
| 渠道 | 支付行为的金额 | 示例 |
|---|---|---|
| 微信支付 | 元,最多两位小数 | 收取 10 元填写 10 |
| 支付宝 | 元,不小于 0.01,最多两位小数 | 收取 10 元填写 10 |
| Stripe | 币种的最小单位 | 收取 10 美元填写 1000 |
| Airwallex | 主货币单位 | 收取 10 美元填写 10 |
退款金额使用与原支付相同的单位。超过剩余可退金额时,按剩余可退金额退款。
校验提示
编辑器会在以下情况提示错误:
| 提示 | 处理方式 |
|---|---|
| 行为尚未配置支付配置 | 在支付行为中选择 支付配置 |
| 行为引用的支付配置不存在 | 支付配置已被删除,重新选择 |
| 支付配置属于支付渠道 A,但该行为需要 B | 选择与行为渠道一致的支付配置 |
| 行为尚未配置支付产品 | 在支付行为中选择 支付产品 |
| 支付产品在当前端不可用 | 选择当前客户端可用的支付产品 |
| 支付配置未启用支付产品 | 在支付配置的 支付产品 中勾选该产品 |
| 支付配置的字段不能为空 | 填写商户信息中的必填项 |
| 支付配置的字段必须是 Secret 绑定 | 把密钥类字段改为绑定 Secret |
| 处理订阅发票创建事件的行为流必须同步执行,并输出一个 BIGINT 类型的订单 ID | 见处理订阅续费 |
| 支付回调数据只能在支付回调配置中使用 | 支付回调 数据只能在 支付结果处理 的行为流输入中绑定 |
| 支付回调字段不适用于该事件类型 | 改为绑定该事件提供的数据,见支付回调数据 |
Last updated on