设置商品购买
选择最适合您项目的方式来访问艾克索拉数据:
在应用程序客户端侧创建订单
要使用用户和商品数据在艾克索拉侧创建订单,请使用使用指定商品创建订单API调用。该方法将返回一个支付令牌,用于打开支付UI并进行支付。要使用沙盒模式,请在获取令牌请求的正文中传入“sandbox”: true
参数。
打开支付UI
要在新窗口中打开支付UI,请使用以下URL:https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN
,其中TOKEN
是获得的令牌。
您也可以通过其他方式打开支付UI:
- 使用Pay Station Embed。缺点:在游戏内浏览器(WebView)中打开可能会有问题。
- 在iframe中打开。缺点:在游戏内浏览器(WebView)或应用程序的移动版本中打开可能会有问题。
- 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。
艾克索拉团队创建了一个小组件,帮助您简化将支付UI集成到网站的过程。小组件脚本在我们的GitHub存储库中提供。
用于脚本初始化的参数列表:
参数 | 类型 | 描述 |
---|---|---|
access_token | string | 令牌,通过API接收。 必需。 |
sandbox | boolean | 设置为true 以测试支付流程,将使用sandbox-secure.xsolla.com 而不是secure.xsolla.com 。 |
lightbox | object | 带有选项列表的对象,可用于打开lightbox(桌面版本)。 |
lightbox.width | string | Lightbox框架的高度。如果为null ,则取决于支付中心的高度。默认值为null 。 |
lightbox.height | string | Lightbox框架的高度。如果为null ,则取决于支付中心的高度。默认值为100% 。 |
lightbox.zIndex | integer | 控制垂直堆叠顺序的属性,默认值为1000 。 |
lightbox.overlayOpacity | integer | 小组件背景的不透明度(0 — 完全透明,1 — 完全不透明)。默认值为60% (.6 )。 |
lightbox.overlayBackground | string | 浮层背景色,默认值为#000000 。 |
lightbox.modal | boolean | 如为true ,lightbox框架不可关闭,默认值为false 。 |
lightbox.closeByClick | boolean | 如为true ,单击浮层将关闭lightbox,默认值为true 。 |
lightbox.closeByKeyboard | boolean | 如为true ,按ESC键将关闭lightbox,默认值为true 。 |
lightbox.contentBackground | string | 框架的背景,默认值为#ffffff 。请注意,颜色更改不会影响支付中心iframe本身,只会影响容纳iframe的灯箱的设置。 |
lightbox.contentMargin | string | 框架边距,默认值为10px 。 |
lightbox.spinner | string | 加载指示器的动画类型。可为xsolla 或round 。默认值为xsolla 。 |
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
<iframe
src="https://sandbox-secure.xsolla.com/paystation4/?token=TOKEN"
width="800"
height="700"
allow="clipboard-read; clipboard-write; payment"
></iframe>
进行测试性支付
要测试支付过程,您可以使用沙盒模式。沙盒模式是一个独立环境,支持除真实付款和拒绝支付外实时环境的所有功能。创建订单后,您可以通过发送“sandbox”: true
来进入沙盒模式。
与艾克索拉签订合约之前,测试支付过程仅在沙盒模式下可用。
测试不需要从真实银行账户中扣款。
- 在沙盒模式下打开支付UI。
- 选择银行卡付款方式。
- 输入银行卡详细信息。对于其他字段(如名称或地址),可输入任意数据。您也可以指定不正确的细节(卡号或到期日)以测试是否会产生错误。
- 单击支付。
如符合以下条件之一,除卡片详细信息外,还需指定邮政编码:
- 用户所在国家是美国或加拿大。
- 发卡行识别码(BIN)显示该卡的发行地在美国。
您可以指定任意有效的邮政编码(如12345)。该信息用于决定销售税税率,不影响测试付款过程。
沙盒模式下的银行卡付款支持以下货币:USD、EUR、RUB、GBP、AED、ALL、AMD、ARS、AUD、AZN、BGN、BRL、BYN、CAD、CHF、CLP、CNY、COP、CZK、DKK、DZD、EGP、GEL、HKD、HRK、HUF、IDR、ILS、INR、ISK、JPY、KES、KGS、KRW、KZT、MAD、MDL、MKD、MNT、MXN、MYR、NGN、PEN、PHP、PKR、PLN、RON、RSD、SAR、SEK、SGD、THB、TRY、TWD、UAH、UYU、UZS、VEF、VND、ZAR。
要查看沙盒模式下所作交易的详细信息,包括费用等:
- 打开您的发布商帐户。
- 前往会计 > 交易登记表。
- 勾选显示测试交易复选框。
此外,您还可以在发布商帐户的支持 > 交易搜索部分查看交易的详细信息及申请退款。
创建订单并打开支付UI
要在艾克索拉侧创建包含用户和商品数据的订单,请调用XsollaCatalog.Purchase
SDK方法,并传入以下参数:
itemSku
— 用户要购买的商品的SKU。onSuccess
— 购买成功回调,订单状态变为done
时触发。onError
— 请求错误回调。onBrowseClosed
— 浏览器关闭回调(可选)。此事件仅当在内置浏览器中打开用户支付界面时会被跟踪,外部浏览器事件不会被跟踪。purchaseParams
— 购买参数及用户支付UI设置,例如地理位置和货币(可选)。customHeaders
— 自定义Web请求头(可选)。
XsollaCatalog.Purchase
方法发起指定商品的购买过程,包括创建订单、打开用户支付UI,以及跟踪订单状态。请在onSuccess参数传入一个函数,在订单状态变为done
时调用。
创建订单时,艾克索拉会生成一个支付令牌,在打开付款界面及进行支付时需用到。
默认情况下,令牌有效期是24小时。如要更改该值,请联系您的客户成功经理或发送邮件至csm@xsolla.com。新值将对您公司在发布商帐户中创建的所有项目启用。
进行测试性支付
要测试支付过程,您可以使用沙盒模式。沙盒模式是一个独立环境,支持除真实付款和拒绝支付外实时环境的所有功能。要访问沙盒模式,应在Unity Editor的
与艾克索拉签订合约之前,测试支付过程仅在沙盒模式下可用。
测试不需要从真实银行账户中扣款。
- 在Unity Editor中运行您的应用程序或场景。
- 选择银行卡付款方式。
- 输入银行卡详细信息。对于其他字段(如名称或地址),可输入任意数据。您也可以指定不正确的细节(卡号或到期日)以测试是否会产生错误。
- 单击支付。
如符合以下条件之一,除卡片详细信息外,还需指定邮政编码:
- 用户所在国家是美国或加拿大。
- 发卡行识别码(BIN)显示该卡的发行地在美国。
您可以指定任意有效的邮政编码(如12345)。该信息用于决定销售税税率,不影响测试付款过程。
沙盒模式下的银行卡付款支持以下货币:USD、EUR、RUB、GBP、AED、ALL、AMD、ARS、AUD、AZN、BGN、BRL、BYN、CAD、CHF、CLP、CNY、COP、CZK、DKK、DZD、EGP、GEL、HKD、HRK、HUF、IDR、ILS、INR、ISK、JPY、KES、KGS、KRW、KZT、MAD、MDL、MKD、MNT、MXN、MYR、NGN、PEN、PHP、PKR、PLN、RON、RSD、SAR、SEK、SGD、THB、TRY、TWD、UAH、UYU、UZS、VEF、VND、ZAR。
要查看沙盒模式下所作交易的详细信息,包括费用等:
- 打开您的发布商帐户。
- 前往会计 > 交易登记表。
- 勾选显示测试交易复选框。
此外,您还可以在发布商帐户的支持 > 交易搜索部分查看交易的详细信息及申请退款。
创建订单并打开支付UI
- 要在艾克索拉侧创建包含用户和商品数据的订单,请调用Store库的
createOrderByItemSku
方法,并传入以下参数:
callback
— 成功创建订单回调。它接收打开支付UI和付款所必需的支付令牌。
itemSku
— 用户要购买的商品的SKU。
options
— 付款参数(可选)。
quantity
— 用于要购买的商品数量(可选)。如未指定数量,默认值设置为1
。
- 实现支付UI的打开逻辑:
- kotlin
val intent = XPayments.createIntentBuilder(activity)
.accessToken(AccessToken(<payment token>))
.isSandbox(<isSandbox>)
.build()
startActivityForResult(intent, RC_PAYSTATION)
- 实现支付结果的处理:
- kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_PAYSTATION) {
val (status, _) = XPayments.Result.fromResultIntent(data)
when (status) {
XPayments.Status.COMPLETED -> Log.d("MainActivity", "Payment completed")
XPayments.Status.CANCELLED -> Log.d("MainActivity", "Payment cancelled")
XPayments.Status.UNKNOWN -> Log.d("MainActivity", "Status unknown")
}
}
}
进行测试性支付
要测试支付过程,您可以使用沙盒模式。沙盒模式是一个独立环境,支持除真实付款和拒绝支付外实时环境的所有功能。要访问沙盒模式,应在创建IntentBuilder
对象时调用isSandbox
方法并传入true
参数。
与艾克索拉签订合约之前,测试支付过程仅在沙盒模式下可用。
测试不需要从真实银行账户中扣款。
- 运行您的应用程序。
- 选择银行卡付款方式。
- 输入银行卡详细信息。对于其他字段(如名称或地址),可输入任意数据。您也可以指定不正确的细节(卡号或到期日)以测试是否会产生错误。
- 单击支付。
如符合以下条件之一,除卡片详细信息外,还需指定邮政编码:
- 用户所在国家是美国或加拿大。
- 发卡行识别码(BIN)显示该卡的发行地在美国。
您可以指定任意有效的邮政编码(如12345)。该信息用于决定销售税税率,不影响测试付款过程。
沙盒模式下的银行卡付款支持以下货币:USD、EUR、RUB、GBP、AED、ALL、AMD、ARS、AUD、AZN、BGN、BRL、BYN、CAD、CHF、CLP、CNY、COP、CZK、DKK、DZD、EGP、GEL、HKD、HRK、HUF、IDR、ILS、INR、ISK、JPY、KES、KGS、KRW、KZT、MAD、MDL、MKD、MNT、MXN、MYR、NGN、PEN、PHP、PKR、PLN、RON、RSD、SAR、SEK、SGD、THB、TRY、TWD、UAH、UYU、UZS、VEF、VND、ZAR。
要查看沙盒模式下所作交易的详细信息,包括费用等:
- 打开您的发布商帐户。
- 前往会计 > 交易登记表。
- 勾选显示测试交易复选框。
此外,您还可以在发布商帐户的支持 > 交易搜索部分查看交易的详细信息及申请退款。
创建订单并打开支付UI
- 要在艾克索拉侧创建包含用户和商品数据的订单,请调用
FetchPaymentToken
SDK方法,并传入以下参数:
AuthToken
— 用户认证令牌,该令牌在使用艾克索拉登录管理器进行认证的过程中获得。
ItemSKU
— 用户要购买的商品的SKU。
SuccessCallback
- 成功收到支付令牌时触发的回调。
ErrorCallback
— 请求错误回调。
PurchaseParams
— 购买和用户支付界面参数,例如地址位置和货币(可选)。
- 实现支付界面的打开。方法是调用
LaunchPaymentConsole
SDK方法,并传入以下参数:
WorldContextObject
— world context对象(适用于C++调用)。
OrderId
— 订单ID。
AccessToken
— 支付令牌。
SuccessCallback
— 成功收到支付令牌时触发的回调。
ErrorCallback
— 请求错误回调。
BrowserClosedCallback
— 浏览器关闭回调。此事件仅当在内置浏览器中打开用户支付界面时会被跟踪,外部浏览器事件不会被跟踪。
PayStationVersion
— 支付中心版本。默认使用版本4。
进行测试性支付
要测试支付过程,您可以使用沙盒模式。沙盒模式是一个独立环境,支持除真实付款和拒绝支付外实时环境的所有功能。要访问沙盒模式,应在虚幻编辑器的
与艾克索拉签订合约之前,测试支付过程仅在沙盒模式下可用。
测试不需要从真实银行账户中扣款。
- 在虚幻编辑器中运行您的应用程序或Map。
- 选择银行卡付款方式。
- 输入银行卡详细信息。对于其他字段(如名称或地址),可输入任意数据。您也可以指定不正确的细节(卡号或到期日)以测试是否会产生错误。
- 单击支付。
如符合以下条件之一,除卡片详细信息外,还需指定邮政编码:
- 用户所在国家是美国或加拿大。
- 发卡行识别码(BIN)显示该卡的发行地在美国。
您可以指定任意有效的邮政编码(如12345)。该信息用于决定销售税税率,不影响测试付款过程。
沙盒模式下的银行卡付款支持以下货币:USD、EUR、RUB、GBP、AED、ALL、AMD、ARS、AUD、AZN、BGN、BRL、BYN、CAD、CHF、CLP、CNY、COP、CZK、DKK、DZD、EGP、GEL、HKD、HRK、HUF、IDR、ILS、INR、ISK、JPY、KES、KGS、KRW、KZT、MAD、MDL、MKD、MNT、MXN、MYR、NGN、PEN、PHP、PKR、PLN、RON、RSD、SAR、SEK、SGD、THB、TRY、TWD、UAH、UYU、UZS、VEF、VND、ZAR。
要查看沙盒模式下所作交易的详细信息,包括费用等:
- 打开您的发布商帐户。
- 前往会计 > 交易登记表。
- 勾选显示测试交易复选框。
此外,您还可以在发布商帐户的支持 > 交易搜索部分查看交易的详细信息及申请退款。
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。