集成付款解决方案

要跟踪协作推广者带来的引荐数并向其支付佣金,需先集成艾克索拉支付中心。要求:

  1. 支付中心集成在经过性能优化的着陆页上。
  2. 支付中心是通过流量联盟活动导流的游戏着陆页上使用的唯一付款方式。

获取令牌

Note
如果已授权的用户会在您的网站进行购买,请实现令牌获取。如果计划向未授权的用户进行销售,请连接Buy Button产品。

需要令牌才能与支付UI集成。访问令牌是一个识别游戏、用户和购买参数的字符串。

艾克索拉API使用基本认证。请指定您的商户ID作为用户名,API密钥作为密码。

获取令牌的URL:

Copy
Full screen
Small screen
https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token

可通过包含要向支付UI传递的参数来更改HTTP POST请求。请在创建令牌方法的user.iduser.nameuser.email参数中传入相关用户信息。
Note
对于user.id参数,请使用用户容易记住的标识符,以便之后其自行在游戏外使用(例如在游戏余额充值等客户发起型支付情境)。
API参考
查看完整参数列表。

请求与响应均为JSON格式。

以下为通过艾克索拉PHP SDK获得PHP令牌的范例代码。如使用其他编程语言,请单击CURL选项卡查看CURL示例。

Copy
Full screen
Small screen
php
  • php
  • curl
<?php

use Xsolla\SDK\API\XsollaClient;
use Xsolla\SDK\API\PaymentUI\TokenRequest;

$tokenRequest = new TokenRequest($projectId, $userId);
$tokenRequest->setUserEmail('email@example.com')
    ->setExternalPaymentId('12345')
    ->setSandboxMode(true)
    ->setUserName('USER_NAME')
    ->setPurchase(9.99, 'USD');

$xsollaClient = XsollaClient::factory(array(
    'merchant_id' => MERCHANT_ID,
    'api_key' => API_KEY
));
$token = $xsollaClient->createPaymentUITokenFromRequest($tokenRequest);
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"
        },
        "email": {
            "value": "email@example.com"
        }
    },
    "settings": {
        "project_id": 14004,
        "mode": "sandbox"
    },
    "purchase": {
            "checkout": {
                "amount": 9.99,
                "currency": "USD"
            }
    }
}'

打开支付UI

有三种打开支付UI的方法:

Note
要以沙盒模式打开支付UI,请使用下列URL:https://sandbox-secure.xsolla.com/

Pay Station Embed

Notice
此支付UI打开方式不支持销售游戏密钥。要销售游戏密钥,请按照说明进行操作。

示例:异步脚本加载

Copy
Full screen
Small screen
<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事件。您可以将事件发送到分析系统。如要在分析系统中设置事件处理,请联系帐户经理或发送电子邮件至am@xsolla.com

要轻松在网站上实现该支付UI,请从我们的CDN下载脚本。请使用该URL将脚本集成到您的网站。如需更多信息,请访问我们的GitHub存储库

用于脚本初始化的参数列表:

参数类型描述
access_token
string令牌,通过API接收。 必需
sandbox
boolean设置为true以测试支付流程,将使用sandbox-secure.xsolla.com而不是secure.xsolla.com
lightbox
object带有选项列表的对象,可用于打开lightbox(桌面版本)。
lightbox.width
stringLightbox框架的宽度。如果为null,则取决于支付中心的宽度。默认值为null。
lightbox.height
stringLightbox框架的高度。如果为null,则取决于支付中心的高度。默认值为100%
lightbox.zIndex
integer控制垂直堆叠顺序的属性,默认值为1000。
lightbox.overlayOpacity
integer浮层不透明度(从0到1),默认值为.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加载指示器的动画类型。可为xsollaround。默认值为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用户在状态页面上移动但支付失败时的事件。

如果您想要自行初始化打开支付UI,请使用此链接:https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN

Note
打开支付UI的链接必须只能使用https://前缀

如用于测试,请使用以下URL:https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN

Notice
参数access_token包含隐私用户数据。请确保获取该参数时使用服务器对服务器通信。

Iframe

需在您的代码侧实现以下机制:

  • 检查设备类型(桌面或移动设备)并将其包含在令牌的settings.ui.version参数中发送。
  • 通过postMessage获取支付UI的事件。可将这些事件发送给分析系统。要在分析系统中设置事件处理,请联系帐户经理或发送电子邮件至am@xsolla.com

如要在iframe中打开支付UI,请使用下列链接:https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN,其中ACCESS_TOKEN是在上一步中获得的令牌。对于测试,请使用此URL:https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN

新建窗口

如要在新窗口中打开支付UI,请使用下列链接:https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN,其中ACCESS_TOKEN是在上一步中获得的令牌。对于测试,请使用此URL:https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN

设置Webhook

需为支付中心实现以下Webhook:
Webhook列表
了解Webhook的更多信息,如示例等。

通过发送不带消息正文的HTTP代码204来确认收到Webhook。

如要测试Webhook处理程序,请打开项目设置 > Webhook部分。

Note
设置Webhook后,请打开支付中心设置,并将结账设置为

测试支付流程

要测试付款过程,可:

  • 使用沙盒
  • 进行真实付款,然后通过发布商帐户发起退款

艾克索拉沙盒是一个独立环境,支持除真实付款外实时环境的所有功能。获得令牌后,您可以通过发送"mode":"sandbox"来访问沙盒。

要测试银行卡支付,请执行以下操作:
  1. 以沙盒模式打开支付UI
  2. 选择信用卡/借记卡付款方式组。
  3. 输入银行卡详细信息。在其余字段中输入任意值。您也可以指定不正确的细节(卡号、到期日、或CVV)以生成错误。
测试银行卡列表
查看测试银行卡列表。
Note

如果用户国家是美国或加拿大,除银行卡详细信息外,还需指定邮政编码。您可以指定任何有效的邮政编码(如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。

Notice
要开始接收真实付款,请先去掉"mode":"sandbox"部分。

如要通过进行真实付款来测试付款过程,同样建议使用银行卡:

  1. 打开支付UI
  2. 选择信用卡/借记卡付款方式组。
  3. 输入有效的银行卡详细信息。
  4. 付款完成后,前往发布商帐户中的交易搜索部分。
  5. 选择该测试交易,然后单击退款(交易状态必须为已完成)。

Note
建议使用Visa和MasterCard卡来测试付款过程。

上线

要开始处理真实付款:

  1. 确保已经与艾克索拉签订了合约。
  2. 通过secure.xsolla.com链接打开支付中心。或在Pay Station Embed脚本中将sandbox-secure.xsolla.com改为secure.xsolla.com
  3. 获取令牌时去掉"mode":"sandbox"部分。

您的进度
感谢您的反馈!
上次更新时间: 2021年7月5日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!