# 取消变更预约
商户业务系统通过取消变更预约接口,取消订阅下所有待生效(PENDING)的变更预约,清理待生效计划字段,并关闭关联的孤儿补付订单。
# 接口说明
接口
请求API: /api/subscription/change/cancel
请求方式: POST
请求类型:application/json 或 application/x-www-form-urlencoded
# 请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 订阅ID | subscriptionId | 是 | String(32) | SUB_20210618164232 | 订阅ID |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5方式 |
# 请求示例数据
{
"mchNo": "M1623984572",
"appId": "60cc09bce4b0f1c0b83761c9",
"subscriptionId": "SUB_20210618164232",
"reqTime": "1622016572190",
"version": "1.0",
"signType": "MD5",
"sign": "84F606FA25A6EC4783BECC08D4FDC681"
}
# 返回参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因 |
| 签名信息 | sign | 否 | String(32) | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名 |
| 返回数据 | data | 否 | Object | 取消成功时 data 为空 |
# 返回示例数据
{
"code": 0,
"msg": "SUCCESS",
"data": null
}
# 业务规则
注意
- 本接口取消订阅下所有待生效(PENDING)的变更预约,将关联的变更日志状态更新为已取消,并清理订阅的待生效计划字段(pendingPlanId/pendingPlanCode 等)。
- 补付订单联动:若存在关联的补付支付订单,按其状态分别处理:
- 待支付(INIT):直接关闭订单。
- 支付中(ING):拒绝取消,提示"补付订单支付中,请等待支付结果后再取消"。
- 支付成功(SUCCESS):拒绝取消,提示"补付订单已支付成功,无法取消,变更即将生效"。
- 取消成功后,对每条被取消的变更发送
SUBSCRIPTION_CHANGE_CANCELED通知(通知携带changeId,按变更维度去重)。 - 与收银台取消的区别:商户取消按订阅维度清理所有 PENDING 变更;收银台取消(
/cancelForCheckout)按 changeId 取消单条且仅限未确认变更。