设置订阅目录显示和购买功能
订阅目录的实现方式取决于您的项目集成方案:
- 如果将订阅销售集成到自己的应用或网站,您可以:
- 使用艾克索拉API提供的订阅计划数据或本地数据,完全在己侧构建目录UI。
- 直接使用艾克索拉的支付UI显示订阅目录 — 无需另外获取订阅计划数据。
- 如果使用艾克索拉建站器创建网站,目录UI应直接放置在网站布局中,无需另外获取订阅计划数据或实现支付UI。
选择订阅目录的显示位置:
选择订阅购买的身份认证方式:
在此方案中,您在己侧实现订阅目录显示并通过自己的服务器管理购买流程。所有与艾克索拉的交互均通过艾克索拉API服务器侧调用完成。
要实现订阅目录显示和支付UI的打开:
- 使用服务器侧列示所有计划调用获取订阅计划列表(可选)。
- 在己侧实现目录显示。
- 通过以下方式之一生成令牌以打开订阅购买的支付UI:
- 实现支付UI的打开。
生成令牌以在支付方式选择页面打开支付UI
要让支付UI打开时显示支付方式选择页面,请向创建令牌API调用传入含所选计划ID的purchase.subscription.plan_id参数。如需要,传入自定义补充参数。
purchase.checkout.amount,包含订阅计划的价格purchase.checkout.currency,包含货币值
- curl
1curl -v https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
2-X POST \
3-u your_merchant_id:merchant_api_key \
4-H 'Content-Type:application/json' \
5-H 'Accept: application/json' \
6-d '
7{
8 "user":{
9 "id":{
10 "value": "1234567",
11 "hidden": true
12 },
13 "email": {
14 "value": "user1234@game1234.com"
15 },
16 "name": {
17 "value": "UserName",
18 "hidden": false
19 }
20 },
21 "settings": {
22 "project_id": 12345,
23 "currency": "USD"
24 },
25 "purchase": {
26 "subscription": {
27 "plan_id": "54321"
28 }
29 }
30}'
支付方式选择页面示例:

生成令牌以在输入支付数据页面打开支付UI
要让支付UI打开时显示支付数据输入页面,请将以下参数传入创建令牌API调用:
含所选计划ID的
purchase.subscription.plan_id。含支付方式ID的
settings.payment_method。要找到项目中的ID列表,可在发布商帐户中前往付款 > 付款方式部分,或向您的客户成功经理索取。
purchase.checkout.amount,包含订阅计划的价格purchase.checkout.currency,包含货币值
如需要,传入自定义补充参数。
- curl
1curl -v https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
2-X POST \
3-u your_merchant_id:merchant_api_key \
4-H 'Content-Type:application/json' \
5-H 'Accept: application/json' \
6-d '
7{
8 "user":{
9 "id":{
10 "value": "1234567",
11 "hidden": true
12 },
13 "email": {
14 "value": "user1234@game1234.com"
15 },
16 "name": {
17 "value": "UserName",
18 "hidden": false
19 }
20 },
21 "settings": {
22 "project_id": 12345,
23 "payment_method": 1380,
24 "currency": "USD"
25 },
26 "purchase": {
27 "subscription": {
28 "plan_id": "54321"
29 }
30 }
31}'
支付数据输入页面示例:

