预览订阅变更
POST/api/v1/subscriptions/preview-update
指定已持有套餐和目标版本或席位,冻结真实 Stripe 差额报价与保留套餐。报价不执行付款;同一 requestId 重试返回原操作。共享订阅目前要求共同收费周期。
SDK 0.0.1更新于
发起请求
指定已持有套餐和目标版本或席位,冻结真实 Stripe 差额报价与保留套餐。报价不执行付款;同一 requestId 重试返回原操作。共享订阅目前要求共同收费周期。
- 调用凭据
- 服务端 API Key 或客户 Token。客户调用不能选择其他客户。
- 所需权限
billing:read
base URL 和 App ID 来自 SDK 接入页。示例使用占位值,不会执行请求。服务端 Key 不可放入浏览器。
1curl -X POST "$GROOVE_BASE_URL/api/v1/subscriptions/preview-update" \2 -H "Authorization: Bearer $GROOVE_CUSTOMER_TOKEN" \3 -H "X-Groove-Project: $GROOVE_PROJECT_ID" \4 -H "X-Groove-Environment: sandbox" \5 -H "Content-Type: application/json" \6 -d '{7 "requestId": "00000000-0000-4000-8000-000000000001",8 "membershipId": "00000000-0000-4000-8000-000000000001",9 "timing": "immediate",10 "change": {11 "type": "plan",12 "productVersionId": "00000000-0000-4000-8000-000000000001"13 }14}'
响应选项卡列出字段类型,不是响应示例;实际值由客户状态决定。
请求参数
JSON 请求体
requestIduuid必填你的业务请求 UUID;同一次操作重试复用,新的操作生成新值。
membershipIduuid必填本次操作的 membershipId 值,类型和约束见字段标注。
carryOverBalancesobject可选本次操作的 carryOverBalances 值,类型和约束见字段标注。
展开子字段
enabledtrue必填本次操作的 enabled 值,类型和约束见字段标注。
featureIdsarray可选本次操作的 featureIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 100
carryOverUsagesobject可选本次操作的 carryOverUsages 值,类型和约束见字段标注。
展开子字段
enabledtrue必填本次操作的 enabled 值,类型和约束见字段标注。
featureIdsarray可选本次操作的 featureIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 100
membershipIdsarray可选本次操作的 membershipIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 20
timingenum必填立即变更或在周期末变更;只用于契约允许的套餐变更动作。
查看允许值
"immediate""renewal""store"
changeobject | object | object | object | object必填本次操作的 change 值,类型和约束见字段标注。
展开子字段
type"plan" | "seats" | "quantity" | "cancel" | "uncancel"必填本次操作的 type 值,类型和约束见字段标注。
productVersionIduuid可选本次操作的 productVersionId 值,类型和约束见字段标注。
licenseKeystring可选本次操作的 licenseKey 值,类型和约束见字段标注。
minLength: 1 · maxLength: 64 · pattern: ^[a-z][a-z0-9_]*$
quantityinteger | integer可选业务数量按字段标注类型传入;积分操作用十进制字符串,避免浮点误差。quote/reserve/confirm/refund 要求正数;consume 可记录零费用事件。
entitlementVersionIduuid可选本次操作的 entitlementVersionId 值,类型和约束见字段标注。
customerIduuid可选Indiana 客户 ID。服务端从已验证身份关联;客户 Token 调用时省略并使用 Token 绑定的客户。
响应字段
成功响应包含 requestId 和 scope。结合实际业务状态或 accepted 判断操作结果;可选字段不可用时省略。
HTTP 200 · application/json
requestIduuid必填服务端生成的 HTTP 请求 UUID,排查请求时提供这个值。
scopeobject必填响应实际所属的 App 和环境。Header 只能核对,不能切换 Key 范围。
展开子字段
projectIdstring必填凭据绑定的 App ID。
minLength: 1
environmentenum必填独立数据范围:sandbox 或 live。
查看允许值
"sandbox""live"
quoteobject | object必填本次操作的 quote 值,类型和约束见字段标注。
展开子字段
carryOverBalancesobject可选本次操作的 carryOverBalances 值,类型和约束见字段标注。
展开子字段
enabledtrue必填本次操作的 enabled 值,类型和约束见字段标注。
featureIdsarray可选本次操作的 featureIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 100
carryOverUsagesobject可选本次操作的 carryOverUsages 值,类型和约束见字段标注。
展开子字段
enabledtrue必填本次操作的 enabled 值,类型和约束见字段标注。
featureIdsarray可选本次操作的 featureIds 值,类型和约束见字段标注。
minItems: 1 · maxItems: 100
operationIduuid | uuid必填业务操作 UUID;订阅执行引用 previewAttach 返回的 operationId,余额退款引用原消费操作。
membershipIduuid | uuid必填本次操作的 membershipId 值,类型和约束见字段标注。
productVersionIduuid | uuid必填本次操作的 productVersionId 值,类型和约束见字段标注。
timingenum | "store"必填立即变更或在周期末变更;只用于契约允许的套餐变更动作。
effectiveAtdate-time | null必填本次操作的 effectiveAt 值,类型和约束见字段标注。
expiresAtdate-time | date-time必填ISO 8601 UTC 到期时间;会话和预占到期后不能继续使用。
currencyenum | enum必填已发布价格支持的币种代码。
creditMinorinteger | null必填本次操作的 creditMinor 值,类型和约束见字段标注。
debitMinorinteger | null必填本次操作的 debitMinor 值,类型和约束见字段标注。
discountMinorinteger | null必填本次操作的 discountMinor 值,类型和约束见字段标注。
taxMinorinteger | null必填本次操作的 taxMinor 值,类型和约束见字段标注。
totalMinorinteger | null必填本次操作的 totalMinor 值,类型和约束见字段标注。
retainedProductVersionIdsarray | array必填本次操作的 retainedProductVersionIds 值,类型和约束见字段标注。
storeobject可选本次操作的 store 值,类型和约束见字段标注。
展开子字段
providerenum必填本次操作的 provider 值,类型和约束见字段标注。
查看允许值
"apple""google"
productIdstring必填本次操作的 productId 值,类型和约束见字段标注。
minLength: 1 · maxLength: 255
catalogAmountMinorinteger必填本次操作的 catalogAmountMinor 值,类型和约束见字段标注。
min: 0 · max: 100000000
policyenum必填本次操作的 policy 值,类型和约束见字段标注。
查看允许值
"apple_store""google_full_price"
处理错误
常见失败| 错误码 | 处理方式 |
|---|
| UNAUTHENTICATED | 核对 Key,或将过期客户 Token 重新签发一次。 |
| FORBIDDEN | 核对当前 Key 权限与客户访问范围。 |
| INVALID_REQUEST | 检查字段类型、UUID、十进制字符串和互斥字段。 |
| SCOPE_MISMATCH | 使用凭据绑定的 App 和环境。 |
常见失败
UNAUTHENTICATED
- 处理方式
- 核对 Key,或将过期客户 Token 重新签发一次。
FORBIDDEN
- 处理方式
- 核对当前 Key 权限与客户访问范围。
INVALID_REQUEST
- 处理方式
- 检查字段类型、UUID、十进制字符串和互斥字段。
SCOPE_MISMATCH
- 处理方式
- 使用凭据绑定的 App 和环境。
相关:完整请求与错误约定·返回接口索引