个体订阅
产品特色
订阅能力是支付宝为AI行业打造的专属解决方案,面向于个体客户帮助商家进行订阅类商品的管理、售卖,降低运营管理成本。
个体用户在购买订阅产品时,通过授权将商户账号和用户支付宝账号进行绑定,借助支付宝账号资金渠道,直接帮助商家完成周期性自动扣款。此外,支持用户一键操作升级/降级,支付宝将自动计算需要补充支付的金额或变更订阅的信息。
产品优势:
- 降低收款成本:用户一次签约后支付宝自动完成周期性扣款,无需手动确认,降低用户付费摩擦和流失率;
- 提升用户留存:支持用户随时升级或降级订阅套餐,自动结算无需重新签约,帮助商户延长用户生命周期。
订阅商品与价格管理
提供商品价格管理后台,商家可直接登录支付宝商家平台进行可视化配置,维护自己的商品和服务信息,并关联多种计价模式、设置默认价格等。支持两种方式接入:
1、低代码接入:通过后台进行简单配置,通过低代码接入自动生成的商品展示页面与收银台页面。
2、通过API接口接入:通过商品价格增删改查的全套API接口接入,支持商家直接调用。
商家可按如下指引调用接口,进行 商品管理、价格管理 等操作。
sequenceDiagram
participant 商户
participant 支付宝
商户->>支付宝: 1: 管理后台/api创建商品信息(alipay.trade.product.create)
支付宝-->>商户: 1.1: 返回商品id
商户->>支付宝: 2: 管理后台/api创建商户下的价格信息(alipay.trade.price.create),该接口具备同时创建新商品
支付宝-->>商户: 2.1: 返回价格id
商户->>支付宝: 3: 管理后台/api设置商品下默认金额(alipay.trade.product.modify)
支付宝-->>商户: 3.1: 返回设置结果
商品创建
商家可调用 alipay.trade.product.create(商品创建接口),获取 商品id(product_id)
注意:
- 商品名称(name) 后续将在用户的签约页面进行展示,请务必保证名称的准确
- 商品模型元数据(metadata) 支持商户进行自定义传参,用于记录商户需要消费的个性信息。
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| name | 商品名称 | String | 是 | [1,255] | Gold 会员 | 商品名称 |
| description | 商品描述 | String | 是 | [1,255] | 基础权益 | 商品描述 |
| metadata | 商品模型元数据 | String | 否 | [1,2000] | {“key”:“value”} | 商户需要保存在商品模型中的元数据 |
| images | 图片地址 | String | 否 | [1,4000] | [“https://antgroup.com”] | 图片地址,支持传入不超过5个地址 |
| marketing_features | 营销信息 | String | 否 | [1,4000] | [“16000积分”] | 营销信息,支持传入不超过5个营销信息 |
| unit_label | 单位别名 | String | 否 | [1,100] | 积分 | 单位别名 |
| url | 跳转地址 | String | 否 | [1,500] | https://antgroup.com | 可用于跳转商户网址地址 |
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.product.create&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"name":"Gold 会员",
"description":"基础权益",
"metadata":"{\"key\":\"value\"}",
"images":"[\"https://antgroup.com\"]",
"marketing_features":"[\"16000积分\"]",
"unit_label":"积分",
"url":"https://antgroup.com"
}'
价格创建
商家可调用 alipay.trade.price.create(价格创建接口)创建价格信息,获取 价格实例id(price_id)
注意:
- 价格实例id(price_id) 与创建时传入的 商品id(product_id) 相关联,会在结果中一同返回
- 订阅类商品,必传 循环计价模型(recurring) 相关信息
- 计价周期单位(interval):计价周期单位和 interval_count 组合使用,支持枚举值为 DAY 和 MONTH,分别代表周期的单位为「天」或「月」
- 计价周期间隔(interval_count) :计价周期间隔和 interval 组合使用。例如 interval 为 MONTH,interval_count = 1,则扣款周期为 1 月:系统以首次购买日期为周期起始日,下一周期起始日按设定间隔顺延,若目标日期不存在则自动调整至当月最后一天。例如首次购买日为1月31日,则下一周期起始日为2月28日(或29日),再下一周期起始日恢复为3月31日。实际扣款将在周期起始日前1天发起,确保资金及时到账,服务无缝续期。
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| unit_amount | 单位金额 | Number | 是 | [1,1000000000] | 1000 | 单位金额,单位 |
| product_id | 商品id | String | 条件必选 | [1,32] | 202603230010000006783 | 商品id,通过商品创建接口获取;和product_data二选其一 |
| product_data | 商品信息 | Object | 条件必选 | - | - | 商品模型,可以通过该参数一并创建商品信息 |
| ┗ name | 商品名称 | String | 是 | [1,255] | Gold 会员 | 商品名称 |
| ┗ description | 商品描述 | String | 是 | [1,255] | 基础权益 | 商品描述 |
| ┗ metadata | 商品信息元数据 | String | 否 | [1,2000] | {“key”:“value”} | 商户需要保存在商品模型中的元数据 |
| recurring | 循环计价模型 | Object | 否 | - | - | 循环计价配置,用于订阅等场景 |
| ┗ interval | 计价周期单位 | String | 是 | [1,32] | MONTH | 计价周期单位,和interval_count组合使用。枚举值(月)、YEAR(年)、DAY(日) |
| ┗ interval_count | 计价周期间隔 | Number | 是 | [1,10000] | 1 | 计价周期间隔,和interval组合使用 |
| eligibility_type | 价格限定购买的身份类型 | String | 否 | [1,32] | student | 只有满足该类型的身份才可以购买。具体的枚举值待支付宝侧分配 |
| eligibility_expire_time | 指定身份购买后的时效时间 | String | 否 | [1,32] | 3d | 满足了eligibility_type的身份购买后,失效的时间。如3d = 3天, 3m = 3月 |
| metadata | 价格信息元数据 | String | 否 | [1,2000] | {“key”:“value”} | 商户需要保存在价格模型中的元数据 |
注意
,请与支付宝技术支持沟通确认请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.price.create&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"unit_amount":1000,
"product_id":"202603230010000006783",
"product_data":{
"metadata":"{\"key\":\"value\"}",
"name":"Gold 会员",
"description":"基础权益"
},
"recurring":{
"interval_count":1,
"interval":"MONTH"
},
"eligibility_type":"student",
"eligibility_expire_time":"3d",
"metadata":"{\"key\":\"value\"}"
}'
商品修改
商家可调用 alipay.trade.product.modify(商品修改接口),为商品设置默认的价格(price_id)
注意: 每个商品仅能配置一个价格为默认价格
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| product_id | 商品id | String | 是 | [1,32] | 20260324001001 | 本次更新的商品id |
| name | 商品名称 | String | 否 | [1,255] | Gold 会员 | 商品名称 |
| description | 商品描述 | String | 否 | [1,255] | 基础权益 | 商品描述 |
| default_price_id | 默认价格id | String | 否 | [1,32] | 20260324001001 | 该商品默认价格id |
| metadata | 商品元数据 | String | 否 | [1,1024] | {“key”:“value”} | 商品元数据 |
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.product.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"product_id":"20260324001001",
"name":"Gold 会员",
"description":"基础权益",
"default_price_id":"20260324001001",
"metadata":"{\"key\":\"value\"}"
}'
商品查询
商家可调用 alipay.trade.product.query(商品查询接口),查询已创建的商品信息
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| product_id | 商品id | String | 否 | [1,32] | 202603230010000006783 | 商品id,通过创建接口获取 |
| query_options | 查询选项 | array | 否 | [1,10] | [“price”] | 查询选项,商户通过上送该参数来定制额外返回的信息字段,数组格式。枚举支持(默认价格信息) |
注意
,请与支付宝技术支持沟通确认请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.product.query&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"product_id":"202603230010000006783",
"query_options":[
"price"
]
}'
价格查询
商家可调用 alipay.trade.price.query(价格查询接口),查询已创建的价格信息
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| price_id | 价格id | String | 是 | [1,32] | 202603240020000001001 | 价格id |
| query_options | 查询选项 | array | 否 | [1,10] | [“product”] | 查询选项,商户通过上送该参数来定制额外返回的信息字段,数组格式。枚举支持(商品信息) |
注意: 其它参数若有传参需要,请与支付宝技术支持沟通确认
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.price.query&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"price_id":"202603240020000001001",
"query_options":[
"product"
]
}'
响应参数说明
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| id | 价格id | String | 价格id |
| active | 是否可用 | Boolean | 该价格实例是否可用 |
| product_id | 商品id | String | 关联商品id |
| unit_amount | 单位金额 | Number | 单位金额,单位 |
| type | 价格类型 | String | 价格类型,枚举值(订阅)、one_time(单次支付) |
| metadata | 价格信息元数据 | String | 商户保存在价格模型中的元数据 |
| gmt_create | 创建时间 | String | 创建时间 |
| product | 商品信息 | Object | 关联的商品信息(需通过query_options请求) |
| recurring | 循环计价模型 | Object | 循环计价配置(订阅类型时返回) |
购买订阅商品
用户选择订阅商品进行购买,商家将用户购买的商品传给支付宝,将自动生成付款链接或二维码,用户可直跳转至支付宝APP或扫码唤起支付宝APP进行产品订阅的信息确认,完成订阅和支付。
以下图片仅做线上样式参考,实际页面内容以线上为准。
商家可按如下指引调用接口,进行创建客户、创建订阅、获取订阅消息通知 等操作。
sequenceDiagram
participant 用户
participant 商户
participant 支付宝
用户->>商户: 1: 发起订阅
商户->>支付宝: 1.1: 若未创建过,则先调用api创建客户(alipay.trade.customer.create)
支付宝-->>商户: 1.2: 返回支付宝侧客户id
商户->>支付宝: 1.3: 创建订阅(alipay.trade.subscription.create)
支付宝-->>商户: 1.4: 返回订阅id以及支付链接
商户->>商户: 1.5: 消费支付链接,如果是网页版,展示支付二维码
商户-->>用户: 1.6: 二维码展示
商户->>支付宝: 1.7: 消费支付链接,如果是app端,则唤起支付宝,与二维码选其一对客
用户->>支付宝: 2: 二维码场景:用户扫码进行支付;app端:唤起支付宝进行支付
支付宝-->>商户: 2.1: 支付完成发送订阅生效消息(alipay.trade.subscription.changed)
创建客户
商家可调用 alipay.trade.customer.create(客户创建接口)创建客户,获取 客户id(customer_id)
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| name | 客户名称 | String | 是 | [1,64] | 张三 | 客户名称 |
| description | 客户描述 | String | 否 | [1,255] | 业务客户 | 客户描述 |
| phone | 客户手机号 | String | 否 | [1,50] | 15011112222 | 客户手机号,和客户邮箱需至少传入1个 |
| 客户邮箱 | String | 否 | [1,255] | email@antgroup.com | 客户邮箱,和客户手机号需至少传入1个 |
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.customer.create&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"name":"张三",
"description":"业务客户",
"phone":"15011112222",
"email":"email@antgroup.com"
}'
创建订阅
商家可调用 alipay.trade.subscription.create(订阅创建接口) ,获取 订阅id(subscription_id)
注意:
- 创建订阅时,需要在订阅项目信息(items)中,传入用户所购买的商品对应的价格id(price_id),来确定此次订阅购买的商品价格
- 创建订阅后商户将获得适用于跳转支付宝端的长链接alipay_jump_schema 或 适用于生成二维码的短链接alipay_schema,商户可根据实际场景自主选择使用。
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|---|
| items | 订阅项目信息 | String | 是 | 用于记录核心的订阅项目信息 | |
| ┗ price_id | 价格id | String | 是 | 202603201234567889 | 价格创建接口(alipay.trade.price.create)返回的价格id,代表本次操作的目标价格信息 |
| customer_id | 客户id | String | 是 | 208812345678 | 客户id,客户创建接口(alipay.trade.customer.create)返回的客户id |
| metadata | 订阅信息元数据 | String | 否 | {“key”:“value”} | 商户可通过此字段进行订阅信息的自定义传参,订阅生效后不可修改,将在全链路通知或查询中返回 |
| pay_amount | 支付金额 | String | 否 | 100 | 支付金额,单位分;仅用于商户自定义金额,若传了该值,用户实际支付金额会以该值为准;若不传该金额,则会按照传入的价格id来获取本次应支付的金额 |
注意: 其它参数若有传参需要,请与支付宝技术支持沟通确认
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.create&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"items":[
{
"price_id":"202603201234567889"
}
],
"subscribe_title":"订阅月会员",
"customer_id":"208812345678"
}'
获取订阅消息通知
商家通过订阅 alipay.trade.subscription.changed(订阅产品商户消息通知接口)来获取订阅商品的购买结果
注意:
- 该接口为支付宝主动向商户发送的消息通知接口,商户需要配置应用网关地址(NOTIFY_URL)
- 商户收到消息后需要返回
success表示处理成功,否则返回fail,支付宝会进行重试 - 投递重试策略:25小时内完成8次通知,间隔频率为:2m、10m、10m、1h、2h、6h、15h
- 商户获取消息通知后,需要使用支付宝公钥进行验签
- 用户购买成功后,发送的订阅产品商户消息通知中的 **订阅变更类型(change_type)为 订阅已生效(active)
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| change_type | 订阅变更类型 | String | 是 | (32) | active | 订阅变更类型,枚举值: + active-订阅已生效,用户完成首次支付签约 + period_extend-订阅续费成功,周期性自动扣款成功 + item_update-订阅项目升级成功 + item_downgrade订阅项目降级成功 + cancel-订阅已取消,用户取消订阅或到期未续费 + cancel_at_period_end-订阅将在周期结束取消 + item_cancel_revert-订阅取消后恢复 |
| change_date | 订阅变更时间 | String | 否 | (32) | 2026-03-22 21:00 | 订阅变更时间 |
| trade_no | 交易号 | String | 否 | (64) | 2026022276001434360514767918 | 支付宝交易号,可根据该交易号调用支付宝交易查询接口(alipay.trade.query)进行支付明细查询 |
| order_no | 订阅支付单ID | String | 否 | (64) | 2026042019600065895 | 创建/升级订阅时生成的支付请求单号 |
| pay_amount | 支付金额 | String | 否 | (16) | 1001 | 当笔订阅的支付金额,单位:分 |
| subscription | 订阅信息 | String | 否 | (20000) | - | 订阅信息大对象,参考alipay.trade.subscription.query |
通知示例
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042610000000001",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"order_no": "2026042610000000001",
"change_date": "2026-04-26 19:07:38",
"pay_amount": 5900,
"trade_no": "2026042622001443631123456789",
"change_type": "active",
"subscription": {
"subscription_id": "2026042600000000001",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-04-26 19:07:38",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"items": [
{
"item_id": "2026042600000000001",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000001",
"product_id": "202603280010000000001",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000001",
"name": "基础套餐",
"description": "性价比高",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000001",
"metadata":
"{\"product_level\":\"2\",\"product_type\":\"2\",\"product_send_score_month\":\"23000\",\"product_label\":\"basic\",\"product_tag\":\"autoclaw\",\"product_order\":\"11\",\"product_price\":\"
10900\",\"product_send_score_day\":\"100\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"5900\"}"
}
}
}
]
}
}
}
通知应答
| 响应报文 | 描述 | 是否重试 | 是否区分大小写 |
|---|---|---|---|
| success | 消息处理成功 | 否 | 否 |
| fail | 消息处理失败 | 是 | 否 |
说明: NOTIFY_URL是开发者在开放平台控制台上设置的应用网关地址
查询订阅
商家通过订阅 alipay.trade.subscription.query(订阅查询接口)来查询具体的订阅相关信息
重要参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| customer_id | 支付宝客户id | String | 是 | [1,64] | 202603210030100000003 | 支付宝客户id |
| subscription_status | 订阅状态 | String | 否 | [0,64] | ACTIVE | 订阅状态,枚举值:INCOMPLETE(未完成支付)、ACTIVE(活跃)、CANCELED(已取消) |
| subscription_id | 订阅id | String | 否 | [0,64] | 20260320123156789 | 订阅id |
请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.query&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_status":"ACTIVE",
"subscription_id":"20260320123156789",
"customer_id":"202603210030100000003"
}'
响应参数说明
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| subscriptions | 订阅详情信息 | Array | 订阅详情信息列表 |
| ┗ subscription_id | 订阅id | String | 订阅id |
| ┗ customer_id | 支付宝客户id | String | 支付宝客户id |
| ┗ subscribe_title | 订阅标题 | String | 订阅标题 |
| ┗ subscription_status | 订阅状态 | String | 订阅状态,例如INCOMPLETE(未完成)、ACTIVE(活跃)、CANCELED(已取消)等 |
| ┗ current_period_start | 最近一个扣款周期开始时间 | String | 最近一个扣款周期开始时间 |
| ┗ current_period_end | 最近一个扣款周期结束时间 | String | 最近一个扣款周期结束时间 |
| ┗ cancel_at_period_end | 周期结束是否失效 | Boolean | true-周期结束状态生效,false-周期结束依旧生效 |
| ┗ start_date | 订阅开始日期 | String | 订阅开始日期 |
| ┗ canceled_date | 订阅取消时间 | String | 订阅取消时间 |
| ┗ created | 创建时间 | String | 创建时间 |
| ┗ metadata | 订阅元数据 | String | 订阅元数据,订阅创建时传入 |
| ┗ items | 订阅项目信息 | Array | 订阅项目信息列表 |
| ┗ pending_items | 待生效的订阅项 | Array | 待生效的订阅项列表 |
| ┗ trial_start | 试用期开始时间 | String | 试用期开始时间 |
| ┗ trial_end | 试用期结束时间 | String | 试用期结束时间 |
订阅续费扣款
当用户订阅的产品到达续费周期后,将自动从用户账户扣款。扣款成功后,支付宝将通过系统消息通知商户继续提供相应产品或服务进行履约。
sequenceDiagram
participant 商户
participant 支付宝
支付宝-->>商户: 1: 续费结束后发送订阅续费成功/取消的消息(alipay.trade.subscription.changed)
默认扣款逻辑:
- 扣款预通知:在订阅产品到期日前的2天,支付宝会向用户发送扣款预通知,提醒用户即将扣款;
- 执行扣款:在订阅产品到期日的前1天,支付宝会对用户进行扣款;
- 扣款重试:在订阅产品到期前,支付宝会持续根据算法进行多次扣款,直到扣款成功;
- 扣款失败:若订阅产品已到期,支付宝将不再进行扣款,并解约订阅产品。
以下图片仅做线上样式参考,实际页面内容以线上为准。
获取续费结果
商家通过订阅 alipay.trade.subscription.changed(订阅产品商户消息通知接口)来获取订阅商品的续费结果
注意:
- 商户获取消息通知后,需要使用支付宝公钥进行验签
- 用户续费成功后,发送的商户消息通知中的 **订阅变更类型(change_type)为 订阅续费成功(period_extend)
- 到期后仍未扣款成功,发送的商户消息通知中的 **订阅变更类型(change_type)为 订阅已取消(cancel)
通知示例
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"content": {
"order_no": "2026042610000000000",
"change_date": "2026-05-25 07:02:06",
"pay_amount": 10900,
"trade_no": "2026052422001443631123456789",
"change_type": "period_extend",
"subscription": {
"subscription_id": "2026042600000000000",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-05-26 23:59:59",
"current_period_end": "2026-06-26 23:59:59",
"start_date": "2026-04-26 19:47:07",
"items": [
{
"item_id": "2026042600000000000",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000000",
"product_id": "202603280010000000000",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000000",
"name": "订阅套餐",
"description": "性价比高",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000000",
"metadata":
"{\"product_level\":\"2\",\"product_type\":\"2\",\"product_send_score_month\":\"23000\",\"product_label\":\"basic\",\"product_tag\":\"xxx\",\"product_order\":\"11\",\"product_price\":\"10900
\",\"product_send_score_day\":\"100\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"8800\"}"
}
}
}
]
}
}
}
订阅升级
当用户需要将现有订阅产品进行升级,支付宝会根据提前约定的方式自动计算价格,用户可通过支付宝扫码进行变更信息的确认,完成支付并更新订阅产品信息。
- 补差价计算规则,支持多种方式:
- 按照「会员使用时间」进行价格抵扣的计算
- 商户自主计算价格,通过接口传递给支付宝进行扣款
- 升级方式,也支持多种方式:
- 重新计算周期,现有套餐的残值抵扣新周期的支付金额
- 维持原周期不变,仅支付剩余周期的差价
以下图片仅做线上样式参考,实际页面内容以线上为准。
商家可按如下指引调用接口,进行订阅升级并感知升级结果
sequenceDiagram
participant 用户
participant 商户
participant 支付宝
用户->>商户: 1: 发起升级
商户->>支付宝: 1.1: 订阅修改(alipay.trade.subscription.modify)
支付宝->>支付宝: 1.1.1: 差价计算,计算用户需要实际支付的金额
支付宝-->>商户: 1.1.2: 返回订阅id以及升级的支付链接
商户->>商户: 1.2: 消费支付链接,如果是网页版,展示支付二维码
商户-->>用户: 1.3: 二维码展示
商户->>支付宝: 1.4: 消费支付链接,如果是app端,则唤起支付宝,与二维码选其一对客
支付宝-->>商户: 1.5: 支付完成后发送订阅更新结果消息(alipay.trade.subscription.changed)
发起订阅升级
商家可通过订阅修改接口 alipay.trade.subscription.modify(订阅修改接口) 实现订阅升级功能,引导用户升级到更高级的订阅方案
注意:
- 订阅升级需要用户确认并完成支付,因此会返回支付宝跳转链接供用户确认
- 升级类型通过
modify_type参数设置为UPGRADE - 可以通过
preserve_billing_cycle参数控制是否保持计费周期不变 - 可以通过
pay_amount参数自定义升级支付金额,如不传则系统自动计算
订阅升级参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| subscription_id | 订阅id | String | 是 | [1,64] | 20260320123156789 | 需要升级的订阅id |
| modify_type | 更新类型 | String | 否 | [1,64] | UPGRADE | 固定设置为 UPGRADE,表示订阅升级操作。如不传默认为UPGRADE |
| preserve_billing_cycle | 是否保持计费周期不变 | Boolean | 否 | - | true | 是否保持计费周期不变。true - 保持原周期,升级后按原周期计算差价;false - 重置周期,升级后按完整新周期计算 |
| pay_amount | 支付金额 | Number | 否 | [0,1000000000] | 100 | 升级支付金额,单位:分。用于商户自定义升级费用,如不传则系统自动计算升级差价 |
| items | 订阅项目信息 | Array | 否 | [0,100] | - | 升级后的订阅项目信息 |
| ┗ item_id | 订阅项id | String | 否 | - | 2026032012314 | 订阅项id |
| ┗ price_id | 价格id | String | 否 | - | 202603201234567889 | 价格创建接口(alipay.trade.price.create)返回的价格id,代表本次操作的目标价格信息 |
| ┗ coupon_id | 优惠id | String | 否 | - | 9WJ36SEC | 营销创建接口(alipay.trade.promotion.coupon.create)返回的优惠id,升级时可使用优惠券抵扣 |
注意:其它参数若有传参需要,请与支付宝技术支持沟通确认
订阅升级请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"UPGRADE",
"preserve_billing_cycle":true,
"pay_amount":100,
"items":[
{
"item_id":"2026032012314",
"price_id":"202603201234567889",
"coupon_id":"9WJ36SEC"
}
]
}'
订阅升级响应参数
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| subscription_id | 订阅id | String | 订阅id |
| order_no | 订阅支付单ID | String | 升级订单的支付单ID |
| pay_amount | 支付金额 | Number | 实际支付金额,单位:分 |
| alipay_jump_schema | 支付宝长链跳端schema | String | 长链,适用于跳转拉起支付宝客户端,用户需通过此链接确认升级并完成支付 |
| alipay_schema | 支付宝跳转的schema | String | 短链,适用于生成二维码,用户扫码确认升级并完成支付 |
| promotion_info | 优惠券信息 | String | 使用的优惠券信息,包含优惠金额等 |
使用支付链接
升级请求成功后,会返回支付链接:
- 长链跳转(推荐):
window.location.href = response.alipay_jump_schema;
- 短链二维码:
// 使用短链生成二维码
QRCode.toDataURL(response.alipay_schema, function(error, url) {
document.getElementById('qrcode').src = url;
});
升级场景示例
场景1:基础版升级到高级版,保持计费周期
{
"subscription_id":"20260320123156789",
"modify_type":"UPGRADE",
"preserve_billing_cycle":true,
"items":[
{
"item_id":"2026032012314",
"price_id":"202603201234567889"
}
],
"description":"升级到高级版"
}
场景2:自定义升级费用,不含优惠券
{
"subscription_id":"20260320123156789",
"modify_type":"UPGRADE",
"pay_amount":500,
"preserve_billing_cycle":false,
"items":[
{
"item_id":"2026032012314",
"price_id":"202603201234567889"
}
],
"description":"自定义升级费用5元"
}
场景3:使用优惠券升级
{
"subscription_id":"20260320123156789",
"modify_type":"UPGRADE",
"preserve_billing_cycle":true,
"items":[
{
"item_id":"2026032012314",
"price_id":"202603201234567889",
"coupon_id":"9WJ36SEC"
}
]
}
注意事项
- 支付确认:升级操作需要用户在支付宝端确认支付,请务必引导用户完成支付流程
- 周期控制:
preserve_billing_cycle参数影响计费周期,请根据业务需求选择合适的值 - 金额计算:如果不传
pay_amount,系统会自动计算升级差价 - 优惠使用:升级时可以使用商户配置的优惠抵扣部分费用
- 结果通知:升级完成后,支付宝会通过订阅变更通知接口推送结果,请及时处理
升级结果通知
支付宝通过订阅变更通知接口 alipay.trade.subscription.changed(订阅产品商户消息通知接口)向商户发送订阅升级结果通知,商户需接收并处理升级结果
注意:
- 升级结果通知是支付宝主动推送到商户应用网关的异步通知
- 商户需在开放平台配置应用网关地址(NOTIFY_URL)
- 商户收到通知后需返回
success表示处理成功,否则返回fail - 投递重试策略:25小时内完成8次通知,间隔频率为:2m、10m、10m、1h、2h、6h、15h
升级通知参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| change_type | 订阅变更类型 | String | 是 | (32) | item_update | 订阅升级的类型,升级场景为 item_update |
| change_date | 订阅变更时间 | String | 否 | (32) | 2026-03-22 21:00 | 升级完成时间 |
| trade_no | 交易号 | String | 否 | (64) | 2026022276001434360514767918 | 升级支付的交易号,可根据该交易号调用支付宝交易查询接口查询详情 |
| order_no | 订阅支付单ID | String | 否 | (64) | 2026042019600065895 | 升级订单的支付单ID |
| pay_amount | 支付金额 | String | 否 | (16) | 1001 | 升级支付金额,单位:分 |
| subscription | 订阅信息 | String | 否 | (20000) | - | 升级后的完整订阅信息JSON对象,包含订阅ID、状态、订阅项目等 |
升级通知示例
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042610000000000",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"order_no": "2026042610000000000",
"change_date": "2026-05-25 07:02:06",
"pay_amount": 10900,
"trade_no": "2026052422001443631123456789",
"change_type": "item_update",
"subscription": {
"subscription_id": "2026042600000000000",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-04-26 19:07:38",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"items": [
{
"item_id": "2026042600000000000",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000000",
"product_id": "202603280010000000000",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000000",
"name": "高级套餐",
"description": "升级后的高级套餐,包含更多权益",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000000",
"metadata":
"{\"product_level\":\"3\",\"product_type\":\"2\",\"product_send_score_month\":\"50000\",\"product_label\":\"premium\",\"product_tag\":\"upgrade\",\"product_order\":\"20\",\"product_price\":\
"10900\",\"product_send_score_day\":\"200\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"8800\"}"
}
}
}
]
}
}
}
subscription对象说明
升级通知中的 subscription 字段包含完整的订阅信息:
| 参数 | 名称 | 类型 | 描述 |
|---|---|---|---|
| subscription_id | 订阅id | String | 订阅id |
| customer_id | 支付宝客户id | String | 支付宝客户id |
| subscribe_title | 订阅标题 | String | 升级后的订阅标题 |
| subscription_status | 订阅状态 | String | 升级后的订阅状态,通常为 ACTIVE |
| current_period_start | 当前周期开始时间 | String | 升级后的计费周期开始时间 |
| current_period_end | 当前周期结束时间 | String | 升级后的计费周期结束时间 |
| cancel_at_period_end | 周期结束是否失效 | Boolean | 升级后是否在周期结束时失效 |
| start_date | 订阅开始日期 | String | 订阅开始日期 |
| created | 创建时间 | String | 订阅创建时间 |
| metadata | 订阅元数据 | String | 订阅元数据 |
| items | 订阅项目信息 | Array | 升级后的订阅项目信息列表 |
通知应答规范
| 响应内容 | 含义 | 支付宝行为 |
|---|---|---|
| success | 处理成功 | 停止投递通知 |
| fail | 处理失败 | 按照重试策略继续投递 |
| 其他 | 未知状态 | 按照重试策略继续投递 |
| 无响应/超时 | 处理失败 | 按照重试策略继续投递 |
订阅降级
当用户需要将现有订阅产品进行降级,支付宝会根据提前约定的方式自动计算价格,用户可通过支付宝扫码进行变更信息的确认,确认后将更新订阅产品信息。
- 在降级方式上,仅支持一种方式:
- 用户的降级在下一周期生效,本周期权益持续用完
以下图片仅做线上样式参考,实际页面内容以线上为准。
商家可按如下指引调用接口,进行订阅降级并感知降级结果
sequenceDiagram
participant 用户
participant 商户
participant 支付宝
用户->>商户: 1: 发起降级
商户->>支付宝: 1.1: 订阅修改(alipay.trade.subscription.modify)
支付宝-->>商户: 1.2: 返回订阅id以及降级的链接
商户->>商户: 1.3: 消费降级链接,如果是网页版,展示支付二维码
商户-->>用户: 1.4: 二维码展示
商户->>支付宝: 1.5: 消费降级链接,如果是app端,则唤起支付宝,与二维码选其一对客
支付宝-->>商户: 1.6: 降级完成后发送订阅更新结果消息(alipay.trade.subscription.changed)
发起订阅降级
商家可通过订阅修改接口 alipay.trade.subscription.modify(订阅修改接口) 实现订阅降级功能,引导用户降级到低级别的订阅方案,并接收降级结果通知
注意:
- 订阅降级需要用户确认,因此会返回支付宝跳转链接供用户确认
- 当前降级的模式为:当前订阅仍将使用到周期结束,本周期结束时,若对降级后的价格扣款成功,则降级后的订阅开始生效
- 降级类型通过
modify_type参数设置为DOWNGRADE - 降级结果将通过订阅变更通知接口推送给商户
降级参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| subscription_id | 订阅id | String | 是 | [1,64] | 20260320123156789 | 需要降级的订阅id |
| modify_type | 更新类型 | String | 是 | [1,64] | DOWNGRADE | 固定设置为 DOWNGRADE,表示订阅降级操作 |
| cancel_at_period_end | 是否在当前周期结束时降级 | Boolean | 是 | - | true | 降级场景设置为 true,在当前计费周期结束时降级 |
| items | 订阅项目信息 | Array | 否 | [0,100] | - | 需要降级的订阅项目信息 |
| ┗ item_id | 订阅项id | String | 否 | - | 2026032012314 | 原生效订阅项id |
| ┗ price_id | 价格id | String | 否 | - | 202603201234567889 | 降级后的目标价格id |
降级请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"DOWNGRADE",
"cancel_at_period_end":true,
"items":[
{
"item_id":"2026032012315",
"price_id":"202603201234567890"
}
]
}'
降级响应参数
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| subscription_id | 订阅id | String | 订阅id |
| alipay_jump_schema | 支付宝长链跳端schema | String | 长链,适用于跳转拉起支付宝客户端,用户需通过此链接确认降级 |
| alipay_schema | 支付宝跳转的schema | String | 短链,适用于生成二维码,用户扫码确认降级 |
响应示例
{
"alipay_trade_subscription_modify_response": {
"code": "10000",
"msg": "Success",
"subscription_id": "20260320123156789",
"alipay_jump_schema": "https://render.alipay.com/XXXXXXXXXX",
"alipay_schema": "https://basementurl.test.alipay.net/_1bQzQBRlIPjfo4eyx5SlMJ"
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
降级结果通知
支付宝通过订阅变更通知接口 alipay.trade.subscription.changed(订阅产品商户消息通知接口) 向商户发送订阅降级结果通知
注意:
- 降级结果通知的
change_type为item_downgrade - 商户需在开放平台配置应用网关地址(NOTIFY_URL)
- 商户收到通知后需返回
success,否则支付宝会重试通知
降级通知参数
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| change_type | 订阅变更类型 | String | 是 | (32) | item_update | item_downgrade |
| change_date | 订阅变更时间 | String | 否 | (32) | 2026-03-22 21:00 | 降级完成时间 |
| subscription | 订阅信息 | String | 否 | (20000) | - | 降级后的完整订阅信息JSON对象 |
注意:其它参数若有传参需要,请与支付宝技术支持沟通确认
降级通知示例
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042600000000002",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"change_date": "2026-05-10 15:30:00",
"change_type": "item_downgrade",
"subscription": {
"subscription_id": "2026042600000000001",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-04-26 19:07:38",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"items": [
{
"item_id": "2026042600000000002",
"quantity": 1,
"created": "2026-05-10 15:30:00",
"price": {
"id": "202603280020000000002",
"product_id": "202603280010000000002",
"unit_amount": "4900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000002",
"name": "入门套餐",
"description": "适合轻度使用用户,基础功能满足日常需求",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000002",
"metadata":
"{\"product_level\":\"1\",\"product_type\":\"2\",\"product_send_score_month\":\"10000\",\"product_label\":\"starter\",\"product_tag\":\"downgrade\",\"product_order\":\"5\",\"product_price\":
\"4900\",\"product_send_score_day\":\"50\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"2900\"}"
}
}
}
]
}
}
}
订阅取消
用户可在支付宝随时取消订阅产品的后续扣款。
同时,也支持用户在商家的页面中操作取消后,商家通过调用API接口来进行主动取消。
发起订阅取消
商家可通过订阅修改接口 alipay.trade.subscription.modify(订阅修改接口) 实现订阅取消和取消后恢复功能,并接收相应的通知
注意:
- 目前取消类型分为两种:
- 周期结束后取消:设置
cancel_at_period_end=true - 立即取消:设置
cancel_at_period_end=false
- 周期结束后取消:设置
- 立即取消会触发退款,退款金额可自定义退款金额 或 系统自动计算残值,若商户自定义金额为0,即为为立即取消但不退款
- 取消结果将通过订阅变更通知接口推送给商户
取消参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| subscription_id | 订阅id | String | 是 | [1,64] | 20260320123156789 | 需要取消的订阅id |
| modify_type | 更新类型 | String | 是 | [1,64] | CANCEL | 固定设置为 CANCEL,表示订阅取消操作 |
| cancel_at_period_end | 是否在当前周期结束时取消订阅 | Boolean | 是 | - | true | true:表示在当前计费周期结束后取消订阅; false:表示立即取消 |
| refund_amount | 自定义退款金额 | Number | 否 | [0,1000000000] | 100 | 不传:系统按照时间规则计算残值作为退款金额;自定义传入:按商家指定的金额退款,0表示直接取消不退款 |
取消请求示例
场景1:立即取消,系统自动计算退款
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"CANCEL",
"cancel_at_period_end":false
}'
场景2:周期结束时取消,不退款
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"CANCEL",
"cancel_at_period_end":true
}'
场景3:立即取消,自定义退款金额
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"CANCEL",
"cancel_at_period_end":false,
"refund_amount":200
}'
场景4:立即取消,不退款
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"CANCEL",
"cancel_at_period_end":false,
"refund_amount":0
}'
取消响应参数
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| subscription_id | 订阅id | String | 订阅id |
| refund_order_id | 退款业务单号 | String | 退款业务单号(立即取消时返回) |
| refund_amount | 退款金额 | Number | 退款金额,单位:分(立即取消时返回) |
响应示例
{
"alipay_trade_subscription_modify_response": {
"code": "10000",
"msg": "Success",
"subscription_id": "20260320123156789",
"refund_order_id": "2026042019600065895",
"refund_amount": 150
},
"sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}
订阅取消结果通知
支付宝通过订阅变更通知接口 alipay.trade.subscription.changed(订阅产品商户消息通知接口) 向商户发送订阅取消结果通知
注意:
- 取消结果通知的
change_type为订阅状态变更 - 立即取消的通知会包含退款信息(refund_order_id、refund_amount)
- 周期结束取消的通知会设置
cancel_at_period_end=true - 商户需在开放平台配置应用网关地址(NOTIFY_URL)
- 商户收到通知后需返回
success,否则支付宝会重试通知
取消通知参数
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| change_type | 订阅变更类型 | String | 是 | (32) | - | 立即取消类型为cancel; 周期结束取消类型为cancel_at_period_end |
| change_date | 订阅变更时间 | String | 否 | (32) | 2026-03-22 21:00 | 取消完成时间 |
| trade_no | 交易号 | String | 否 | (64) | 2026022276001434360514767918 | 关联的交易号 |
| order_no | 订阅支付单ID | String | 否 | (64) | 2026042019600065895 | 取消订单ID |
| subscription | 订阅信息 | String | 否 | (20000) | - | 取消后的完整订阅信息JSON对象 |
取消通知示例:
- 设置周期末取消
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042600000000001",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"order_no": "2026042600000000001",
"change_date": "2026-05-20 10:15:30",
"change_type": "cancel_at_period_end",
"subscription": {
"subscription_id": "2026042600000000001",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-04-26 19:07:38",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"canceled_at": "2026-05-20 10:15:30",
"cancel_at_period_end": true,
"items": [
{
"item_id": "2026042600000000001",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000001",
"product_id": "202603280010000000001",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000001",
"name": "基础套餐",
"description": "适合有稳定使用需求的用户,每日可领取积分,使用更持续,整体性价比更高",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000001",
"metadata":
"{\"product_level\":\"2\",\"product_type\":\"2\",\"product_send_score_month\":\"23000\",\"product_label\":\"basic\",\"product_tag\":\"autoclaw\",\"product_order\":\"11\",\"product_price\":\"
10900\",\"product_send_score_day\":\"100\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"5900\"}"
}
}
}
]
}
}
}
- 立即取消/周期结束时实际取消
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042600000000001",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"order_no": "2026042600000000001",
"change_date": "2026-05-10 14:30:00",
"change_type": "cancel",
"refund_amount": 8500,
"refund_trade_no": "2026051022001443639876543210",
"subscription": {
"subscription_id": "2026042600000000001",
"created": "2026-04-26 19:07:38",
"subscription_status": "CANCELED",
"customer_id": "202604260034123456789",
"current_period_start": "2026-05-01 00:00:00",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"canceled_at": "2026-05-10 14:30:00",
"ended_at": "2026-05-10 14:30:00",
"items": [
{
"item_id": "2026042600000000001",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000001",
"product_id": "202603280010000000001",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000001",
"name": "基础套餐",
"description": "性价比高",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000001",
"metadata":
"{\"product_level\":\"2\",\"product_type\":\"2\",\"product_send_score_month\":\"23000\",\"product_label\":\"basic\",\"product_tag\":\"autoclaw\",\"product_order\":\"11\",\"product_price\":\"
10900\",\"product_send_score_day\":\"100\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"5900\"}"
}
}
}
]
}
}
}
取消后恢复
适用于下周期生效的取消方式,如果用户操作取消,但在周期结束前想恢复订阅,可以使用取消后恢复功能
恢复参数说明
| 参数 | 名称 | 参数类型 | 是否必填 | 最大长度 | 示例值 | 描述 |
|---|---|---|---|---|---|---|
| subscription_id | 订阅id | String | 是 | [1,64] | 20260320123156789 | 需要恢复的订阅id |
| modify_type | 更新类型 | String | 是 | [1,64] | REVERT_CANCEL | 固定设置为 REVERT_CANCEL,表示取消后恢复操作 |
| cancel_at_period_end | 是否在当前周期结束时取消订阅 | Boolean | 是 | - | false | false:表示操作恢复 |
恢复请求示例
curl 'https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.subscription.modify&format=json&sign=${sign}&app_id=${appid}&version=1.0&sign_type=RSA2×tamp=${now}' \
-F 'app_auth_token=${app_auth_token}' \
-F 'biz_content={
"subscription_id":"20260320123156789",
"modify_type":"REVERT_CANCEL"
}'
恢复响应参数
| 参数 | 名称 | 参数类型 | 描述 |
|---|---|---|---|
| subscription_id | 订阅id | String | 订阅id |
| alipay_jump_schema | 支付宝长链跳端schema | String | 长链,适用于跳转拉起支付宝客户端,用户需通过此链接确认恢复 |
| alipay_schema | 支付宝跳转的schema | String | 短链,适用于生成二维码,用户扫码确认恢复 |
恢复结果通知
恢复成功后,支付宝会发送订阅变更通知:
subscription_status会变为ACTIVEcancel_at_period_end会变为falsecanceled_date会被清除
恢复通知示例
{
"msgApi": "alipay.trade.subscription.changed",
"msgOwnerId": null,
"bizId": "2026042600000000001",
"producerId": "subscribecore",
"producerType": "ANT_APP",
"consumerId": "2021006141630090",
"consumerType": "OPEN_APP",
"content": {
"order_no": "2026042600000000001",
"change_date": "2026-05-22 16:45:00",
"pay_amount": 10900,
"trade_no": "2026052222001443631123456789",
"change_type": "item_cancel_revert",
"subscription": {
"subscription_id": "2026042600000000001",
"created": "2026-04-26 19:07:38",
"subscription_status": "ACTIVE",
"customer_id": "202604260034123456789",
"current_period_start": "2026-04-26 19:07:38",
"current_period_end": "2026-05-26 23:59:59",
"start_date": "2026-04-26 19:07:38",
"canceled_at": null,
"cancel_at_period_end": false,
"items": [
{
"item_id": "2026042600000000001",
"quantity": 1,
"created": "2026-04-26 19:07:38",
"price": {
"id": "202603280020000000001",
"product_id": "202603280010000000001",
"unit_amount": "10900",
"type": "recurring",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"metadata": "{}",
"recurring": {
"interval": "MONTH",
"interval_count": 1,
"usage_type": "licensed"
},
"product": {
"id": "202603280010000000001",
"name": "基础套餐",
"description": "性价比高",
"active": true,
"gmt_create": "2026-03-28 14:54:55",
"default_price_id": "202603280020000000001",
"metadata":
"{\"product_level\":\"2\",\"product_type\":\"2\",\"product_send_score_month\":\"23000\",\"product_label\":\"basic\",\"product_tag\":\"autoclaw\",\"product_order\":\"11\",\"product_price\":\"
10900\",\"product_send_score_day\":\"100\",\"product_send_score_forever\":\"0\",\"product_month_count\":\"1\",\"status\":\"0\",\"product_first_month_discount_price\":\"5900\"}"
}
}
}
]
}
}
}