打开支付UI
要在新窗口中打开支付UI,请使用以下URL:https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN,其中TOKEN是获得的令牌。
您也可以通过其他方式打开支付UI:
- 使用Pay Station Embed。缺点:在游戏内浏览器(WebView)中打开可能会有问题。
- 在iframe中打开。缺点:在游戏内浏览器(WebView)或应用程序的移动版本中打开可能会有问题。
示例:异步脚本加载
- html
1<script>
2 var options = {
3 access_token: 'ACCESS_TOKEN', //TODO use access token, received on previous step
4 sandbox: true //TODO please do not forget to remove this setting when going live
5 };
6 var s = document.createElement('script');
7 s.type = "text/javascript";
8 s.async = true;
9 s.src = "https://cdn.xsolla.net/payments-bucket-prod/embed/1.5.0/widget.min.js";
10 s.addEventListener('load', function (e) {
11 XPayStationWidget.init(options);
12 }, false);
13 var head = document.getElementsByTagName('head')[0];
14 head.appendChild(s);
15</script>
16
17<button data-xpaystation-widget-open>Buy Credits</button>
Pay Station Embed允许通过postMessage获取支付UI事件。您可以将事件发送到分析系统。如要在分析系统中设置事件处理,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
艾克索拉团队创建了一个小组件,帮助您简化将支付UI集成到网站的过程。小组件脚本在我们的GitHub存储库中提供。
用于脚本初始化的参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
access_token | string | 令牌,通过API接收。 必需。 |
sandbox | boolean | 设置为true以测试支付流程,将使用sandbox-secure.xsolla.com而不是secure.xsolla.com。 |
lightbox | object | 带有选项列表的对象,可用于打开lightbox(桌面版本)。 |
payment_widget_ui.lightbox.width | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为null。 |
payment_widget_ui.lightbox.height | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为100%。 |
payment_widget_ui.lightbox.zIndex | integer | 控制垂直堆叠顺序的属性,默认值为1000。 |
payment_widget_ui.lightbox.overlayOpacity | integer | 小组件背景的不透明度(0 — 完全透明,1 — 完全不透明)。默认值为60% (.6)。 |
payment_widget_ui.lightbox.overlayBackground | string | 浮层背景色,默认值为#000000。 |
payment_widget_ui.lightbox.modal | boolean | 如为true,lightbox框架不可关闭,默认值为false。 |
lightbox.closeByClick | boolean | 如为true,单击浮层将关闭lightbox,默认值为true。 |
lightbox.closeByKeyboard | boolean | 如为true,按ESC键将关闭lightbox,默认值为true。 |
payment_widget_ui.lightbox.contentBackground | string | 框架的背景,默认值为#ffffff。请注意,颜色更改不会影响支付中心iframe本身,只会影响容纳iframe的灯箱的设置。 |
payment_widget_ui.lightbox.contentMargin | string | 框架边距,默认值为10px。 |
payment_widget_ui.lightbox.spinner | string | 加载指示器的动画类型。可为xsolla或round。默认值为xsolla。 |
payment_widget_ui.lightbox.spinnerColor | string | 旋转加载动画的颜色,非默认设置。 |
childWindow | object | 支付中心UI所在子窗口的选项。适用于移动版本。 |
childWindow.target | string | 指定打开支付中心窗口的位置,可以是_blank、_self、_parent,默认值为_blank。 |
脚本使您可以跟踪支付UI发生的事件。根据事件的类型,可以在网页上执行各种操作。
事件列表:
| 参数 | 描述 |
|---|---|
| init | 小部件初始化事件。 |
| open | 打开小部件时的事件。 |
| load | 已加载支付UI(支付中心)。 |
| close | 已关闭支付UI(支付中心)。 |
| status | 用户在状态页面上移动时的事件。 |
| status-invoice | 用户在状态页面上移动但支付尚未完成时的事件。 |
| status-delivering | 用户在状态页面上移动,支付完成以及我们正在发送支付通知时的事件。 |
| status-done | 用户在状态页面上移动且支付已成功完成时的事件。 |
| status-troubled | 用户在状态页面上移动但支付失败时的事件。 |
https://secure.xsolla.com/paystation4/?token=TOKEN。https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN。access_token参数包含隐私用户数据。请确保获取该参数时使用服务器对服务器通信。要在iframe中打开支付UI:
- 实现
postMessage机制从支付UI接收事件。 - 通过
https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN链接打开支付UI,其中TOKEN是收到的令牌。
潜在问题:在iframe中打开支付UI时如果未显示某些支付系统要求的付款验证码复制按钮,请向iframe传入allow=“clipboard-read; clipboard-write; payment”属性。
示例:
- html
1<iframe
2 src="https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN"
3 width="800"
4 height="930"
5 allow="clipboard-read; clipboard-write; payment"
6></iframe>
在此方案中,所有订阅计划数据操作通过艾克索拉API客户端侧调用处理。这使您能直接从客户端获取计划列表、显示目录并启动支付UI。
要实现订阅目录显示和支付UI的打开:
- 在己侧实现目录显示。
- 实现令牌生成以打开订阅购买的支付UI。请使用获取支付UI链接的客户端侧调用完成此操作。
- 实现支付UI的打开。
按产品获取订阅计划的客户端侧方法
在应用程序的的客户端侧,请使用HTTP GET请求实现获取订阅计划列表:https://subscriptions.xsolla.com/api/user/v1/projects/{projectId}/products/{productId}/plans。
请求必须包含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— 项目ID。可在发布商帐户项目名称旁边找到该参数。

