设置支付UI的打开
根据具体项目身份认证设置,您可以使用以下方式之一打开支付UI:
- 如符合以下条件,使用服务器侧创建令牌API调用:
- 在应用程序中使用自有授权系统。
- 在项目中设置了订阅费用与首笔支付关联的计划。
- 如在项目中使用艾克索拉登录管理器,请使用获取链接来打开支付UI的客户端侧方法。
通过服务器创建令牌API调用
- 通过以下方式之一获取令牌以打开支付UI:
- 实现支付UI的打开方式:
显示支付方式选择页面
要让支付UI打开时显示支付方式选择页面,请向创建令牌API调用传入含所选计划ID的purchase.subscription.plan_id
参数。如需要,传入自定义补充参数。purchase.checkout.amount
,包含订阅计划的价格purchase.checkout.currency
,包含货币值
- curl
curl -v https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
-X POST \
-u your_merchant_id:merchant_api_key \
-H 'Content-Type:application/json' \
-H 'Accept: application/json' \
-d '
{
"user":{
"id":{
"value": "1234567",
"hidden": true
},
"email": {
"value": "user1234@game1234.com"
},
"name": {
"value": "UserName",
"hidden": false
}
},
"settings": {
"project_id": 12345,
"currency": "USD"
},
"purchase": {
"subscription": {
"plan_id": "54321"
}
}
}'
支付方式选择页面示例:
显示支付数据输入页面
要让支付UI打开时显示支付数据输入页面,请将以下参数传入创建令牌API调用:- 含所选计划ID的
purchase.subscription.plan_id
。 - 含支付方式ID的
settings.payment_method
。要找到项目中的ID列表,可在发布商帐户中前往支付中心 > 付款方式部分,或向您的客户成功经理索取。
purchase.checkout.amount
,包含订阅计划的价格purchase.checkout.currency
,包含货币值
- curl
curl -v https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
-X POST \
-u your_merchant_id:merchant_api_key \
-H 'Content-Type:application/json' \
-H 'Accept: application/json' \
-d '
{
"user":{
"id":{
"value": "1234567",
"hidden": true
},
"email": {
"value": "user1234@game1234.com"
},
"name": {
"value": "UserName",
"hidden": false
}
},
"settings": {
"project_id": 12345,
"payment_method": 1380,
"currency": "USD"
},
"purchase": {
"subscription": {
"plan_id": "54321"
}
}
}'
支付数据输入页面示例:
通过客户端API方法
- 使用客户端API方法实现获取链接来打开支付UI。
- 通过以下方式之一实现支付UI的打开:
获取链接来打开支付UI的客户端方法
在应用程序的的客户端侧,请使用HTTP POST请求实现支付UI的打开:https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/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调用。
projectId
路径参数。可在发布商帐户项目名称旁边找到该参数。指定country
作为请求参数,值为符合ISO 3166-1 alpha-2标准的用户国家/地区两字母代码。该参数影响区域位置和货币。如未传入该参数,则国家/地区由用户的IP地址决定。
在请求中传入如下参数:
plan_external_id
,以在支付方式选择页面打开支付界面。
plan_external_id
和settings.payment_method
,以在输入支付数据页面打开支付界面。
请求正文参数:
参数 | 类型 | 描述 |
---|---|---|
| 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
curl -X 'POST' \
'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/buy?country=RU ' \
-H 'accept: application/json' \
-H 'Authorization: Bearer client_user_jwt'
{
"plan_external_id": "PlanExternalId",
"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
}
},
"mode": "user_account"
}
},
"currency": "string",
"locale": "string",
"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"
}
}
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
使用Pay Station Embed
在网站页面上添加一个脚本来打开支付UI小组件。脚本的详细描述可在GitHub存储库中找到。
示例:异步脚本加载
- html
<script>
var options = {
access_token: 'ACCESS_TOKEN', //TODO use access token, received on previous step
sandbox: true //TODO please do not forget to remove this setting when going live
};
var s = document.createElement('script');
s.type = "text/javascript";
s.async = true;
s.src = "https://static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
s.addEventListener('load', function (e) {
XPayStationWidget.init(options);
}, false);
var head = document.getElementsByTagName('head')[0];
head.appendChild(s);
</script>
<button data-xpaystation-widget-open>Buy Credits</button>
Pay Station Embed允许通过postMessage
获取支付UI事件。您可以将事件发送到分析系统。如要在分析系统中设置事件处理,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
用于脚本初始化的参数列表:
参数 | 类型 | 描述 |
---|---|---|
access_token | string | 令牌,通过服务器创建令牌API调用接收或通过链接接收(如使用客户端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 。 |
https://secure.xsolla.com/paystation4/?token=ACCESS_TOKEN
,其中ACCESS_TOKEN
是通过创建令牌方法获取的令牌。实现打开支付界面的客户端方法时也可获得一个含令牌的现成链接。https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN
。在Iframe中
需在您的代码侧实现以下机制:
- 检查设备类型(桌面或移动设备)并将其包含在令牌的settings.ui.version参数中发送。
- 通过postMessage获取支付UI的事件。可将这些事件发送给分析系统。要在分析系统中设置事件处理,请联系您的客户成功经理或发送邮件至csm@xsolla.com。
要在iframe中打开支付UI,请使用以下链接:https://secure.xsolla.com/paystation4/?token=ACCESS_TOKEN
,其中ACCESS_TOKEN
是通过创建令牌方法获取的令牌。实现打开支付界面的客户端方法时也可获得一个含令牌的现成链接。
测试目的请使用此URL:https://sandbox-secure.xsolla.com/paystation4/?token=ACCESS_TOKEN
。
在新窗口中
要在新窗口中打开支付UI,请使用以下链接:https://secure.xsolla.com/paystation4/?token=ACCESS_TOKEN
,其中ACCESS_TOKEN
是通过创建令牌方法获取的令牌。实现打开支付界面的客户端方法时也可获得一个含令牌的现成链接。
测试目的请使用此URL:https://sandbox-secure.xsolla.com/paystation4/?token=ACCESS_TOKEN
。
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。