自助终端机API v2.0

游戏目录API

该API用于获取游戏目录,即艾克索拉系统中所有可用项目的列表。API会返回每个项目的基本信息,包括项目名称、项目图标、支付参数等。这些信息可用于为项目生成支付页面。

游戏目录API适用于自助终端支付场景,可用于在终端界面中展示“游戏按钮”。在自助终端屏幕上使用“游戏按钮”替代常规艾克索拉按钮后,用户可以按熟悉的流程,为自己喜欢的项目轻松完成支付。

API URL: https://api.xsolla.com/projects/list/index.php

请求格式

获取游戏列表的请求参数

字段名称类型描述示例
IDinteger支付系统交易方ID。必需。184
signinteger防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c
注:
要获取交易方ID和密钥,请联系您的客户成功经理或发送邮件至[email protected]。

生成签名

签名用于保障支付检查和支付执行过程的安全。生成签名时,请按下列顺序拼接上述参数,并使用"|“分隔,然后对拼接后的字符串进行MD5散列。

Copy
Full screen
Small screen
1md5(<ID>|<secret_key>)

secret_key: 交易方密钥。

示例: 当交易方为#184、密钥为"SecretKey"时,签名生成方式如下:

$sign=md5(“184|SecretKey”)=0a8d9fb24fcbac2efafec5e51045d05c

请求示例:

https://api.xsolla.com/projects/list/index.php?id=184&sign=0a8d9fb24fcbac2efafec5e51045d05c

响应格式

响应采用XML格式,包含游戏列表以及每个游戏的基本信息。XML结构如下:

Copy
Full screen
Small screen
 1<projectlist>
 2   <project>
 3       <id>12345</id>
 4       <name>Game</name>
 5       <virtual_currency>Game of currency</virtual_currency>
 6       <logo>http://static.xsolla.com/img/game/12345.gif</logo>
 7       <limits>
 8           <min>Minimum of amount game of currency</min>
 9           <max>max of amount game of currency</max>
10       </limits>
11       <prompt>enter nickname of personage</prompt>
12       <v1>nickname of personage</v1>
13   </project>
14   ...
15</projectlist>

字段说明

字段名称类型描述
projectlistarray项目列表(project)。项目字段说明见下文。
projectstring包含以下字段:id、name、virtual_currency、logo、limits、prompt、“v1”、“v2”、“v3”,各字段说明见下文。
idinteger游戏ID。
namestring名称。
virtual_currencystring虚拟货币名称。
logostring游戏Logo的URL。
limitsarray包含min和max字段。如果项目未设置limits,则不显示该部分。
minstring虚拟货币的最小数量。
maxstring虚拟货币的最大数量。
promptstring提示用户输入参数的消息。
localstring界面语言(区域设置)。
v1string提示用户输入项目基础用户识别参数的消息。
v2string提示用户输入项目额外用户识别参数的消息。
v3string提示用户输入项目额外用户识别参数的消息。

发生错误时的响应格式

发生错误时,API会返回XML消息。

