更新日期:2023年 03月 08日QuickGameSDK Server Access Document
<h3 style="white-space:normal;">
<span style="font-size:14px;">I. Brief description</span>
</h3>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:normal;font-size:14px;">1. This document is intended for game server developers who access and use the SDK users and payment systems.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">2. The SDK uses UTF8 encoding when communicating.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">3. Double-issue communication, if there is a sign field, the signature must be verified.</span><br style="white-space:normal;" />
<p style="white-space:normal;">
<br />
</p>
<p style="white-space:normal;">
<br />
</p>
<h3 style="white-space:normal;">
<span style="font-size:14px;">Ⅱ. Interface list</span>
</h3>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<h4 style="white-space:normal;">
<span style="font-size:14px;">1. Verify user information interface</span>
</h4>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">This interface is for iOS and Android platforms. H5 games do not need to call this interface<br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">1.1. Interface purpose</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">After the game client gets the uid from the SDK login callback, in order to prevent the user from tampering with the client and forging the user uid marker so as to log into other people's accounts, the game client should pass this information to the game server. The game server calls this interface to verify the authenticity of the uid to the SDK. If the uid passes the verification, the user will be allowed to log in, if not, the user will be denied the authorization to log in.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">1.2. Interface address</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">http://quickgame.sdk.quicksdk.net/webapi/checkUserInfo</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">1.3. Request method</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">GET/POST</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">1.4. Parameter List</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<table cellpadding="2" cellspacing="0" border="1" bordercolor="#000000" style="width:1009px;">
<tbody>
<tr>
<td>
<span style="font-size:14px;">Parameter</span><br />
</td>
<td>
<span style="font-size:14px;">Necessary</span><br />
</td>
<td>
<span style="font-size:14px;">Description</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">uid</span><br />
</td>
<td>
<span style="font-size:14px;">must</span><br />
</td>
<td>
<span style="font-size:14px;">be passed</span><span style="white-space:pre;"> </span><span style="font-size:14px;">The uid obtained from the client login callback</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">token</span><br />
</td>
<td>
<span style="font-size:14px;">must</span><br />
</td>
<td>
<span style="font-size:14px;">be passed</span><span style="white-space:pre;"> </span><span style="font-size:14px;">The token obtained from the client login callback, please note that the length of the token should not be truncated</span><br />
</td>
</tr>
</tbody>
</table>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:pre;"> </span><span style="white-space:pre;"> </span><br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;">1.</span><span style="font-size:14px;">5. Return field</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:normal;font-size:14px;">The interface will return a JSON formatted string</span><br style="white-space:normal;" />
<br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">Example 1 {"status":false,"message":"tokenUidError"}</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">Example 2 {"status":true,"message":""}</span><br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<table cellpadding="2" cellspacing="0" border="1" bordercolor="#000000" style="width:1009px;">
<tbody>
<tr>
<td>
<span style="font-size:14px;">Parameters</span><br />
</td>
<td>
<span style="font-size:14px;">Type</span><br />
</td>
<td>
<span style="font-size:14px;">Necessary</span><br />
</td>
<td>
<span style="font-size:14px;">Description</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">status</span><br />
</td>
<td>
<span style="font-size:14px;">bool</span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">Interface validation status, true if validated, false otherwise.</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">message</span><br />
</td>
<td>
<span style="font-size:14px;">string</span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">If status is false, message has a value and is an error message.</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">data</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">object</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">The data field is available only when status is true, it is user information, the object contains the following fields.</span><br />
<span style="font-size:14px;">uid: user uid</span><br />
<span style="font-size:14px;">isGuest: whether it is a guest account, 1 yes, 0 no.</span><br />
<span style="font-size:14px;">age: the age of the user, if the user has been authenticated to return the authenticated age, not authenticated to return 0</span><br />
</td>
</tr>
</tbody>
</table>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="white-space:pre;">1.</span><span style="font-size:14px;">6. Request example</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="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@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 style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<h4 style="white-space:normal;">
<span style="font-size:14px;">2. Issuing props interface</span>
</h4>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.1. Interface purpose</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:normal;font-size:14px;">After the player finishes topping up, SDK will POST data to the shipping address provided by the game according to this interface protocol (referred to as sending notification), the game shall verify the relevant information and send props to the player after receiving the data from SDK POST.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">a) The game should verify the signature data according to the algorithm in Section 2.4.2 below to determine whether the request is legal.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">b) <span style="color:#E53333;"><strong>The game shall ship the props with the amount in the notification.</strong></span></span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">c) The game shall determine whether the props are issued repeatedly, and if they have been issued, they cannot be issued again.</span><br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;">d) Return<span style="color:#E53333;"><strong> SUCCESS</strong></span> after successful processing these 7 letters SDK will no longer notify, otherwise SDK will continue to notify within a period.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.2. Interface address</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">Issuing props address provided by the game, the SDK will initiate a POST request to this address.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.3. Request method</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">POST</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.4. POST parameter list</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:normal;font-size:14px;">SDK will POST 3 parameters to the game server:</span><span style="white-space:normal;font-size:14px;">nt_data and sign and md5Sign</span><br style="white-space:normal;" />
<br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;">All parameters are encoded ciphertext. Use the callbackkey obtained from the backend to decode the ciphertext</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">nt_data is decoded (see the provided demo for decoding method) </span><span style="font-size:14px;">then it is an xml string</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">For example:</span>
</p>
<p style="white-space:normal;">
<span style="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 style="white-space:normal;" />
<p style="white-space:normal;">
<br />
</p>
<br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;">The meanings of the fields are as follows:</span>
</p>
<table cellpadding="2" cellspacing="0" border="1" bordercolor="#000000" style="width:1009px;">
<tbody>
<tr>
<td>
<span style="font-size:14px;">Par</span><span style="font-size:14px;">am</span><span style="font-size:14px;">eter</span><br />
</td>
<td>
<span style="font-size:14px;">Necess</span><span style="font-size:14px;">ary</span><br />
</td>
<td>
<span style="font-size:14px;">D</span><span style="font-size:14px;">escription</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">uid</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">mu</span><span style="font-size:14px;">s</span><span style="font-size:14px;">t </span><span style="font-size:14px;">be pa</span><span style="font-size:14px;">ssed</span><br />
</td>
<td>
<span style="font-size:14px;">The uid of the user who purchased the prop</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">l</span><span style="font-size:14px;">ogin_n</span><span style="font-size:14px;">ame</span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">User username of the purchased item</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">out_order_no</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">Can be empty</span><br />
</td>
<td>
<span style="font-size:14px;">The game order number passed when the game order was placed, returned as is</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">order_no</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">SDK unique order number</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">pay_time</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must hav</span><span style="font-size:14px;">e</span><br />
</td>
<td>
<span style="font-size:14px;">the</span><span style="font-size:14px;"> user payment time, such as 2017-02-06 14:22:32</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;color:#E53333;"><strong>amount</strong></span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;color:#E53333;"><strong>must have</strong></span><br />
</td>
<td>
<span style="white-space:pre;"> </span><span style="font-size:14px;color:#E53333;"><strong>the amount paid by the user</strong></span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">extras_params</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">the parameters passed through when the client placed the order, return as is</span><br />
</td>
</tr>
</tbody>
</table>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="white-space:pre;">2.4.</span><span style="font-size:14px;">1</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">CP should determine whether the props have been sent. </span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.4.2</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">CP should determine whether the signature is consistent.</span>
</p>
<span style="white-space:normal;font-size:14px;">Judgment method for CP to calculate the local signature localSign = md5(nt_data + sign + md5Key)</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">Compare the local calculation result with the md5Sign in the notification is consistent. Failure to match should return failure.</span><br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;color:#E53333;"><strong>Note: The original text of nt_data, sign, and md5Key are directly spliced without adding splice characters and without decoding nt_data.</strong></span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.4.3</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">CP other judgment logic.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">2.4.4</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">After processing is completed.</span>
</p>
<span style="white-space:normal;font-size:14px;">a)If you want the SDK to continue to notify you, return any non-SUCCESS characters.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">b)When the processing is finished, the order ends, then SUCCESS is returned and SDK will not notify again.</span><br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<h4 style="white-space:normal;">
<span style="font-size:14px;">3. Get the list of player game characters (optional connection)</span>
</h4>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">3.1. Interface purpose</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">In the public web recharge platform players log in to their accounts to select a list of game roles. Players select a role and then recharge to that role.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">3.2. Interface address</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">The address is provided by the game, and the SDK will initiate a POST request to this address</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">3.3. Interface address</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">POST</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">3.4. POST parameter list</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<table cellpadding="2" cellspacing="0" border="1" bordercolor="#000000" style="width:1009px;">
<tbody>
<tr>
<td>
<span style="font-size:14px;">Parameter</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">Necessary</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">Des</span><span style="font-size:14px;">cription</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">uid</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">m</span><span style="font-size:14px;">ust have</span><br />
</td>
<td>
<span style="white-space:pre;"> </span><span style="font-size:14px;">User SDK account uid</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">user</span><span style="font-size:14px;">name</span><br />
</td>
<td>
<span style="font-size:14px;">m</span><span style="font-size:14px;">ust have</span><br />
</td>
<td>
<span style="font-size:14px;">User SDK account name</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">productCode</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">m</span><span style="font-size:14px;">ust have</span><br />
</td>
<td>
<span style="font-size:14px;">SDK productCode</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">si</span><span style="font-size:14px;">gn</span><br />
</td>
<td>
<span style="font-size:14px;">m</span><span style="font-size:14px;">ust have</span><br />
</td>
<td>
<span style="font-size:14px;">Signature value, the game should be compared with this value after local calculation according to the signature convention.</span><br />
</td>
</tr>
</tbody>
</table>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;">3.5. Return field description</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<span style="white-space:normal;font-size:14px;">The game address returns the list of player's role information after receiving the SDK request, the data format is json, the return fields are as follows.</span><br style="white-space:normal;" />
<br style="white-space:normal;" />
<p style="white-space:normal;">
<br />
</p>
<table cellpadding="2" cellspacing="0" border="1" bordercolor="#000000" style="width:1009px;">
<tbody>
<tr>
<td>
<span style="font-size:14px;">Parameter</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">Necessary</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">De</span><span style="font-size:14px;">scription</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">code</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">200: the request is successful</span><br />
<span style="font-size:14px;">must have</span><span style="white-space:pre;"> </span><span style="font-size:14px;">Each subset contains the following fields</span><br />
</td>
</tr>
<tr>
<td>
<span style="font-size:14px;">data</span><span style="white-space:pre;"> </span><br />
</td>
<td>
<span style="font-size:14px;">must have</span><br />
</td>
<td>
<span style="font-size:14px;">Each subset contains the following fields.</span><br />
<span style="font-size:14px;">serverId: ID of the zone</span><br />
<span style="font-size:14px;">serverName: name of the zone</span><br />
<span style="font-size:14px;">roleId: role ID</span><br />
<span style="font-size:14px;">roleName: role name</span><br />
<span style="font-size:14px;">roleLevel: role level</span><span style="font-size:14px;"></span><br />
</td>
</tr>
</tbody>
</table>
<p style="white-space:normal;">
<br />
</p>
<br style="white-space:normal;" />
<br style="white-space:normal;" />
<br style="white-space:normal;" />
<p style="white-space:normal;">
<span style="font-size:14px;color:#E53333;"><strong>Tip: Since the orders paid by the public web page have not been placed by the game, the notification shipping interface cannot get the specific order number of the game. At this time, the game can get the information of the extras_params parameter of the SDK notification callback to issue props to the specific player role. extras_params returns the format of "zone ID|@|role ID|@|commodity ID".</strong></span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">3.6. Signature algorithm</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;"><br />
</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">When communicating, the SDK will attach the sign field to the request. The game removes the sign field from the received POST parameters and sorts them in ascending order by first letter.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">All the sorted key-value pairs are spliced in the format of key1=val1&key2=val2&key3=val3&.</span>
</p>
<p style="white-space:normal;">
<span style="font-size:14px;">Splice the callbackKey of the SDK backend product after the characters spliced in step 2, then the format at this point is</span>
</p>
<span style="white-space:normal;font-size:14px;">key1=val1&key2=val2&key3=val3&callbackKey</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">The string processed in step 3 will be md5 encoded to get 32-bit md5 value.</span><br style="white-space:normal;" />
<span style="white-space:normal;font-size:14px;">Compare the md5 value obtained in step 4 with the sign value passed by the initiator in step 1, and pass.</span><br style="white-space:normal;" />
<br style="white-space:normal;" />
<br style="white-space:normal;" />
<br style="white-space:normal;" />
<br style="white-space:normal;" />