model_namestring
你店面的定价模型。
boundsobject
配置器的规则 —— 每次报价和下单都会在服务端重新校验。
bounds.gb_minint
购物车可请求的最小流量。
bounds.users_minint
最少并发设备数。
bounds.months_minint
最短期限。
bounds.new_accounts_maxint
单个订单最多可创建的账号数。
bounds.extend_maxint
单个订单最多可续期的账号数。
bounds.default_gbint
合理的滑块默认值。
bounds.default_usersint
默认设备数。
bounds.default_monthsint
默认期限。
bundlesarray
固定价格卡片(当你的店面是卡片目录时)。
bundles[].bundle_idstring
要放进 cart.bundle_id 的句柄。
bundles[].namestring
卡片名称,已按账户语言本地化。
bundles[].online_usersint
并发设备数。
bundles[].price_usdmoney
价格。它就是最终价格 —— 卡片无需报价。
bundles[].highlightbool
店面的主推卡片。
bundles[].daily_cap_gbint
每日上限,以 GB 计。缺失 = 没有。
bundles[].tierenum
这张卡片所销售的产品等级。购买该卡片时把它放进 cart.tier。
取值之一:plusproelite
tiersarray
这个店面实际销售的每个产品等级,各自带着自己的上下限、自己的模型和自己的卡片。运营方未配置的等级不会出现在这里 —— 所以照原样渲染这个列表,你就永远不会提供一个在结账时失败的选项。上面四个字段仍然是 plus 视图,供等级出现之前编写的客户端使用。
tiers[].tierenum
要销售这个等级,就把它放进 cart.tier。
取值之一:plusproelite
tiers[].display_namestring
面向客户的词:PLUS、PRO、ELITE。
tiers[].model_namestring
为这个等级作答的定价模型。
tiers[].model_typestring
它的引擎版本。
tiers[].boundsobject
这个等级自己的滑块上下限。
tiers[].bounds.gb_minint
购物车可请求的最小流量。
tiers[].bounds.gb_maxint
最大值。
tiers[].bounds.gb_stepint
滑块的步长。
tiers[].bounds.users_minint
最少并发设备数。
tiers[].bounds.users_maxint
最多。
tiers[].bounds.months_minint
最短期限。
tiers[].bounds.months_maxint
最长。
tiers[].bounds.new_accounts_maxint
单个订单最多可创建的账号数。
tiers[].bounds.extend_maxint
单个订单最多可续期的账号数。
tiers[].bounds.default_gbint
合理的滑块默认值。
tiers[].bounds.default_usersint
默认设备数。
tiers[].bounds.default_monthsint
默认期限。
tiers[].bundlesarray
这个等级自己的固定价格卡片。
tiers[].bundles[].bundle_idstring
要放进 cart.bundle_id 的句柄。
tiers[].bundles[].namestring
卡片名称,已按账户语言本地化。
tiers[].bundles[].gbint
包含的流量。
tiers[].bundles[].monthsint
有效期。
tiers[].bundles[].online_usersint
并发设备数。
tiers[].bundles[].price_usdmoney
价格。它就是最终价格 —— 卡片无需报价。
tiers[].bundles[].highlightbool
店面的主推卡片。
tiers[].bundles[].daily_cap_gbint
每日上限,以 GB 计。缺失 = 没有。
tiers[].bundles[].tierenum
这张卡片所销售的产品等级。购买该卡片时把它放进 cart.tier。
取值之一:plusproelite
响应示例{
"model_name": "vpn_dynamic",
"model_type": "dynamic_v2",
"bounds": {
"gb_min": 10, "gb_max": 500, "gb_step": 10,
"users_min": 1, "users_max": 10,
"months_min": 1, "months_max": 12,
"new_accounts_max": 5, "extend_max": 10,
"default_gb": 100, "default_users": 3, "default_months": 1
},
"bundles": [
{"bundle_id": "card_100_1m", "name": "100 GB · 1 month", "gb": 100, "months": 1,
"online_users": 3, "price_usd": "11.90", "highlight": true, "tier": "plus"}
],
"tiers": [
{"tier": "plus", "display_name": "PLUS", "model_name": "vpn_dynamic", "model_type": "dynamic_v2",
"bounds": {"gb_min": 10, "gb_max": 500, "gb_step": 10, "users_min": 1, "users_max": 10,
"months_min": 1, "months_max": 12, "new_accounts_max": 5, "extend_max": 10,
"default_gb": 100, "default_users": 3, "default_months": 1},
"bundles": [
{"bundle_id": "card_100_1m", "name": "100 GB · 1 month", "gb": 100, "months": 1,
"online_users": 3, "price_usd": "11.90", "highlight": true, "tier": "plus"}
]},
{"tier": "pro", "display_name": "PRO", "model_name": "vpn_dynamic_pro", "model_type": "dynamic_v2",
"bounds": {"gb_min": 10, "gb_max": 500, "gb_step": 10, "users_min": 1, "users_max": 10,
"months_min": 1, "months_max": 12, "new_accounts_max": 5, "extend_max": 10,
"default_gb": 100, "default_users": 3, "default_months": 1},
"bundles": []}
]
}