如何允许用户更改订阅计划
注:
运行机制
- 选择新计划后,当前订阅未使用周期部分将退款到用户余额。
- 新订阅计划全部使用用户余额进行支付。如余额不足,其余部分用项目支持的任何其他支付方式进行支付。
- 更改计划时,确认付款后资金将立即划除,即使项目的配置是计划从下一账单周期开始更改也是如此。
如新计划的支付货币与当前计划不同,在新计划将在货币转换后进行支付。
注:
如项目中配置了计划组,则只能在同一个组中更改计划。关于组操作的详细信息,请参阅如何设置基于订阅的产品和计划组说明。
如何获取
- 在发布商帐户中打开您的项目。
- 在侧边栏中单击订阅,然后前往设置部分。
- 在更改计划部分,将支持选择其他计划开关设置为开。
- 默认情况下,计划更改从下一周期开始生效。如要允许在当前周期中更改计划,请选择现在。如选择该选项,计划更改将在确认付款后立即发生。
- 如要允许一天内多次更改计划,请将支持在同一天内多次选择不同的计划开关设置为开。
- 打开支付界面时,请使用:
- 服务器侧创建令牌API调用
- 客户端侧API调用以获取打开支付UI的链接(如项目使用艾克索拉登录管理器)
通过服务器侧创建令牌API调用打开支付UI
- 向方法传入以下参数获取令牌:
- 在
purchase.subscription.operation
参数中传入change_plan
值。 - 在
purchase.subscription.plan_id
参数中传入新计划的ID。 - 在
purchase.subscription.product_id
参数中传入基于订阅的产品ID(如使用基于订阅的产品)。请联系您的客户成功经理或发送邮件至csm@xsolla.com获取该ID。
- 在
- 通过以下方式之一打开支付界面:
使用客户端侧API调用在订阅管理页面上打开支付UI
如果项目中配置了艾克索拉登录管理器,可使用客户端侧API调用来获取打开支付界面的链接。通过响应中返回的链接可在订阅管理页面上打开支付UI,用户可以在其中选择生效中的订阅来进行更改。
具体方法是,在您应用程序的客户端侧,实现通过HTTP POST请求接收支付界面的链接:https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/manage
。
请求必须包含Authorization: Bearer <client_user_jwt>
头,其中<client_user_jwt>
是用户的JSON Web令牌(JWT),它是一个根据Base64标准编码的Base64编码令牌。要获取该令牌:
- 如应用程序使用用户名和密码认证,请使用
Register new user 和Auth by username and password API调用。 - 如应用程序使用通过社交网络认证,请使用
Auth via social network API调用。
projectId
路径参数。可在发布商帐户项目名称旁边找到该参数。
指定country
作为请求参数,值为符合ISO 3166-1 alpha-2标准的用户国家/地区两字母代码。该参数影响区域位置和货币。如未传入该参数,则国家/地区由用户的IP地址决定。如需要,传入自定义补充参数。
请求正文参数:
参数 | 类型 | 描述 |
---|---|---|
| string | 必需。订阅计划的外部ID。可在发布商帐户 > 订阅 > 订阅计划部分找到。 |
| object | 带有自定义项目设置的对象。 |
| object | 带有界面设置相关数据的对象。 |
| string | 支付UI的大小。此参数可拥有以下值之一,具体取决于支付UI的所需大小:
|
| string | 支付UI的外观主题。可以是default 、default_dark 或自定义主题ID。 |
| string | 设备类型。可以是desktop (默认)或mobile 。 |
| object | 带有对桌面版本有效的界面设置相关数据的对象。 |
| object | 带有标题设置相关数据的对象。 |
| boolean | 是否在支付中心桌面端显示关闭按钮。该按钮将关闭支付中心并将用户重定向到settings.return_url 参数中指定的URL。默认为false 。 |
| boolean | 标题在支付UI上是否可见。 |
| string | 标题外观。可以是compact (游戏名和用户ID不在标题中显示)或normal 。 |
| boolean | 如果为true ,标题中将显示Logo(请先把Logo文件提供给您的客户成功经理)。 |
| boolean | 标题中是否显示项目名称。 |
| string | 如何显示标题。可以是compact (隐藏项目名称和用户ID)或normal (默认)。 |
| string | 用户仅可以通过他们已保存的付款方式进行付款。可以为saved_accounts 。 |
| boolean | 是否在移动版本的支付UI中隐藏或显示脚注。 |
| boolean | 是否在支付中心移动版中显示关闭按钮。该按钮将关闭支付中心并将用户重定向到settings.return_url 参数中指定的URL。默认为false 。 |
| string | 支付中心中的界面模式。只能是user_account :标头仅包含帐户导航菜单,而没有用于选择产品或进行付款的任何选项。此模式仅在桌面版中可用。 |
| string | 首选支付币种。三字母ISO 4217货币代码。 |
| string | 游戏中的交易ID。值对于每个用户付款必须唯一。 |
| integer | 支付方式ID。要获取支付方式ID列表,您可以前往发布商帐户。 |
| string | 用户在支付过后重定向到的页面。参数user_id 、foreigninvoice 、invoice_id 和status 将自动添加到链接中。 |
| object | 重定向政策设置(对象)。 |
| string | 支付后将用户重定向到返回URL的支付状态。可以是none 、successful 、successful_or_canceled 或any 。 |
settings.redirect_policy.delay | integer | 延迟时间(单位为秒),经过该时间后用户将自动重定向至返回URL。 |
| string | 支付后将用户重定向到返回URL的支付状态。可以是none 、successful 、successful_or_canceled 或any 。 |
| string | 手动重定向按钮上的文字。 |
Copy
- curl
curl -X 'POST' \
'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/manage?country=RU ' \
-H 'accept: application/json' \
-H 'Authorization: Bearer client_user_jwt'
{
"settings": {
"ui": {
"size": "large",
"theme": "string",
"version": "desktop",
"desktop": {
"header": {
"is_visible": true,
"visible_logo": true,
"visible_name": true,
"type": "compact",
"close_button": true
}
},
"mobile": {
"mode": "saved_accounts",
"footer": {
"is_visible": true
},
"header": {
"close_button": true
}
},
"license_url": "string",
"mode": "user_account",
"user_account": {
"history": {
"enable": true,
"order": 1
},
"payment_accounts": {
"enable": true,
"order": 1
},
"info": {
"enable": true,
"order": 1
},
"subscriptions": {
"enable": true,
"order": 1
}
}
},
"currency": "str",
"locale": "st",
"external_id": "string",
"payment_method": 1,
"return_url": "string",
"redirect_policy": {
"redirect_conditions": "none",
"delay": 0,
"status_for_manual_redirection": "none",
"redirect_button_caption": "string"
}
}
}
响应示例:
Copy
- javascript
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。