Copy
Full screen
Small screen
    1<error>
    2    <description>Incorrect signature</description>
    3</error>
    
    字段名称类型描述
    errorstring包含description,说明见下文。
    descriptionstring错误描述。

    错误描述

    错误类型描述
    Incorrect signaturestring提交的签名无效(sign)。
    Temporary technical errorstring交易方ID(id)无效、服务器故障或发生其他错误。

    与代理方交互

    概述

    支持以下两种交互方式:

    • 艾克索拉按钮。该按钮放置在代理方侧。用户点击按钮后,系统会提示其输入此前收到的号码,并向该号码发起支付。如需通过艾克索拉按钮收款,请填写account字段(project、v1、v2、v3字段必须留空)。account字段必须填写9位艾克索拉号码。如需设置艾克索拉按钮,请联系客户成功经理获取Logo和号码。

    • 游戏按钮。这些按钮放置在代理方侧,每个按钮对应一款游戏。用户点击指定游戏的按钮后登录,并向自己的帐户发起支付。如需通过游戏专用按钮收款,请填写project、v1、v2和v3字段(account字段留空)。在终端完成指定项目(游戏)按钮配置后,即可发送project、v1、v2和v3字段。project和v1为必填字段,v2和v3为可选字段,具体取决于项目配置。如需设置游戏按钮,请联系客户成功经理获取每款游戏的Logo、游戏内部ID、授权方式(v1、v2、v3字段填写规则)以及其他信息。

    按钮是代理方系统中的一个元素,用于通过艾克索拉系统发起支付。

    将代理方系统接入艾克索拉系统前,请先确认以下信息:

    1. 艾克索拉系统中的合作伙伴号码(类型)。如需获取该信息,请联系您的艾克索拉客户成功经理。
    2. secret_key是生成数字签名(MD5字符串)所需的保密字符串参数。您可以通过客户成功经理在发布商帐户中查看此信息。

    如需与API交互,请将HTTP请求发送至以下API网关:

    Copy
    Full screen
    Small screen
    1https://ps.xsolla.com/api/gate
    

    API支持GET或POST请求。所有参数必须采用UTF-8编码,否则可能导致签名校验失败。

    请求格式

    可在以下场景向艾克索拉发起请求:

    • 检查是否可以支付(command = check)
    • 发起支付(command = pay)
    • 检查支付是否成功(command = status)
    • 计算游戏货币的价格和数量(command = calculate)
    注:
    如果艾克索拉收到的请求中包含已完成支付的交易ID,则不会重复扣款。此时,响应会返回0和OK注释,并在order字段中返回此前已完成支付的交易ID。

    check命令

    check命令:按艾克索拉号码识别用户

    字段名称类型描述示例
    commandstring检查是否可以支付。必需。check
    accountinteger艾克索拉号码(9位数字)。必需。001234567
    sumfloat以约定货币表示的支付金额。小数分隔符为".";保留两位小数。可选。100.98
    typeinteger您在艾克索拉的合作伙伴号码。必需。151
    datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
    md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

    check命令:按project/v1/v2/v3识别用户

    字段名称类型描述示例
    commandstring检查是否可以支付。必需。check
    projectinteger艾克索拉系统中的项目标识符;可在发布商帐户中查看。必需。4783
    v1string用户识别参数(通常为游戏内昵称)。必需。XsollaUser
    v2string额外用户识别参数(取决于项目设置)。可选。0
    v3string额外用户识别参数(取决于项目设置)。可选。0
    sumfloat以约定货币表示的支付金额。小数分隔符为".";保留两位小数。可选。100.98
    typeinteger您在艾克索拉的合作伙伴号码。必需。151
    datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
    md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

    pay命令

    pay命令:按帐户识别用户

    字段名称类型描述示例
    commandstring命令名称。必需。pay
    accountinteger艾克索拉号码(9位数字)。必需。001234567
    sumfloat以约定货币表示的支付金额。小数分隔符为".";保留两位小数。必需。100.98
    idstring合作伙伴系统中的唯一交易号码。必需。xsollaid1
    typeinteger您在艾克索拉的合作伙伴号码。必需。151
    datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
    testboolean测试标记:测试支付时为1,否则为0(默认值)。可选。1
    md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

    pay命令:按project/v1/v2/v3识别用户

    字段名称类型描述示例
    commandstring命令名称。必需。pay
    projectinteger项目(游戏)号码。必需。4783
    v1string用户识别参数(通常为游戏内昵称)。必需。XsollaUser
    v2string额外用户识别参数(取决于项目设置)。可选。0
    v3string额外用户识别参数(取决于项目设置)。可选。0
    sumfloat以约定货币表示的支付金额。小数分隔符为".";保留两位小数。可选。100.98
    idstring合作伙伴系统中的唯一交易号码。必需。xsollaid2
    typeinteger您在艾克索拉的合作伙伴号码。必需。151
    datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
    testboolean测试标记:测试支付时为1,否则为0(默认值)。可选。1
    md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c
    注:
    如果网关收到的请求ID对应某笔已完成支付,则不会重复扣款,网关会返回"0"和"OK"注释。此时,响应的order字段会包含此前已完成支付的号码。

    status命令

    您可以通过您系统中的交易ID(id参数)或艾克索拉侧的交易ID(invoice参数)检查支付是否成功。如果同时传递这两个参数,它们必须对应同一笔支付;否则,艾克索拉会返回验证错误。

    status命令:按您系统中的交易ID检查支付是否成功

    字段名称类型描述示例
    commandstring命令名称。必填。status
    idstring您系统中的唯一交易ID。未传递艾克索拉侧交易ID(invoice)时,此字段必需。xsollaid2
    typeinteger您在艾克索拉的合作伙伴号码。必需。151
    datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
    md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

    示例:

    Copy
    Full screen
    Small screen
      1https://ps.xsolla.com/api/gate?command=status&id=xsollaid2&type=151&date=20060425180622&md5=0a8d9fb24fcbac2efafec5e51045d05c
      

      status命令:按艾克索拉侧交易ID检查支付是否成功

      字段名称类型描述示例
      commandstring 命令名称。必需。status
      invoiceinteger艾克索拉侧的唯一交易ID。未传递您系统中的交易ID(id)时,此字段必需。987654321
      typeinteger您在艾克索拉的合作伙伴号码。必需。151
      datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
      md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

      示例:

      Copy
      Full screen
      Small screen
        1https://ps.xsolla.com/api/gate?command=status&invoice=987654321&type=151&date=20060425180622&md5=0a8d9fb24fcbac2efafec5e51045d05c
        

        calculate命令

        字段名称类型描述示例
        commandstring检查是否可支付。必需。calculate
        projectinteger项目(游戏)号码。必需。4783
        sumfloat以约定货币表示的支付金额。小数分隔符为".";保留两位小数。未指定out时必需。100.98
        outfloat游戏货币数量。小数分隔符为".";保留两位小数。未指定sum时必需。10.98
        typeinteger您在艾克索拉的合作伙伴号码。必需。151
        datestring日期,格式为YYYYMMDDHHMMSS。必需。20060425180622
        md5string防止未授权访问的签名。必需。0a8d9fb24fcbac2efafec5e51045d05c

        生成MD5字段

        签名用于保障支付和支付检查的安全。生成签名时,请按请求中的参数顺序拼接所有已发送参数的值(包括可选参数,如有)以及支付系统私有密钥,然后对拼接后的字符串进行MD5散列。私有密钥可从您的艾克索拉客户成功经理处获取。

        check命令

        Copy
        Full screen
        Small screen
         1<?php
         2  $request['command']='check';
         3  $request['account']=1234567;
         4  $request['sum']=150.75;
         5  $request['type']=151;
         6  $request['date']='20110117000516';
         7  $md5='';
         8  foreach ($request as $value) {
         9  $md5.=$value;
        10  }
        11  $request['md5']=md5($md5.$secret_key);
        12?>
        

        字符串:

        check1234567150.7515120110117000516test

        MD5:

        1cad5a2c3457cffa8e857a507a7050ba

        pay命令

        Copy
        Full screen
        Small screen
         1<?php
         2$request['command']='pay';
         3$request['account']=1234567;
         4$request['sum']=150.75;
         5$request['id']=384957;
         6$request['type']=151;
         7$request['date']='20110117000516';
         8$md5='';
         9foreach ($request as $value) {
        10$md5.=$value;
        11}
        12$request['md5']=md5($md5.$secret_key);
        13?>
        

        字符串:

        pay1234567150.7538495715120110117000516test

        MD5:

        7cfa05abde4ae2464142bf2ac7a72f32

        status命令签名生成(按您系统中的交易ID检查)

        Copy
        Full screen
        Small screen
         1$request['command'] = 'status';
         2$request['id']      = 'xsollaid2';
         3$request['type']    = 151;
         4$request['date']    = '20110117000516';
         5
         6$md5 = '';
         7foreach ($request as $value) {
         8    $md5 .= $value;
         9}
        10$request['md5'] = md5($md5 . $secret_key);
        

        字符串:

        statusxsollaid215120110117000516+secret_key

        MD5:

        7cfa05abde4ae2464142bf2ac7a72f32(示例)

        status命令签名生成(按艾克索拉侧交易ID检查)

        Copy
        Full screen
        Small screen
         1$request['command'] = 'status';
         2$request['invoice'] = 987654321;
         3$request['type']    = 151;
         4$request['date']    = '20110117000516';
         5
         6$md5 = '';
         7foreach ($request as $value) {
         8    $md5 .= $value;
         9}
        10$request['md5'] = md5($md5 . $secret_key);
        

        字符串:

        status98765432115120110117000516+secret_key

        MD5:

        7cfa05abde4ae2464142bf2ac7a72f32(示例)

        calculate命令

        Copy
        Full screen
        Small screen
         1<?php
         2  $request['command']='calculate';
         3  $request['project']=4783;
         4  $request['out']=12;
         5  $request['type']=151;
         6  $request['date']='20110117000516';
         7  $md5='';
         8  foreach ($request as $value) {
         9  $md5.=$value;
        10  }
        11  $request['md5']=md5($md5.$secret_key);
        12?>
        

        字符串:

        calculate47831215120110117000516test

        MD5:

        e73e11a9cad00e205358e05254905af5

        响应

        响应代码

        艾克索拉会生成XML响应,其中result包含状态代码,comment包含状态描述。

        代码 (result)描述 (comment)说明
        0OK请求已成功处理。此时,XML还会包含payment区块,提供详细信息。
        1technical problem服务维护中,请稍后重新发送通知。
        2xsolla-number not correct艾克索拉号码长度不正确。
        3xsolla-number not found未找到艾克索拉号码。
        4stop艾克索拉号码不能用于支付。
        5sum error金额无效。
        6bonus error输出错误。
        7md5 errorMD5哈希值不匹配。
        8IP errorIP地址禁止访问。
        9request is not correct缺少必需参数,或指定的命令无效。
        10project is not exists项目不存在(已禁用或已永久删除)。
        11type is not exists or disabled类型不存在或已禁用。

        错误响应示例:

        Copy
        Full screen
        Small screen
        1<response>
        2  <result>7</result>
        3  <comment>md5 error</comment>
        4</response>
        

        成功响应代码

        如果result返回0,响应还会包含payment区块,提供该笔支付的详细信息。支付状态由status参数中的代码表示。

        代码 (result)描述 (comment)说明
        0created支付已创建,但尚未完成或取消。
        1succeeded支付成功。date字段包含支付完成日期,格式为YYYY-MM-DD HH:MM:SS (GMT+3)。
        2canceled支付已取消。
        3processing支付处理中。请稍后重试。
        4incomplete支付无法完成。请联系艾克索拉客户支持。

        status命令成功响应示例:

        Copy
        Full screen
        Small screen
         1<response>
         2  <payment>
         3    <invoice>123456789</invoice>
         4    <id>xsollaid2</id>
         5    <sum>100.98</sum>
         6    <project>4783</project>
         7    <v1>XsollaUser</v1>
         8    <date>2026-01-23 12:34:56</date>  <!-- present only when status is succeeded -->
         9    <status>1</status>
        10    <comment>succeeded</comment>
        11    <statusKioskUrl>https://secure.xsolla.com/pages/status-kiosk?id=123456789&key=9e07b3…</statusKioskUrl>
        12  </payment>
        13  <result>0</result>
        14</response>
        

        支付系统交易记录API

        本文档面向希望接入支付系统交易记录API的开发者。通过该API,开发者可以支持用户为项目中的虚拟物品和服务付款。阅读本文档需要具备API、HTTP请求和软件架构的基础知识。

        与API交互

        • 仅支持服务器间集成;
        • 所有参数必须采用UTF-8编码;
        • 数据以CSV格式返回。

        API方法说明

        • Get - 获取支付数据。

        API URL

        基础URL:https://api.xsolla.com/payments/

        URL模板

        Copy
        Full screen
        Small screen
        1https://api.xsolla.com/payments/v<number versions>/<command>?<parameter1=value1>&<parameter2=value2
        

        Get

        创建请求,获取指定交易方通过所有支付系统在过去24小时内产生的支付数据。

        获取API访问权限

        如需获取API访问权限,请联系您的客户成功经理,或发送邮件至[email protected],以获取唯一合作伙伴ID和密钥。

        请求示例

        https://api.xsolla.com/payments/v1/Get?date=2013-08-20&id=1234&sign=8f683701c03b03fe49e6ef7bbfafb8fb

        输入参数

        字段名称类型描述示例
        datestring响应包含最近24小时的支付数据。日期格式为YYYY-MM-DD(GMT+4时区)。2013-08-20
        idinteger唯一合作伙伴ID。如需获取ID,请联系您的客户成功经理,或发送邮件至[email protected]。1234
        signstring防止未授权访问的签名。8f683701c03b03fe49e6ef7bbfafb8fb

        响应

        响应采用CSV格式,使用英文逗号”,“作为分隔符:

        69927355,95188933,394,2013-08-01T06:49:25+04:00,91.0000,RUB,done

        字段描述:

        字段名称类型描述示例
        xsolla_idinteger艾克索拉系统中的交易号码。必需。12345678
        ps_idinteger支付系统发送的交易号码。必需。1234
        pidinteger支付系统ID。必需。64
        datetimestring支付时间(GMT+4时区)。必需。2013-08-01T06:49:25+04:00
        amountfloat用户支付金额。必需。10.98
        currencystring支付货币。必需。USD
        statusstring支付状态。报告仅包含状态为done(支付成功完成)和canceled(支付已取消)的支付。必需。done

        生成签名

        生成签名时,请先按键名的字母顺序排列参数,再使用”|“作为分隔符,将参数值与密钥拼接成字符串,最后对该字符串进行MD5散列。密钥可向客户成功经理获取。

        请求示例

        Copy
        Full screen
        Small screen
          1date = 2013-08-20;
          2id=1234;
          3secret_key=password.
          

          拼接后的字符串如下:

          2013-08-20|1234|password

          上述字符串的MD5哈希值:

          e8df0ff2e4360300a5142cc28d86b422

          完成代码列表

          响应的HTTP状态错误消息错误描述
          200成功
          400Wrong parameters发送的参数无效
          400Wrong ID partner无交易方无效
          400Wrong date日期无效
          403Incorrect sign签名无效
          404Unknown command未知命令
          500API内部错误

          与支付系统进行交易对账

          通过邮件通知对账

          交易对账通过支付系统发送邮件完成,邮件中需附带指定格式的文件。对账频率需提前协商确定。

          对账文件格式

          对账文件需符合以下要求:

          • UTF-8编码
          • CSV格式(以逗号或分号作为分隔符)
          • 从预先约定的电子邮箱发送至[email protected]
          • 邮件主题:“stats registry”
          • 附件文件名:stats_registry_period,其中period由start_dateTend_date确定,日期格式为YYYY-MM-DD。如果对账周期为一整天(24小时),可以省略"T"及其后的部分

          注:

          2010年11月24日已处理交易的统计数据。

          文件名:stats_registry_2010-11-24.csv

          2010年10月10日至12月16日期间已处理交易的统计数据。

          文件名:stats_registry_2010-01-10T2010-12-16.csv

          2011年5月已处理交易的统计数据。

          文件名:stats_registry_2011-05-01T2011-05-31.csv

          文件内容

          注:
          各列必须按以下顺序排列。
          参数类型描述
          conststring商户系统中的交易ID(您系统中的id)。未传递pid时必需。
          pidstring艾克索拉系统中的交易ID(由艾克索拉在请求中发送)。未传递const时必需。
          amountstring支付金额。小数分隔符为".",保留两位小数。必需。
          payoutstring艾克索拉打款金额。必需。
          currencystring支付货币(ISO 4217)。必需。
          statestring支付状态。仅发送状态为success或cancelled的支付。已取消支付是指最初已获批准、之后被用户取消的支付。必需。
          timestring支付时间和日期(YYYY-MM-DD HH:MM:SS)。必需。
          descstring其他参数,例如艾克索拉在请求中传递的支付详情(email、nick、phone)。可选。

          记录表示例

          示例1

          Copy
          Full screen
          Small screen
          197035765;6654448;10.00;9.50;RUB;done;2011-09-01 13:30:45;nickname
          2
          397035766;6634558;150.00;145.00;RUB;done;2011-09-01 16:43:54;[email protected]
          

          示例2(如果支付系统中没有pid)

          Copy
          Full screen
          Small screen
          1564;;10.00;9.50;RUB;done;2011-09-01 13:30:45;nickname
          2
          3456;;150.00;145.00;RUB;done;2011-09-01 16:43:54;[email protected]
          

          示例3(如果没有desc⸺请注意末尾的分号)

          Copy
          Full screen
          Small screen
          1564;6654855;10.00;9.50;RUB;done;2011-09-01 13:30:45;
          2
          3456;4588554;150.00;145.00;RUB;done;2011-09-01 16:43:54;
          

          通过支付系统API对账

          您也可以通过支付系统的HTTP(HTTPS) API进行交易对账。查询API后,艾克索拉必须收到以下参数:

          注:
          API响应中的参数名称可能与表中显示的名称不同。
          参数类型描述
          conststring商户系统中的交易ID(您系统中的id)。未传递pid时必需。
          pidstring艾克索拉系统中的交易ID(由艾克索拉在请求中发送)。未传递const时必需。
          amountstring支付金额。小数分隔符为".",保留两位小数。必需。
          payoutstring艾克索拉打款金额。必需。
          currencystring支付货币(ISO 4217)。必需。
          statestring支付状态。仅发送状态为success或cancelled的支付。已取消支付是指最初已获批准、之后被用户取消的支付。必需。
          timestring支付时间和日期(YYYY-MM-DD HH:MM:SS)。必需。
          descstring其他参数,例如艾克索拉在请求中传递的支付详情(email、nick、phone)。可选。
          本文对您的有帮助吗?
          谢谢!
          我们还有其他可改进之处吗? 留言
          非常抱歉
          请说明为何本文没有帮助到您。 留言
          感谢您的反馈!
          我们会查看您的留言并运用它改进用户体验。
          上次更新时间: 2026年10月7日

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

          报告问题
          我们非常重视内容质量。您的反馈将帮助我们做得更好。
          请留下邮箱以便我们后续跟进
          感谢您的反馈!
          无法发送您的反馈
          请稍后重试或发送邮件至[email protected]与我们联系。