跳到正文
Indiana
控制台
文档
章节目录 / 套餐试用

套餐试用

配置商品试用,通过可信后端管理,并区分默认免费与自动试用。

SDK 0.0.1更新于

通过商品和结账节点提供试用

  • 在会员商品中配置试用天数、是否要求支付方式及独立的试用权益,保存并发布。
  • 在商品的支付绑定页面绑定本 App 的 Stripe Sandbox 价格。Funnel 结账节点引用该商品的固定版本。
  • 服务端确认真实试用开始后授予试用权益。试用零金额发票不计收入;首笔实际续费付款验证后才生成收入与付费周期。

Stripe 试用通过已发布商品条款和真实渠道事实生效。Apple/Google 试用需配置商店资格、固定 SKU 和验单;由商店决定资格与实际周期,不能用客户端声明或 Stripe 规则代替。SDK 接口可用不代表真实商店试用已验收。

服务端启动、延长与结束试用

组织 SDK 0.0.1 包含 manageSubscriptionTrial 和 readSubscriptionTrial。使用快速开始的 groove 服务端客户端;customerId 来自已验证登录身份的关联,不能接受浏览器指定其他客户。管理需要 billing:write,恢复读取需要 billing:read。下面是业务片段,调用方须持久保存完整输入和原 requestId。

start 使用 productVersionId、可选 Entity/days;extend 使用 membershipId 和 days;end 使用 membershipId。天数为 1–730,reason 为 1–240 字符。延长以冻结请求时间重新计算期限,不累加浏览器日期。响应丢失重放原输入,已知 operationId 时恢复原操作。

Free 和 Stripe 按各自合同与验证规则执行。Apple/Google 返回 store_action_required 和 managementUrl,不能据此声称商店试用已经改变。共享订阅可能涉及多个 membershipIds,调用方应展示真实返回范围。

server/trial-management.ts · fragmentTypeScript
const { trial } = await groove.manageSubscriptionTrial({  customerId: verifiedCustomer.id,  action: "extend",  membershipId: verifiedMembershipId,  days: 14,  reason: "Approved trial extension",  requestId: retainedRequestId,});// Save trial.operationId; read the same operation after a lost response.const recovered = await groove.readSubscriptionTrial({  customerId: verifiedCustomer.id,  operationId: trial.operationId,});// effective means applied; store_action_required requires a store operation.// In the latter case, return managementUrl to the authenticated host.

默认免费套餐与自动试用

默认免费套餐按组配置有效的发布版本,客户创建或原付费合同结束时按资格分配/回落。自动无卡试用是独立的组政策,须配置商品版本并启用;它不等于永久免费合同或持续付款授权。未配置这些政策时,空持有是正常结果。调用方读取 readHoldings 的真实合同和期间,不根据用户注册时间自行推定试用资格。

相关:功能、套餐与生命周期