更新日期:2025年 04月 09日QuickGameSDK服务器接入文档
<h3>
<span style="line-height:3;font-size:16px;">一. 简要说明</span>
</h3>
<p>
<span style="line-height:3;font-size:14px;">1.本文档的阅读对象为接入并使用SDK用户和支付系统的游戏服务器开发者</span><br />
<span style="line-height:3;font-size:14px;">2.通信时SDK均采用UTF8编码</span><br />
<span style="line-height:3;font-size:14px;">3.双发通信时,若有sign字段则一定要验证签名</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><br />
</span>
</p>
<h3>
<span style="line-height:3;font-size:16px;">二. 接口列表</span>
</h3>
<h4>
<span style="line-height:3;font-size:14px;">1. 验证用户信息接口</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">本接口针对iOS</span><span style="line-height:2.5;font-size:14px;"><span style="line-height:3;">和Android平台,H5游戏无</span><span style="line-height:3;">需调用此接口</span></span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>1.1 接口目的</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">游戏客户端从SDK登录回调中获取到uid后,为防止用户篡改客户端而伪造用户uid标示从而登录他人账号,游戏客户端应将此信息传入给游戏服务器。游戏服务器调用此接口向SDK验证uid的真实性。若uid通过验证则允许此用户登录,若无法通过验证应拒绝此用户的登录授权</span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>1.2 接口地址</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">http://quickgame.sdk.quicksdk.net/webapi/checkUserInfo</span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>1.3 请求方式</strong></span>
</p>
<p>
<span style="font-size:14px;line-height:3;">GET/POST</span>
</p>
<p>
<br />
</p>
<p>
<strong style="font-size:14px;">1.4 参数列表</strong>
</p>
<p>
<span style="font-size:small;"><br />
</span>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="line-height:3;font-size:14px;">参数</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">必要性</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">说明</span>
</td>
</tr>
<tr>
<td>
<span style="line-height:3;font-size:14px;">uid</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">必传</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">从客户端登录回调中获取的uid</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:3;font-size:14px;">token</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">必传</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">从客户端登录回调中获取的token,请注意token的长度不要被截断</span><br />
</td>
</tr>
</tbody>
</table>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong> 1.5 返回字段</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">接口会返回JSON格式字符串,如:</span><br />
<span style="line-height:3;font-size:14px;">例1 {"status":false,"message":"tokenUidError"}</span><br />
<span style="line-height:3;font-size:14px;">例2 {"status":true,"message":""}</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="line-height:3;font-size:14px;">参数</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">类型</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">必要性</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">说明</span>
</td>
</tr>
<tr>
<td>
<span style="line-height:3;font-size:14px;">status</span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;">bool</span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;">必有</span>
</td>
<td>
<span style="line-height:3;font-size:14px;">接口验证状态,若通过验证为true,否则为false</span><br />
</td>
</tr>
<tr>
<td>
<span style="line-height:3;font-size:14px;">message</span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;">string</span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;">必有</span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;"><span style="font-size:14px;"></span><span style="font-size:14px;">Status为false时,message有值,为错误提示语</span></span>
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">data</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;">object</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">必有</span><span style="font-size:14px;"></span><br />
</td>
<td>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;line-height:2;">status为true时才有data字段,为用户信息,对象包含如下字段:</span>
</p>
<span style="font-size:14px;line-height:2;">uid:用户uid</span><br />
<span style="font-size:14px;line-height:2;">isGuest:是否为游客账号。1是;0否</span><br />
<p>
<span style="font-size:14px;line-height:2;">age:用户年龄,如果用户已实名认证返回认证的年龄,未实名认证返回0</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
</td>
</tr>
</tbody>
</table>
<br />
<br />
<span style="line-height:3;font-size:14px;"><strong>1.6 请求实例</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">http://quickgame.sdk.quicksdk.net/webapi/checkUserInfo?token=@171@174@188@127@182@163@148@179@166@168@132@179@165@222@169@116@109@166@96@212@152@156@116@121@106@139@170@154@203@134@124@118@108@164@205@126@173@151@172@169@169@140@158@215@138@153@164@136@160@162@154@197@114@212@159@143@126@125@154@179@168</span><span style="line-height:3;font-size:14px;">@151@135@155@121@148@215@146@181@100@158@219@161@112@106@184@108@189@121@129@120@158@141@186@129@177@169@140@105@136@128@176@205@124@124@166@163@179@213@151@175@124@185@140@155@124@171@160&uid=523</span>
</p>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;">2. 发放道具接口</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.1 接口目的</strong></span>
</p>
<p>
<span style="font-size:14px;line-height:2.5;">玩家在完成充值后,SDK会按照此接口协议向游戏提供的发货地址POST数据(简称为发送通知),游戏在收到SDK POST的数据后应验证相关信息并向玩家发送道具</span><br />
<span style="font-size:14px;line-height:2.5;">a)</span><span style="font-size:14px;line-height:2.5;">游戏应按照后面2.4.1节中的算法验证签名数据,确定请求是否合法</span>
</p>
<p>
<span style="font-size:14px;line-height:2.5;">b) 签名验证通过,游戏应按后面2.4.2节中的解密方法,解密nt_data参数,获取支付内容</span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:2.5;">c</span><span style="font-size:14px;white-space:normal;line-height:2.5;">)</span></span><span style="font-size:14px;"><span style="line-height:2.5;">游戏发货的金额应当</span><span style="color:#E53333;line-height:2.5;"><strong>以通知中的amount金额为准</strong></span><span style="line-height:2.5;">发放道具</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:2.5;">d</span><span style="font-size:14px;white-space:normal;line-height:2.5;">)</span></span><span style="font-size:14px;line-height:2.5;">游戏应判断是否重复发放道具,若已发放则不能再次发放</span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:2.5;">e</span><span style="font-size:14px;white-space:normal;line-height:2.5;">)</span></span><span style="font-size:14px;"><span style="line-height:2.5;">处理成功后返回</span><span style="color:#E53333;line-height:2.5;"><strong>SUCCESS这7个纯字符串(注意不要加其他字符)</strong></span><span style="line-height:2.5;">SDK将不再通知,否则SDK将在一段内持续通知</span></span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.2 接口地址</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">发放道具地址由游戏提供,SDK会主动向此地址发起POST请求</span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.3 请求方式</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">POST</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4 POST参数列表</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">SDK会向游戏服务器POST3个参数:</span><span style="line-height:3;font-size:14px;">nt_data 和 sign 和 md5Sign</span><br />
<span style="line-height:3;font-size:14px;">参数皆为编码后的密文,使用从后台获</span><span style="line-height:3;font-size:14px;">取的callbackkey对密文进行解码</span><br />
<span style="line-height:3;font-size:14px;">nt_data解码</span><span style="line-height:3;font-size:14px;">后为一个xml字符串</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">例如:</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<pre class="brush:js;toolbar:false"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<quick_message>
<message>
<uid>50848343</uid>
<login_name>GG366822889</login_name>
<out_order_no>13420170114150053861611313</out_order_no>
<order_no>0720170114150059110833</order_no>
<pay_time>2017-01-14 15:01:17</pay_time>
<amount>0.01</amount>
<status>0</status>
<extras_params>13420170114150053861611313</extras_params>
</message>
</quick_message></pre>
<br />
<p>
<span style="font-size:14px;">各字段含义如下:</span>
</p>
<p>
<br />
</p>
<p>
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="font-size:14px;line-height:3;">参数</span>
</td>
<td>
<span style="font-size:14px;line-height:3;">必要性</span>
</td>
<td>
<span style="font-size:14px;line-height:3;">说明</span>
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">uid</span>
</td>
<td>
<span style="font-size:14px;line-height:3;">必有</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">购买道具的用户uid</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">login_name</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><span style="white-space:normal;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">购买道具的用户username</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">out_order_no</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">可为空</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">游戏下单时传递的游戏订单号,原样返回</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">order_no</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><span style="white-space:normal;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">SDK唯一订单号</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">pay_time</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><span style="white-space:normal;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">用户支付时间,如2017-02-06 14:22:32</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;color:#E53333;"><strong>amount</strong></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;color:#E53333;"><strong>必有</strong></span><span style="white-space:normal;"></span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="line-height:3;font-size:14px;color:#E53333;"><strong>用户支付金额,单位元,游戏最终发放道具金额应以此为准</strong></span><span style="line-height:3;font-size:14px;color:#E53333;"><strong></strong></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;"><span></span><span style="line-height:3;font-size:14px;">extras_params</span></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><span style="white-space:normal;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">客户端下单时透传参数 原样返回</span><br />
</td>
</tr>
</tbody>
</table>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong><br />
</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4.1</strong></span>
</p>
<p>
<span style="font-size:14px;line-height:2.5;">CP应判断通过签名是否一致</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<p style="white-space:normal;">
<span style="line-height:2.5;font-size:14px;">判断方法为CP自行计算本地签名localSign = md5(nt_data + sign + md5Key)</span><br />
<span style="line-height:2.5;font-size:14px;">对比本地计算结果与通知中的md5Sign是否一致,不一致应返回失败</span><br />
<span style="line-height:2.5;font-size:14px;color:#E53333;"><strong>注:直接对nt_data、sign、md5Key的原文进行拼接,无需加拼接符,无需对nt_data</strong></span><span style="line-height:2.5;font-size:14px;color:#E53333;"><strong>解码</strong></span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4.2</strong></span>
</p>
<p>
<span style="font-size:14px;">签名验证通过后,使用后台的Callback_Key解密nt_data</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;line-height:2.5;">解码算法伪码描述:</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"></span>
</p>
<pre class="brush:js;toolbar:false">public static String decode(String src,String key) {
if(src == null || src.length() == 0){
return src;
}
Matcher m = pattern.matcher(src);
List list = new ArrayList();
while (m.find()) {
try {
String group = m.group();
list.add(Integer.valueOf(group));
} catch (Exception e) {
e.printStackTrace();
return src;
}
}
if (list.size() > 0) {
try {
byte[] data = new byte[list.size()];
byte[] keys = key.getBytes();
for (int i = 0; i < data.length; i++) { data[i] = (byte) (list.get(i) - (0xff & keys[i % keys.length])); } return new String(data, charset); } catch (UnsupportedEncodingException e){ e.printStackTrace(); } return src; } else { return src; } </pre>
<span style="font-size:medium;white-space:normal;line-height:3;"><span style="font-size:14px;">在官网<a href="https://www.quicksdk.com/download.html" target="_blank"><u>下载中心</u></a>可获取</span><span style="font-size:14px;">服务端解密示例【QuickSDK For 服务器类库】</span><span style="font-size:14px;">,其中包含C#、C++、Java、PHP等示例Demo</span></span>
<p>
<span style="font-size:14px;color:#E53333;"><strong>注意:游戏发货金额一定要按通知中的amount金额为准</strong></span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4.3</strong></span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><span style="white-space:normal;font-size:14px;">CP应判断是否已发送道具</span></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<strong style="white-space:normal;font-size:14px;">2.4.4</strong>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><span style="white-space:normal;line-height:3;font-size:14px;">CP其他判断逻辑</span></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>2.4.5</strong></span>
</p>
<p>
<span style="line-height:2.5;font-size:14px;">处理完成后:</span><br />
<span style="line-height:2.5;font-size:14px;">希望SDK继续通知则返回任何非SUCCESS的字符</span><br />
<span style="line-height:3;font-size:14px;"><span style="line-height:2.5;">处理完毕,订单结束则返回</span><span style="color:#E53333;line-height:2.5;">SUCCESS(注意只能返回这7个字符,不能带其他符号)</span><span style="line-height:2.5;">,SDK不会再通知</span></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><span style="line-height:2.5;"><br />
</span></span>
</p>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<span style="font-size:14px;">3.</span><span style="white-space:pre;"> </span><span style="font-size:14px;">获取玩家游戏角色列表(选接)</span>
</h4>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>3.1</strong></span><span style="white-space:pre;"> </span><span style="font-size:14px;"><strong>接口目的</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;">在公众号/网页充值平台,玩家登录账号选择游戏角色列表。玩家选择角色后向该角色充值</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>3.2</strong></span><span style="white-space:pre;"> </span><span style="font-size:14px;"><strong>接口地址</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;">地址由游戏提供,SDK会主动向此地址发起POST请求</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>3.3 </strong></span><span style="font-size:14px;"><strong>请求方式</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;">POST</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;"><strong>3.4</strong></span><span style="white-space:pre;"> </span><span style="font-size:14px;"><strong>POST参数列表</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;">
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">参数</span><br />
</td>
<td>
<span style="font-size:14px;">类型</span>
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;"><span style="font-size:14px;"></span><span style="font-size:14px;">必要性</span></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">productCode</span>
</td>
<td>
<span style="font-size:14px;">string</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">必有</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">SDK产品ProductCode</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">frType</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">int</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">非必有</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:2;">获取角色方式,取枚举值,如果没有此字段默认以第1种方式获取角色列表</span><br />
<span style="font-size:14px;line-height:2;">1. 通过SDK账号UID获取,默认为此方式</span><br />
<span style="font-size:14px;line-height:2;">2. 通过角色ID获取</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;line-height:3;">roleId</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">string</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">非必有</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">用户角色ID,如果frType为2时,角色ID字段必有。游戏此时应该根据角色ID查询当前游戏的角色信息</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">uid</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">string</span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">非必有</span><span style="font-size:14px;"></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">用户SDK账号uid,如果frType为1时,uid字段必有。游戏此时应该根据SDK账号ID查询当前游戏的所有角色列表</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">username</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">string</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;"><span style="white-space:normal;font-size:14px;line-height:3;">非必有</span></span><br />
</td>
<td>
<span style="font-size:14px;line-height:3;">用户SDK账号名,如果frType为1时,username字段必有。游戏此时应该根据SDK账号ID查询当前游戏的所有角色列表</span><span style="font-size:14px;"></span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">sign</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;">string</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">签名值,游戏应根据签名约定,本地计算后与此值进行比对</span><br />
</td>
</tr>
</tbody>
</table>
<br />
</span><br />
<span style="font-size:14px;"><strong>3.5 </strong></span><span style="white-space:pre;"> </span><span style="font-size:14px;"><strong>返回字段说明</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;">游戏地址在接收到SDK请求之后返回玩家的角色信息列表,数据格式为json,返回字段如下:</span>
</p>
<p>
<br />
</p>
<p>
<span style="font-size:14px;">
<table style="width:100%;" cellpadding="2" cellspacing="0" border="1" bordercolor="#000000">
<tbody>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">参数</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必要性</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">说明</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;"><span style="line-height:3;">co</span><span style="font-size:14px;line-height:3;">de</span></span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:2;">200:请求成功</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;line-height:2;">其余值均为失败</span><br />
</td>
</tr>
<tr>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">data</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="white-space:normal;font-size:14px;line-height:3;">必有</span><br />
</td>
<td>
<span style="font-size:14px;line-height:2;">玩家角色列表集合,每个子集包含如下字段:</span><br />
<span style="font-size:14px;line-height:2;">serverId:区服ID</span><br />
<span style="font-size:14px;line-height:2;">serverName:区服名</span><br />
<span style="font-size:14px;line-height:2;">roleId:角色ID</span><br />
<span style="font-size:14px;line-height:2;">roleName:角色名</span><br />
<span style="font-size:14px;line-height:2;">roleLevel:角色等级</span><br />
<span style="font-size:14px;line-height:2;">sdkUid:当获取方式frType=2时,游戏应必须返回SDK的uid,否则可能会无法调起支付</span>
</td>
</tr>
</tbody>
</table>
<br />
</span><span style="white-space:pre;"> </span>
</p>
<p>
<span style="white-space:pre;"><span style="font-size:14px;color:#E53333;"><strong>提示:由于公众号网页支付的订单没有经过游戏下单,所以通知发货接口无法获取游戏的具体订单号。此时游戏给玩家发货时可获取SDK通知回调的extras_params参数的信息给具体玩家角色发放道具</strong></span></span>
</p>
<p>
<span style="white-space:pre;"><span style="font-size:14px;color:#E53333;"><strong>extras_params返回的格式为:区服ID|@|角色ID|@|商品ID</strong></span></span><span style="white-space:pre;"> </span>
</p>
<div style="white-space:nowrap;">
<br />
</div>
<p>
<br />
</p>
<p>
<span style="font-size:14px;"><strong>3.6 </strong></span><span style="font-size:14px;"><strong>签名算法</strong></span>
</p>
<p>
<span style="font-size:14px;"><br />
</span><span style="font-size:14px;line-height:2;">通信时,SDK会在请求中附带sign字段</span>
</p>
<p>
<span style="font-size:14px;line-height:2;">游戏将收到的POST参数移除sign字段后,按首字母升序排序</span><br />
<span style="font-size:14px;line-height:2;">将排序后的所有键值对按 key1=val1&key2=val2&key3=val3& 格式进行拼接</span><br />
<span style="font-size:14px;line-height:2;">在第2步拼接的字符后拼接SDK后台产品的callbackKey,则此时格式为:</span><br />
<span style="font-size:14px;line-height:2;">key1=val1&key2=val2&key3=val3&callbackKey</span><br />
<span style="font-size:14px;line-height:2;">将第3步处理的字符串进行md5编码,得到32位md5值</span><br />
<span style="font-size:14px;line-height:2;">将第4步获取的md5值与第1步中发起方传递的sign值进行对比,一致则通过</span>
</p>