productID— 基于订阅的产品ID。要获取该值,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
以请求参数的形式指定:
| 参数 | 类型 | 描述 |
|---|---|---|
plan_id | array of integers | 计划ID。 |
| array of strings | 计划的外部ID。可在发布商帐户中的商品目录 > 订阅 > 订阅计划 > 您的计划部分找到或通过列示所有计划API调用找到。 |
| integer | 页面上元素数量的限制。默认显示15项。 |
| integer | 元素编号,从该元素开始生成列表。默认从0开始数。 |
| string | 接口语言使用符合ISO 639-1标准的两位小写字母表示。如果未传递此参数,则语言将根据用户的IP地址确定。如果传递的地理位置不在艾克索拉列表中,则默认使用英语。 |
| string | 用于识别用户国家/地区的ISO 3166-1 alpha-2两字母代码。此参数影响区域位置和货币的选择。如未传入此参数,则国家/地区由用户的IP地址决定。 |
- curl
1curl -X 'GET' \
2'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/products/{productId}/plans?country=RU ' \
3 -H 'accept: application/json' \
4 -H 'Authorization: Bearer client_user_jwt'
- json
1{
2 "items": [
3 {
4 "plan_id": 54321,
5 "plan_external_id": "PlanExternalId",
6 "plan_group_id": "TestGroupId",
7 "plan_type": "all",
8 "plan_name": "Localized plan name",
9 "plan_description": "Localized plan description",
10 "plan_start_date": "2021-04-11T13:51:02+03:00",
11 "plan_end_date": "2031-04-11T13:51:02+03:00",
12 "trial_period": 7,
13 "period": {
14 "value": 1,
15 "unit": "month"
16 },
17 "charge": {
18 "amount": 4.99,
19 "setup_fee": 0.99,
20 "currency": "USD"
21 },
22 "promotion": {
23 "promotion_charge_amount": 3.99,
24 "promotion_remaining_charges": 3
25 }
26 }
27 ],
28 "has_more": false
29}
获取订阅计划列表的客户端侧方法
在应用程序的的客户端侧,请使用HTTP GET请求实现获取订阅计划列表:https://subscriptions.xsolla.com/api/user/v1/projects/{projectId}/plans。
请求必须包含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调用。
指定项目ID作为projectId路径参数。可在发布商帐户项目名称旁边找到该参数。

以请求参数的形式指定:
| 参数 | 类型 | 描述 |
|---|---|---|
plan_id | array of integers | 计划ID。 |
| array of strings | 计划的外部ID。可在发布商帐户中的商品目录 > 订阅 > 订阅计划 > 您的计划部分找到或通过列示所有计划API调用找到。 |
| integer | 页面上元素数量的限制。默认显示15项。 |
| integer | 元素编号,从该元素开始生成列表。默认从0开始数。 |
| string | 接口语言使用符合ISO 639-1标准的两位小写字母表示。如果未传递此参数,则语言将根据用户的IP地址确定。如果传递的地理位置不在艾克索拉列表中,则默认使用英语。 |
| string | 用于识别用户国家/地区的ISO 3166-1 alpha-2两字母代码。此参数影响区域位置和货币的选择。如未传入此参数,则国家/地区由用户的IP地址决定。 |
- curl
1curl -X 'GET' \
2'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/plans?country=RU ' \
3 -H 'accept: application/json' \
4 -H 'Authorization: Bearer client_user_jwt'
- json
1{
2 "items": [
3 {
4 "plan_id": 54321,
5 "plan_external_id": "PlanExternalId",
6 "plan_group_id": "TestGroupId",
7 "plan_type": "all",
8 "plan_name": "Localized plan name",
9 "plan_description": "Localized plan description",
10 "plan_start_date": "2021-04-11T13:51:02+03:00",
11 "plan_end_date": "2031-04-11T13:51:02+03:00",
12 "trial_period": 7,
13 "period": {
14 "value": 1,
15 "unit": "month"
16 },
17 "charge": {
18 "amount": 4.99,
19 "setup_fee": 0.99,
20 "currency": "USD"
21 },
22 "promotion": {
23 "promotion_charge_amount": 3.99,
24 "promotion_remaining_charges": 3
25 }
26 }
27 ],
28 "has_more": false
29}
获取链接来打开支付UI的客户端方法
在应用程序的的客户端侧,请使用HTTP POST请求实现支付UI的打开:https://subscriptions.xsolla.com/api/user/v1/projects/{projectId}/subscriptions/buy。
请求必须包含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调用。
指定项目ID作为projectId路径参数。可在发布商帐户项目名称旁边找到该参数。

