Skip to main content
本页讲订阅进行到一半、用户要增购(比如加几个席位)时,怎么只收当期差价、之后的周期怎么涨价,以及怎么确认这笔补差扣款成功了。字段级契约见官网 API 参考(/api/v1/subscription/update、/api/v1/subscription/inquiry)。

用户中途加座位,怎么只收差价?

调用 /api/v1/subscription/update,在请求里带上 topupInfo。一次请求同时做两件事:
  • 立即创建一笔当期补差订单,收取 topupAmount;
  • 补差成功后,从下一期起把周期金额调整为请求里的新 amount。
示例:当前周期加 3 个席位,当期补 15,之后每期涨到 130。
不带 topupInfo 时,update 只是调整未来周期的金额,不会产生补差订单。

补差扣款需要用户再付一次吗?

要看支付方式和授权状态。响应里的 topupInfo 告诉你结果: 当 topupStatus 是 AUTHORIZATION_REQUIRED 时,先把 topupAction 按 JSON 解析,再把用户重定向到其中的 webUrl 完成支付。不要把它当对象直接读属性。

补差扣款成功之前,之后的金额会变吗?

不会。新的 amount 只在补差订单支付成功之后才从下一期起生效;补差订单关闭或失败,后续周期的金额保持不变。 补差订单是当期内的额外订单,不是新的一期:
  • 不开启新的计费周期,归属于受理时所在的当期;
  • 加座处理期间,同一订阅上的取消、升降级等操作与它互斥;
  • 订阅已有预约取消时,不能加座(返回 A0058),需先恢复订阅,见预约取消与恢复订阅。
update 本身只支持处于 ACTIVE 状态、由 Waffo 托管续订的订阅。

怎么确认补差扣款成功了?

不要把浏览器跳回你的页面当成付款成功。以下面两种为准:
  1. 支付订单通知:Waffo 向你的 notifyURL 推送 PAYMENT_NOTIFICATION,其中 result.subscriptionInfo.subscriptionEvent 为 TOPUP_CHARGE。
  2. 主动查询:如果通知延迟或丢失,用 /api/v1/order/inquiry,传补差订单的 acquiringOrderId。
收到 TOPUP_CHARGE 时请单独处理:它不是新一期的扣款,不要据此发放新一期的权益;新一期的权益仍以每期结果通知(SUBSCRIPTION_PERIOD_CHANGED_NOTIFICATION)为准。三类 subscriptionEvent 的区别见跨币种订阅与 Portal FAQ 和官网 Webhook 事件类型页。

怎么查某一期里有过哪些补差订单?

调用 /api/v1/subscription/inquiry 并把 paymentDetails 设为 1。每一期的扣款记录里,如果该期有过加座,会多一个 topupDetails 列表;没有加座时没有这个字段。 对账时请把 topupDetails 里的金额和该期正常扣款分开统计。

在商户 Portal 里怎么看补差订单?

在 Subscription → Agreements 的订阅详情页,Payment history 表格里会把补差订单和正常期单放在同一张表中展示:每期的补差订单显示在该期期单行的上方,Period No. 列显示为 “{期号}-{序号}”(例如 2-1、2-2),序号按受理时间从早到晚编号,同一期内最新的补差排在最上面;补差行不属于任何一期的试用或周期,所以 Trial 等周期相关列显示 “-”。 如果要对账,仍然建议把补差行的金额和该期正常扣款分开统计,和 API 的 topupDetails 一致。

加座失败了,订阅会怎样?

补差订单关闭或失败时,后续周期的金额不会改变,仍按原 amount 扣款。topupRequest 是这次加座的幂等键:重试同一次请求时复用同一个值。