# 变更详情与折算预览

变更详情接口用于在发起变更前预览折算明细,包含新旧计划对比、剩余价值折算、差额与生效时间等信息。本接口不产生实际变更,仅计算并返回预览数据,供商户系统展示。

# 商户预检接口

接口

请求API: /api/subscription/change/detail

请求方式: POST

请求类型:application/jsonapplication/x-www-form-urlencoded

# 请求参数

字段名 变量名 必填 类型 示例值 描述
商户号 mchNo String(30) M1621873433953 商户号
应用ID appId String(24) 60cc09bce4b0f1c0b83761c9 应用ID
订阅ID subscriptionId String(32) SUB_20210618164232 订阅ID
目标计划ID newPlanId String(32) PLAN_002 目标订阅计划ID,与newPlanCode二选一
目标计划编码 newPlanCode String(64) PRO_MONTH 目标订阅计划编码,与newPlanId二选一
变更类型 changeType String(20) UPGRADE 变更类型:UPGRADE-升级 / DOWNGRADE-降级
生效方式 effectiveType String(20) IMMEDIATE 生效方式:IMMEDIATE-立即生效 / NEXT_PERIOD-下期生效
请求时间 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",
  "newPlanId": "PLAN_002",
  "changeType": "UPGRADE",
  "effectiveType": "IMMEDIATE",
  "reqTime": "1622016572190",
  "version": "1.0",
  "signType": "MD5",
  "sign": "84F606FA25A6EC4783BECC08D4FDC681"
}

目标计划传参

newPlanIdnewPlanCode 二选一即可。示例以 newPlanId 演示,商户也可改用 newPlanCode(如 "newPlanCode": "PRO_MONTH")定位目标计划,系统将自动按当前订阅的 mchNo/appId/currency 解析为对应的 planId。

# 返回参数

字段名 变量名 必填 类型 示例值 描述
返回状态 code int 0 0-处理成功,其他-处理有误,详见错误码
返回信息 msg String(128) 签名失败 具体错误原因
签名信息 sign String(32) CCD9083A6DAD9A2DA9F668C3D4517A84 对data内数据签名
返回数据 data Object {} 返回变更详情数据

# data数据格式 (SubscriptionChangeDetailRS)

字段名 变量名 类型 示例值 描述
订阅ID subscriptionId String SUB_20210618164232 订阅ID
商品名称 subject String 会员订阅 订阅商品名称
原计划ID oldPlanId String PLAN_001 原订阅计划ID
原计划名称 oldPlanName String 基础月度会员 原订阅计划名称
原计划编码 oldPlanCode String BASIC_MONTH 原订阅计划编码
原计划周期单位 oldPlanIntervalUnit String MONTH 原计划周期单位:DAY/WEEK/MONTH/YEAR
原计划周期数量 oldPlanIntervalCount Integer 1 原计划周期数量
原计划本期金额 oldAmount Long 1000 原计划本期金额,单位分
新计划ID newPlanId String PLAN_002 新订阅计划ID
新计划名称 newPlanName String 高级月度会员 新订阅计划名称
新计划编码 newPlanCode String PRO_MONTH 新订阅计划编码
新计划周期单位 newPlanIntervalUnit String MONTH 新计划周期单位:DAY/WEEK/MONTH/YEAR
新计划周期数量 newPlanIntervalCount Integer 1 新计划周期数量
新计划本期金额 newAmount Long 2500 新计划本期金额,单位分
变更类型 changeType String UPGRADE UPGRADE-升级 / DOWNGRADE-降级
生效方式 effectiveType String IMMEDIATE IMMEDIATE-立即生效 / NEXT_PERIOD-下期生效
预计生效时间 effectiveTime Date 1622016572190 预计生效时间戳
折算剩余价值 remainingValue Long 600 当前周期剩余价值折算,单位分
差额 diffAmount Long 1500 差额,单位分,正数表示需补付
已使用天数 prorateDaysUsed Integer 12 当前周期已使用天数
总天数 prorateDaysTotal Integer 30 当前周期总天数
币种 currency String USD 币种
是否跳过优惠期 trialSkipped Boolean false 是否跳过了新计划优惠期(已享受过优惠期时为true)

# 返回示例数据

{
  "code": 0,
  "msg": "SUCCESS",
  "data": {
    "subscriptionId": "SUB_20210618164232",
    "subject": "会员订阅",
    "oldPlanId": "PLAN_001",
    "oldPlanName": "基础月度会员",
    "oldPlanCode": "BASIC_MONTH",
    "oldPlanIntervalUnit": "MONTH",
    "oldPlanIntervalCount": 1,
    "oldAmount": 1000,
    "newPlanId": "PLAN_002",
    "newPlanName": "高级月度会员",
    "newPlanCode": "PRO_MONTH",
    "newPlanIntervalUnit": "MONTH",
    "newPlanIntervalCount": 1,
    "newAmount": 2500,
    "changeType": "UPGRADE",
    "effectiveType": "IMMEDIATE",
    "effectiveTime": 1622016572190,
    "remainingValue": 600,
    "diffAmount": 1500,
    "prorateDaysUsed": 12,
    "prorateDaysTotal": 30,
    "currency": "USD",
    "trialSkipped": false
  },
  "sign": "F4DA202C516D1F33A12F1E547C5004FD"
}

# 折算说明

折算规则

  • 剩余价值折算:立即生效变更时,系统按当前周期已使用天数比例折算原计划剩余价值,用于抵扣新计划费用。
  • 差额计算diffAmount = 新计划本期金额 - 折算剩余价值。差额大于 0 时需用户补付,差额为 0 或负数时无需补付。
  • 优惠期跳过:若用户已享受过订阅优惠期,切换到含优惠期的新计划时将跳过优惠期,按标准期计费(trialSkipped=true)。
Last Updated: 2026/8/25 下午11:42:47