指定country作为请求参数,值为符合ISO 3166-1 alpha-2标准的用户国家/地区两字母代码。该参数影响区域位置和货币。如未传入该参数,则国家/地区由用户的IP地址决定。
在请求中传入如下参数:
plan_external_id,以在支付方式选择页面打开支付界面。
支付UI示例:

plan_external_id和settings.payment_method,以在输入支付数据页面打开支付界面。
支付UI示例:

请求正文参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| string | 必需。订阅计划的外部ID。可在发布商帐户 > 商品目录 > 订阅 > 订阅计划部分找到。 |
| object | 带有自定义项目设置的对象。 |
| object | 带有界面设置相关数据的对象。 |
| 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(默认)。 |
| 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 | 手动重定向按钮上的文字。 |
如需要,传入自定义补充参数。
- curl
1curl -X 'POST' \
2'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/buy?country=RU ' \
3 -H 'accept: application/json' \
4 -H 'Authorization: Bearer client_user_jwt'
5
6 {
7 "plan_external_id": "PlanExternalId",
8 "settings": {
9 "ui": {
10 "size": "large",
11 "theme": "string",
12 "version": "desktop",
13 "desktop": {
14 "header": {
15 "is_visible": true,
16 "visible_logo": true,
17 "visible_name": true,
18 "type": "compact",
19 "close_button": true
20 }
21 },
22 "mobile": {
23 "mode": "saved_accounts",
24 "footer": {
25 "is_visible": true
26 },
27 "header": {
28 "close_button": true
29 }
30 },
31 "mode": "user_account"
32 }
33 },
34 "currency": "string",
35 "locale": "string",
36 "external_id": "string",
37 "payment_method": 1,
38 "return_url": "string",
39 "redirect_policy": {
40 "redirect_conditions": "none",
41 "delay": 0,
42 "status_for_manual_redirection": "none",
43 "redirect_button_caption": "string"
44 }
45 }
- json
1{
2 "link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
3}
打开支付UI
要在新窗口中打开支付UI,请使用以下URL:https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN,其中TOKEN是获得的令牌。
您也可以通过其他方式打开支付UI:
- 使用Pay Station Embed。缺点:在游戏内浏览器(WebView)中打开可能会有问题。
- 在iframe中打开。缺点:在游戏内浏览器(WebView)或应用程序的移动版本中打开可能会有问题。
示例:异步脚本加载
- html
1<script>
2 var options = {
3 access_token: 'ACCESS_TOKEN', //TODO use access token, received on previous step
4 sandbox: true //TODO please do not forget to remove this setting when going live
5 };
6 var s = document.createElement('script');
7 s.type = "text/javascript";
8 s.async = true;
9 s.src = "https://cdn.xsolla.net/payments-bucket-prod/embed/1.5.0/widget.min.js";
10 s.addEventListener('load', function (e) {
11 XPayStationWidget.init(options);
12 }, false);
13 var head = document.getElementsByTagName('head')[0];
14 head.appendChild(s);
15</script>
16
17<button data-xpaystation-widget-open>Buy Credits</button>
Pay Station Embed允许通过postMessage获取支付UI事件。您可以将事件发送到分析系统。如要在分析系统中设置事件处理,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
艾克索拉团队创建了一个小组件,帮助您简化将支付UI集成到网站的过程。小组件脚本在我们的GitHub存储库中提供。
用于脚本初始化的参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
access_token | string | 令牌,通过API接收。 必需。 |
sandbox | boolean | 设置为true以测试支付流程,将使用sandbox-secure.xsolla.com而不是secure.xsolla.com。 |
lightbox | object | 带有选项列表的对象,可用于打开lightbox(桌面版本)。 |
payment_widget_ui.lightbox.width | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为null。 |
payment_widget_ui.lightbox.height | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为100%。 |
payment_widget_ui.lightbox.zIndex | integer | 控制垂直堆叠顺序的属性,默认值为1000。 |
payment_widget_ui.lightbox.overlayOpacity | integer | 小组件背景的不透明度(0 — 完全透明,1 — 完全不透明)。默认值为60% (.6)。 |
payment_widget_ui.lightbox.overlayBackground | string | 浮层背景色,默认值为#000000。 |
payment_widget_ui.lightbox.modal | boolean | 如为true,lightbox框架不可关闭,默认值为false。 |
lightbox.closeByClick | boolean | 如为true,单击浮层将关闭lightbox,默认值为true。 |
lightbox.closeByKeyboard | boolean | 如为true,按ESC键将关闭lightbox,默认值为true。 |
payment_widget_ui.lightbox.contentBackground | string | 框架的背景,默认值为#ffffff。请注意,颜色更改不会影响支付中心iframe本身,只会影响容纳iframe的灯箱的设置。 |
payment_widget_ui.lightbox.contentMargin | string | 框架边距,默认值为10px。 |
payment_widget_ui.lightbox.spinner | string | 加载指示器的动画类型。可为xsolla或round。默认值为xsolla。 |
payment_widget_ui.lightbox.spinnerColor | string | 旋转加载动画的颜色,非默认设置。 |
childWindow | object | 支付中心UI所在子窗口的选项。适用于移动版本。 |
childWindow.target | string | 指定打开支付中心窗口的位置,可以是_blank、_self、_parent,默认值为_blank。 |
脚本使您可以跟踪支付UI发生的事件。根据事件的类型,可以在网页上执行各种操作。
事件列表:
| 参数 | 描述 |
|---|---|
| init | 小部件初始化事件。 |
| open | 打开小部件时的事件。 |
| load | 已加载支付UI(支付中心)。 |
| close | 已关闭支付UI(支付中心)。 |
| status | 用户在状态页面上移动时的事件。 |
| status-invoice | 用户在状态页面上移动但支付尚未完成时的事件。 |
| status-delivering | 用户在状态页面上移动,支付完成以及我们正在发送支付通知时的事件。 |
| status-done | 用户在状态页面上移动且支付已成功完成时的事件。 |
| status-troubled | 用户在状态页面上移动但支付失败时的事件。 |
https://secure.xsolla.com/paystation4/?token=TOKEN。https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN。access_token参数包含隐私用户数据。请确保获取该参数时使用服务器对服务器通信。要在iframe中打开支付UI:
- 实现
postMessage机制从支付UI接收事件。 - 通过
https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN链接打开支付UI,其中TOKEN是收到的令牌。
潜在问题:在iframe中打开支付UI时如果未显示某些支付系统要求的付款验证码复制按钮,请向iframe传入allow=“clipboard-read; clipboard-write; payment”属性。
示例:
- html
1<iframe
2 src="https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN"
3 width="800"
4 height="930"
5 allow="clipboard-read; clipboard-write; payment"
6></iframe>
在此方案中,订阅目录直接显示在艾克索拉支付UI中,无需为订阅计划列表开发自定义界面。这种方式简化了集成流程,并确保订阅计划数据自动更新。
要设置令牌生成并打开包含订阅目录的支付UI:
- 实现通过服务器侧创建令牌API调用获取令牌。在请求中传入以下参数:
请求示例:
- json
1{
2 "user": {
3 "name": {
4 "value": "j.smith@email.com"
5 },
6 "id": {
7 "value": "123a345b678c091d"
8 }
9 },
10 "settings": {
11 "project_id": 177226
12 }
13}
- 通过以下方式之一实现支付UI的打开:
要在新窗口中打开支付UI,请使用以下URL:https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN,其中TOKEN是获得的令牌。
您也可以通过其他方式打开支付UI:
- 使用Pay Station Embed。缺点:在游戏内浏览器(WebView)中打开可能会有问题。
- 在iframe中打开。缺点:在游戏内浏览器(WebView)或应用程序的移动版本中打开可能会有问题。
示例:异步脚本加载
- html
1<script>
2 var options = {
3 access_token: 'ACCESS_TOKEN', //TODO use access token, received on previous step
4 sandbox: true //TODO please do not forget to remove this setting when going live
5 };
6 var s = document.createElement('script');
7 s.type = "text/javascript";
8 s.async = true;
9 s.src = "https://cdn.xsolla.net/payments-bucket-prod/embed/1.5.0/widget.min.js";
10 s.addEventListener('load', function (e) {
11 XPayStationWidget.init(options);
12 }, false);
13 var head = document.getElementsByTagName('head')[0];
14 head.appendChild(s);
15</script>
16
17<button data-xpaystation-widget-open>Buy Credits</button>
Pay Station Embed允许通过postMessage获取支付UI事件。您可以将事件发送到分析系统。如要在分析系统中设置事件处理,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
艾克索拉团队创建了一个小组件,帮助您简化将支付UI集成到网站的过程。小组件脚本在我们的GitHub存储库中提供。
用于脚本初始化的参数列表:
| 参数 | 类型 | 描述 |
|---|---|---|
access_token | string | 令牌,通过API接收。 必需。 |
sandbox | boolean | 设置为true以测试支付流程,将使用sandbox-secure.xsolla.com而不是secure.xsolla.com。 |
lightbox | object | 带有选项列表的对象,可用于打开lightbox(桌面版本)。 |
payment_widget_ui.lightbox.width | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为null。 |
payment_widget_ui.lightbox.height | string | Lightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为100%。 |
payment_widget_ui.lightbox.zIndex | integer | 控制垂直堆叠顺序的属性,默认值为1000。 |
payment_widget_ui.lightbox.overlayOpacity | integer | 小组件背景的不透明度(0 — 完全透明,1 — 完全不透明)。默认值为60% (.6)。 |
payment_widget_ui.lightbox.overlayBackground | string | 浮层背景色,默认值为#000000。 |
payment_widget_ui.lightbox.modal | boolean | 如为true,lightbox框架不可关闭,默认值为false。 |
lightbox.closeByClick | boolean | 如为true,单击浮层将关闭lightbox,默认值为true。 |
lightbox.closeByKeyboard | boolean | 如为true,按ESC键将关闭lightbox,默认值为true。 |
payment_widget_ui.lightbox.contentBackground | string | 框架的背景,默认值为#ffffff。请注意,颜色更改不会影响支付中心iframe本身,只会影响容纳iframe的灯箱的设置。 |
payment_widget_ui.lightbox.contentMargin | string | 框架边距,默认值为10px。 |
payment_widget_ui.lightbox.spinner | string | 加载指示器的动画类型。可为xsolla或round。默认值为xsolla。 |
payment_widget_ui.lightbox.spinnerColor | string | 旋转加载动画的颜色,非默认设置。 |
childWindow | object | 支付中心UI所在子窗口的选项。适用于移动版本。 |
childWindow.target | string | 指定打开支付中心窗口的位置,可以是_blank、_self、_parent,默认值为_blank。 |
脚本使您可以跟踪支付UI发生的事件。根据事件的类型,可以在网页上执行各种操作。
事件列表:
| 参数 | 描述 |
|---|---|
| init | 小部件初始化事件。 |
| open | 打开小部件时的事件。 |
| load | 已加载支付UI(支付中心)。 |
| close | 已关闭支付UI(支付中心)。 |
| status | 用户在状态页面上移动时的事件。 |
| status-invoice | 用户在状态页面上移动但支付尚未完成时的事件。 |
| status-delivering | 用户在状态页面上移动,支付完成以及我们正在发送支付通知时的事件。 |
| status-done | 用户在状态页面上移动且支付已成功完成时的事件。 |
| status-troubled | 用户在状态页面上移动但支付失败时的事件。 |
https://secure.xsolla.com/paystation4/?token=TOKEN。https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN。access_token参数包含隐私用户数据。请确保获取该参数时使用服务器对服务器通信。要在iframe中打开支付UI:
- 实现
postMessage机制从支付UI接收事件。 - 通过
https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN链接打开支付UI,其中TOKEN是收到的令牌。
潜在问题:在iframe中打开支付UI时如果未显示某些支付系统要求的付款验证码复制按钮,请向iframe传入allow=“clipboard-read; clipboard-write; payment”属性。
示例:
- html
1<iframe
2 src="https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN"
3 width="800"
4 height="930"
5 allow="clipboard-read; clipboard-write; payment"
6></iframe>
在艾克索拉支付中心里显示订阅目录的示例:

在此方案中,所有目录元素和购买逻辑都直接在建站器中配置,无需使用API。
要添加订阅销售,您需要在网站上添加一个按钮并为其配置购买订阅操作。可以在页眉、卡片网格和游戏版本区块中使用可自定义的按钮。
建议使用卡片网格区块进行订阅销售,因为它为卡片本身及其布局提供了丰富的自定义选项。
在网站上启用订阅购买功能:
- 在发布商帐户中打开您的项目,然后前往商店 > 网站部分。
- 选择您的网站并点击打开建站器。
- 在建站器的主区域,选择想添加新区块的位置并点击添加区块。
- 添加卡片网格区块并进行设置。例如,指定标题、设置背景及添加文本。
- 在建站器的主区域,配置卡片网格:
- 要垂直或水平拆分任何网格区域,单击区域左上角的垂直或水平线图标。

- 要设置区域的高度或宽度,请拖动║或═图标。

- 进入卡片设置。方法是点击⚙图标。

- 向卡片添加订阅购买按钮:
- 单击添加按钮。

- 在操作下拉列表中,选择购买订阅。
- 在订阅计划下拉列表中,选择您之前创建的计划。
列表中只显示定期付费计划类型的订阅。
如果需要的计划不在列表中,请单击添加新计划并在发布商帐户中设置订阅计划。
- 更改按钮样式(可选)。
- 自定义订阅购买按钮文本(可选):
- 在建站器的主区域,点击按钮文本。
- 输入所需文本。默认情况下,按钮显示订阅价格或试用天数(如果在所选订阅计划中设置了试用期)。编辑文本时,您还可以使用以下变量来提供订阅价格或试用期:
{priceDefault}— 基础价格。如有折扣,此值将显示删除线。- 网站上的文本显示示例:
- 每月$0.09 — 如果订阅没有折扣。
$0.09每月 — 如果订阅有折扣。
{pricePromo}— 折扣后的最终订阅价格。{trial}— 试用天数。

