自助终端机API v2.0
游戏目录API
该API提供游戏目录,即艾克索拉系统中所有可用项目的列表。API提供每个项目的基本信息,如项目名称、项目图标、支付参数等。上述信息可用于项目中支付页面的创建。
游戏目录API可用于通过自助终端界面的“游戏按钮”进行的支付。将常规的艾克索拉按钮替换为自助终端界面的“游戏按钮”后,用户可在其最爱的项目中以其熟悉的方式轻松完成支付。
API URL: https://api.xsolla.com/projects/list/index.php
请求形式
用于获取游戏列表的请求参数
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| ID | integer | 付款系统交易方ID。 必需。 | 184 |
| sign | integer | 用于防止未经验证访问的签名。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
生成签名
签名用于在支付检查和支付执行时确保安全。签名通过对字符串进行MD5散列生成,该字符串是将上述参数按下列顺序串联并以"|“分隔而形成的。
- php
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结构如下:
- php
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>
字段描述
| 字段名称 | 类型 | 描述 |
|---|---|---|
| projectlist | array | 项目列表(project)。项目字段描述如下。 |
| project | string | 包含id、name、virtual_currency、logo、limits、prompt、“v1”、“v2"和"v3"字段,描述如下。 |
| id | integer | 游戏ID。 |
| name | string | 名称。 |
| virtual_currency | string | 虚拟货币名称。 |
| logo | string | 游戏Logo的URL。 |
| limits | array | 包含min和max字段。如果未在项目中设置limits,则该部分不会显示。 |
| min | string | 虚拟货币的最小数量。 |
| max | string | 虚拟货币的最大数量。 |
| prompt | string | 提示输入参数的消息。 |
| local | string | 界面语言(区域)。 |
| v1 | string | 提示输入项目中基本用户识别参数的消息。 |
| v2 | string | 提示输入项目中某一额外用户识别参数的消息。 |
| v3 | string | 提示输入项目中某一额外用户识别参数的消息。 |
发生错误时的响应形式
发生错误时,API会以XML消息响应。
1<error>
2 <description>Incorrect signature</description>
3</error>
| 字段名称 | 类型 | 描述 |
|---|---|---|
| error | string | 包含description,描述如下。 |
| description | string | 错误描述。 |
错误描述
| 错误 | 类型 | 描述 |
|---|---|---|
| Incorrect signature | string | 提交了无效的签名(sign)。 |
| Temporary technical error | string | 无效的交易方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"字段的填写规则)及其他游戏信息。
按钮是代理系统的一项元素,激活按钮将引发通过艾克索拉系统进行的支付。
将代理连接到艾克索拉系统前,请明确以下信息:
- 艾克索拉系统中的合作伙伴号码(类型)。要获取该信息,可联系您的艾克索拉客户成功经理。
- secret_key是生成数字签名(MD5字符串)所必需的保密字符串参数。您可以通过您的客户成功经理在发布商帐户中找到此信息。
要与API交互,您可以将HTTP请求发送至API直接帐户:
- http
1https://ps.xsolla.com/api/gate
API接受GET或POST请求。所有参数必须采用UTF-8编码,因为使用不匹配的编码会导致签名故障。
请求形式
艾克索拉直接帐户接受三种类型的请求:
- 支付可能性检查(
command=check) - 支付执行(
command=pay) - 游戏货币花费和金额计算(
command=calculate)
order字段将包含此前所执行支付的号码。Check命令:基于艾克索拉号码识别用户
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| command | string | 检查支付可能性。 必需。 | check |
| account | integer | 艾克索拉号码(9位数字)。 必需。 | check |
| sum | float | 以协定货币表示的支付金额。小数分隔符为".";保留两位小数。 可选。 | 100.98 |
| type | integer | 您在艾克索拉的合作伙伴号码。 必需。 | 151 |
| date | string | 格式为YYYYMMDDHHMMSS的日期。 必需。 | 20060425180622 |
| md5 | string | 签名用于防止未经验证的访问。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
Check命令:基于project/v1/v2/v3识别用户
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| command | string | 检查支付可能性。 必需。 | check |
| project | integer | 艾克索拉系统中的项目标识符。可在发布商帐户中找到。 必需。 | 4783 |
| v1 | string | 用户识别参数(一般是游戏中的昵称)。 必需。 | XsollaUser |
| v2 | string | 额外的用户识别参数(取决于项目设置)。 可选。 | 0 |
| v3 | string | 额外的用户识别参数(取决于项目设置)。 可选。 | 0 |
| sum | float | 以协定货币表示的支付金额。小数分隔符为".";保留两位小数。 可选。 | 100.98 |
| type | integer | 您在艾克索拉的合作伙伴号码。 必需。 | 151 |
| date | string | 格式为YYYYMMDDHHMMSS的日期。 必需。 | 20060425180622 |
| md5 | string | 签名用于防止未经验证的访问。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
Pay命令:基于帐户识别订阅者
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| command | string | 检查支付可能性。 必需。 | pay |
| account | integer | 艾克索拉号码(9位数字)。 必需。 | 1234567, 001234567 |
| sum | float | 以协定货币表示的支付金额。小数分隔符为".";保留两位小数。 必需。 | 100.98 |
| id | string | 合作伙伴系统中的唯一交易号码。 必需。 | xsollaid1 |
| type | integer | 您在艾克索拉的合作伙伴号码。 必需。 | 151 |
| date | string | 格式为YYYYMMDDHHMMSS的日期。 必需。 | 20060425180622 |
| test | boolean | 测试标记:测试支付则为1,其他情况则为0(默认值)。 可选。 | 1 |
| md5 | string | 签名用于防止未经验证的访问。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
Pay命令:基于project/v1/v2/v3识别订阅者
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| command | string | 检查支付可能性。 必需。 | check |
| project | integer | 项目(游戏)号码。 必需。 | 4783 |
| v1 | string | 用户识别参数(一般是游戏中的昵称)。 必需。 | XsollaUser |
| v2 | string | 额外的用户识别参数(取决于项目设置)。 可选。 | 0 |
| v3 | string | 额外的用户识别参数(取决于项目设置)。 可选。 | 0 |
| sum | float | 以协定货币表示的支付金额。小数分隔符为".";保留两位小数。 可选。 | 100.98 |
| id | string | 合作伙伴系统中的唯一交易号码。 必需。 | xsollaid2 |
| type | integer | 您在艾克索拉的合作伙伴号码。 必需。 | 151 |
| date | string | 格式为YYYYMMDDHHMMSS的日期。 必需。 | 20060425180622 |
| test | boolean | 测试标记:测试支付则为1,其他情况则为0(默认值)。 可选。 | 1 |
| md5 | string | 签名用于防止未经验证的访问。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
order字段将包含此前所执行支付的号码。Calculate命令
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| command | string | 检查支付可能性。 必需。 | calculate |
| project | integer | 项目(游戏)号码。 必需。 | 4783 |
| sum | float | 以协定货币表示的支付金额。小数分隔符为".";保留两位小数。除非指定out,否则为必需。 | 100.98 |
| out | float | 游戏货币金额。小数分隔符为".";保留两位小数。除非指定sum,否则为必需。 | 10.98 |
| type | integer | 您在艾克索拉的合作伙伴号码。 必需。 | 151 |
| date | string | 格式为YYYYMMDDHHMMSS的日期。 必需。 | 20060425180622 |
| md5 | string | 签名用于防止未经验证的访问。 必需。 | 0a8d9fb24fcbac2efafec5e51045d05c |
生成MD5字段
签名用于在支付检查和支付执行时确保安全。签名通过对字符串进行MD5散列生成,该字符串是将发送的所有参数的值按其在请求中的顺序串联所得,并包含可选参数(如有),以及付款系统的私有密钥(可从您的艾克索拉客户成功经理处获得)。
Check命令
- php
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命令
- php
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
Calculate命令
- php
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
响应代码
系统生成包含状态代码(在result中)和描述(在comment中)的XML响应。
| 结果 | 注释 | 描述 |
|---|---|---|
| 0 | OK | 支付已允许(针对check命令)或支付已成功/事先完成(针对pay命令)。 |
| 1 | technical problem | 服务维护中(稍后重发通知)。 |
| 11 | type is not exists or disabled | 类型不存在,或类型已禁用。 |
| 2 | xsolla-number not correct | 错误的艾克索拉号码长度。 |
| 3 | xsolla-number not found | 未找到艾克索拉号码。 |
| 4 | Stop | 艾克索拉号码不用于支付。 |
| 5 | sum error | 无效的金额。 |
| 6 | bonus error | 输出错误。 |
| 7 | md5 error | MD5散列不匹配。 |
| 8 | IP error | 禁用的IP地址。 |
| 9 | request is not correct | 缺少必需的参数,或指定了无效的命令。 |
| 10 | project is not exists | 项目不存在(已经禁用或永久删除)。 |
付款系统交易记录API
该文件面向如下开发者:他们希望借助付款系统交易记录API,让用户能够支付其项目中的虚拟物品和服务。该文件要求具备API、HTTP请求和软件架构方面的基本知识。
与API交互
- 此项操作必须依赖于服务器间集成;
- 所有参数必须采用UTF-8编码;
- 数据以CSV格式返回。
API方法描述
- Get - 接收支付数据。
API URL
基本URL: https://api.xsolla.com/payments/
URL掩码
- http
1https://api.xsolla.com/payments/v<number versions>/<command>?<parameter1=value1>&<parameter2=value2
Get
创建请求,以获取指定交易方的所有付款系统在过去24小时内的支付数据。
获取API访问权限
要获取API访问权限,请联系您的客户成功经理或发送邮件至csm@xsolla.com,以获取唯一的合作伙伴ID及密钥。
请求示例
https://api.xsolla.com/payments/v1/Get?date=2013-08-20&id=1234&sign=8f683701c03b03fe49e6ef7bbfafb8fb
输入参数
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| date | string | 回复包含过去24小时内的支付数据。日期格式为YYYY-MM-DD(时区为GMT+4)。 | 2013-08-20 |
| id | integer | 唯一的合作伙伴ID。要获取该ID,请联系您的客户成功经理或发送邮件至csm@xsolla.com。 | 1234 |
| sign | string | 用于防止未经验证访问的签名。 | 8f683701c03b03fe49e6ef7bbfafb8fb |
响应
回复采用CSV格式,使用英文逗号”,“作为分隔符:
69927355,95188933,394,2013-08-01T06:49:25+04:00,91.0000,RUB,done
字段描述:
| 字段名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
| xsolla_id | integer | 艾克索拉系统中的交易号码。 必需。 | 12345678 |
| ps_id | integer | 付款系统发送的交易号码。 必需。 | 1234 |
| pid | integer | 付款系统ID。 必需。 | 64 |
| datetime | string | 支付时间(时区为GMT+4)。 必需。 | 2013-08-01T06:49:25+04:00 |
| amount | float | 用户支付的总额。 必需。 | 10.98 |
| currency | string | 支付货币。 必需。 | USD |
| status | string | 支付状态(done表示支付已完成,canceled表示支付已取消)。 必需。 | done |
生成签名
参数按密钥的字母顺序排列。签名通过对字符串进行MD5散列生成,该字符串由参数值和密钥串联而成(详询帐户经理)。"|“用作分隔符。
请求示例
1date = 2013-08-20;
2id=1234;
3secret_key=password.
该字符串形式如下:
2013-08-20|1234|password
对上述字符串进行MD5散列:
e8df0ff2e4360300a5142cc28d86b422
完成代码列表
| 响应的HTTP状态 | 错误消息 | 错误描述 |
|---|---|---|
| 200 | 成功 | |
| 400 | Wrong parameters | 发送了无效的参数 |
| 400 | Wrong ID partner | 无效的交易方 |
| 400 | Wrong date | 无效的日期 |
| 403 | Incorrect sign | 错误的签名 |
| 404 | Unknown command | 未知命令 |
| 500 | 内部API错误 |
付款系统交易对账
通过电子邮件通知对账
交易对账通过来自付款系统、包含特定形式附件的电子邮件进行。对账的频繁程度必须事先商定。
对账文件的形式
对账文件采用以下形式:
- UTF-8编码
- CSV格式(以逗号或分号为分隔符)
- 由事先约定的电子邮件地址发送至stats@xsolla.com
- 邮件标题为:“stats registry”
- 附件名称为:stats_registry_period时间段包含2个日期,格式为YYYY-MM-DD:start_dateTend_date如果时间段为一整天(24小时),则"T"及其后部分可以省略
2010年11月24日的已处理交易统计数据。
文件名称: stats_registry_2010-11-24.csv
2010年10月1日至12月16日期间的已处理交易统计数据。
文件名称: stats_registry_2010-01-10T2010-12-16.csv
2011年5月的已处理交易统计数据。
文件名称: stats_registry_2011-05-01T2011-05-31.csv
文件内容
| 参数 | 类型 | 描述 |
|---|---|---|
| const | string | 商户系统中的交易ID(您系统中的id)。除非已传递pid,否则为必需。 |
| pid | string | 艾克索拉系统中的交易ID(我们在请求中发送的ID)。除非已传递const,否则为必需。 |
| amount | string | 支付金额。小数分隔符为".";保留两位小数。 必需。 |
| payout | string | 艾克索拉付款金额。 必需。 |
| currency | string | 支付货币(ISO 4217)。 必需。 |
| state | string | 支付状态。只发送状态为success或cancelled的支付。取消的支付是用户原本批准但后来取消的支付。 必需。 |
| time | string | 支付的时间和日期(格式为YYYY-MM-DD HH:MM:SS)。 必需。 |
| desc | string | 额外参数,例如我们在请求中传递的支付详情(email、nick、phone)。 可选。 |
记录示例
示例1
- http
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;vassilliy@mail.ru
示例2(如果付款系统中没有pid)
- http
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;vassilliy@mail.ru
示例3(如果没有desc,请留意结尾的分号)
- http
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后,艾克索拉应收到以下参数:
| 参数 | 类型 | 描述 |
|---|---|---|
| const | string | 商户系统中的交易ID(您系统中的id)。除非已传递pid,否则为必需。 |
| pid | string | 艾克索拉系统中的交易ID(我们在请求中发送的ID)。除非已传递const,否则为必需。 |
| amount | string | 支付金额。小数分隔符为".";保留两位小数。 必需。 |
| payout | string | 艾克索拉付款金额。 必需。 |
| currency | string | 支付货币(ISO 4217)。 必需。 |
| state | string | 支付状态。只发送状态为success或cancelled的支付。取消的支付是用户原本批准但后来取消的支付。 必需。 |
| time | string | 支付的时间和日期(格式为YYYY-MM-DD HH:MM:SS)。 必需。 |
| desc | string | 额外参数,例如我们在请求中传递的支付详情(email、nick、phone)。 可选。 |
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。