跳到主要内容

订阅生命周期

本页说明公开订阅对象、状态值以及对应的商户动作。

使用 Subscription 状态控制用户权益,使用 Invoice 状态判断账单事实,使用 Payment Order 状态判断扣款结果。浏览器回跳和 Operation 成功都不能替代这些业务对象状态。

对象关系​

Merchant Customer 1 ── N Subscription
Plan 1 ── N Subscription
Checkout Session 1 ── 1 Subscription
Subscription 1 ── N Invoice
Invoice 1 ── N Payment Attempt
Invoice 1 ── 0..1 Payment Order
对象商户含义
Merchant Customer使用稳定 merchantCustomerNo 标识的商户客户;当前没有独立 Customer API。
Plan新建订阅使用的价格、币种和计费周期模板。
Checkout Session一次托管 Checkout;创建时会同时创建真实 Subscription,初始状态为 PENDING_CHECKOUT。
Subscription用于判断用户权益是否有效的持续订阅合同。
Invoice一个订阅周期的账单事实。
Payment Attempt对一个 Invoice 的一次扣款尝试。
Payment Order已支付 Invoice 对应的扣款结果对象。

商户必须保存创建响应和事件中的平台编号。当前列表接口不能通过所有商户侧编号反查对象。

Plan 状态​

数值状态含义
0UNKNOWN不用于创建新订阅。
1CREATING正在创建。
2ACTIVE可创建 Checkout Session。
3ARCHIVED不再用于新会话;不会取消已有 Subscription。
4CREATE_FAILED创建失败。
5CHANNEL_UNKNOWN渠道结果未收敛,查询或联系技术支持。

归档 Plan 还会触发关闭该 Plan 尚未完成的 Checkout Link。归档后不要继续向用户展示此前签发的 checkoutUrl;该操作不会取消已经建立的 Subscription。

更新 Plan 只修改 name、description 和 metadataJson,其中 name 必填。description 省略或传空字符串会保留旧值;metadataJson 省略或传空字符串也保留旧值,传字符串 "{}" 才替换为空对象。

Checkout Session 状态​

数值状态含义
0UNKNOWN会话状态未知。
1CREATED托管链接已创建。
2REDIRECTED保留枚举,当前不是稳定可观察状态。
3VERIFYING已收到完成线索,正在回查确认。
4COMPLETEDCheckout 已确认;仍需确认 Subscription 状态。
5FAILEDCheckout 失败。
6EXPIRED保留枚举,当前流程不保证主动写入。

使用响应中的 expiresAt 作为 DEEPayment Session 的有效截止时间,超过该时间后不要再跳转。商户请求不能自定义该值。

linkStatus 包含 UNKNOWN(0)、ENABLED(1)、DISABLING(2)、DISABLED(3)、DISABLE_FAILED(4)。不能继续跳转已禁用链接。

Subscription 状态​

数值状态商户动作
0UNKNOWN不开通,继续查询。
1PENDING_CHECKOUT等待用户完成 Checkout。
2ACTIVATING正在确认,不提前开通。
3ACTIVE开通正式订阅权益。
4PAST_DUE按宽限策略处理并检查账单。
5UNPAID停止或限制正式权益。
6CANCELED停止订阅权益。
7FAILED订阅创建失败。
8TRIALING保留状态。商户当前不能主动创建,也不能据此开通权益。

当前只有 ACTIVE 是正向开通状态。浏览器返回、Checkout Session 完成或 operation=SUCCEEDED 都不能单独作为开通依据。

Subscription 查询和列表返回 statusVersion,状态和版本来自同一次查询快照。版本只能在同一个 subscriptionNo 内比较。

Invoice 状态​

数值状态含义
0UNKNOWN账单状态未知。
1DRAFT草稿账单。
2OPEN已出账、待支付。
3PAIDInvoice 已支付。
4VOIDInvoice 已作废。
5UNCOLLECTIBLEInvoice 不可收取。
6PAYMENT_FAILED当前账单支付失败。

Payment Attempt 状态​

数值状态含义
0UNKNOWN尝试状态未知。
1PENDING等待处理。
2PROCESSING正在扣款。
3SUCCEEDED本次尝试成功。
4FAILED本次尝试失败,结合当前 Invoice 和 Subscription 处理。
5ACTION_REQUIRED需要额外用户动作。
6CANCELED本次尝试已取消。

Payment Order​

订单数值状态含义
0UNKNOWN未知。
1CREATED订单已创建。
2PAYING支付处理中。
3SUCCESS支付成功。
11FAILED支付失败。
12EXPIRED保留值,当前渠道结果可能归并为失败。
13CANCELED保留值,当前渠道结果可能归并为失败。
14EXCEPTION异常终态,需要平台处理。

invoice.paid 表示 Invoice 已支付并关联成功 Payment Order。当前 Subscription API 不公开结算状态,不能使用这些支付状态确认结算完成。

Operation 状态​

创建和变更接口可能在 HTTP 200 中返回 Operation。

数值状态含义
0UNKNOWNOperation 状态未知。
1PENDING等待执行。
2RUNNING正在执行。
3SUCCEEDED已确认成功。
4FAILED已确认失败。
5CHANNEL_UNKNOWN渠道结果未知,不能换新业务号重建。

HTTP status 表达 API 响应层,Operation status 表达已经落库的副作用操作层。HTTP 200 不会把 FAILED 或 CHANNEL_UNKNOWN 变成成功。

取消订阅​

商户动作统一称为“取消订阅”。请求只包含可选的 reason,不支持周期结束后取消。

提交取消请求后,先保持当前权益决策;只有响应、已验签事件或查询确认 Subscription 为 CANCELED,才立即停止权益,不继续保留到 currentPeriodEnd。取消不会退款或撤销历史账单对象。

列表查询规则​

所有列表默认 page=1、pageSize=20,单页最大 100;所有时间使用 Unix 毫秒。

列表支持的业务筛选条件
Planstatus
SubscriptionmerchantCustomerNo、planNo、merchantPlanNo、status
InvoicesubscriptionNo、merchantSubscriptionNo、status
Payment OrdermerchantCustomerNo、subscriptionNo、merchantSubscriptionNo

Subscription 和 Payment Order 列表未提供 owner 条件时,必须同时传 startTime、endTime,查询跨度不超过 90 天。

Payment Order 当前按候选 Invoice 分页,可能出现返回数量少于 pageSize,甚至当前页为空但 paging.total > 0。应按 paging.page、paging.totalPages 继续翻页,不能用 orders.length 提前结束。