默认情况下,文本按以下规则自动确定:
{trial} day(s) for free— 如果订阅有试用期。{priceDefault} {pricePromo} per month— 如果订阅没有试用期,但有折扣。{priceDefault} per month— 如果订阅没有试用期且无折扣。Manage plan— 如果当前已认证用户有活跃订阅。此文本无法在建站器中更改,即使手动为按钮设置了自定义文本也会如此显示。
要恢复默认文本,点击按钮文本,删除自定义内容后点击页面空白处。
- 配置其他卡片设置。例如,添加文本、图片和背景。
- 配置网格中的其他卡片。
定期循环订阅示例:

带试用期的订阅示例:

带折扣的订阅示例:

订阅价格表示例:

完成网站设置:
发布网站使其公开可访问:
- 在建站器右上角,单击发布。

- 勾选需要发布的页面。
- 确认网站已准备就绪,然后单击发布。
如果无法发布网站,请确保满足以下所有条件:
- 网站上没有空白区段(红色标记的部分)。
- 已签署与艾克索拉的许可协议。
- 主页已发布或已勾选待发布。主页发布前无法发布子页面。
高级设置(可选):
- 前往商店 > 网站部分,在您的网站窗格上单击配置。
- 要连接自定义域名:前往网站设置 > 域名部分,修改艾克索拉域名或连接您自己的域名。
- 要监控网站成效:前往网站设置 > 应用部分,选择并连接推广和分析服务。
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。