认证信息参数和统一响应参数
<p>[TOC]</p>
<h5>简要描述</h5>
<ul>
<li>认证信息参数用于验证用户身份,涉及到的secretkey、userkey、appid需要由运营人员提供</li>
<li>统一响应参数返回请求结果、平台流水号、是否扣费</li>
</ul>
<h5>接口描述</h5>
<ul>
<li>请求方式:POST</li>
<li>编码方式:UTF-8</li>
<li>接口参数传递位置:请求体body</li>
<li>接口参数传递内容:认证信息参数(authinfo)和校验请求参数(param,具体查看产品接口文档)</li>
</ul>
<h5>认证信息参数(authinfo)</h5>
<table>
<thead>
<tr>
<th>参数名</th>
<th>是否必填</th>
<th>类型</th>
<th><div style="width: 400px"/>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>userkey</td>
<td>是</td>
<td>string</td>
<td>用户标识,32位,由运营人员提供</td>
</tr>
<tr>
<td>appid</td>
<td>是</td>
<td>string</td>
<td>应用标识,32位,由运营人员提供</td>
</tr>
<tr>
<td>timestamp</td>
<td>是</td>
<td>string</td>
<td>时间戳,14位,格式:yyyyMMddHHmmss,北京时间,24小时制</td>
</tr>
<tr>
<td>sign</td>
<td>是</td>
<td>string</td>
<td>认证签名,32位,根据本页章节 <code>获取sign</code> 进行加密</td>
</tr>
</tbody>
</table>
<h5>获取sign</h5>
<p>使用MD5对 secretkey、userkey、appid、timestamp字段拼接的字符串进行加密,例如:</p>
<pre><code>String SECRETKEY = "g8imy09du0y893uv03mu580c4mu5c341";
String USERKEY = "6be014da2c1f6b4140e2a12984960376";
String APPID = "f790e630a256667a9b25a433bf40481b";
String TIMESTAMP = "20190310121232";
String sign = MD5Util.md5(SECRETKEY + USERKEY + APPID +TIMESTAMP);</code></pre>
<p><code>MD5Util.md5</code>指通过MD5算法进行加密得到32位字符串。
上面的参数进行加密后结果是:<code>0fd62781d984abc1a840480d707d5cd2</code>,可用于获取sign的验证。</p>
<h5>请求示例</h5>
<h6>json</h6>
<p>下面的param以号码实时状态检测请求参数作为整体请求的示例,以便更好地展示整个请求内容的结构和关系。</p>
<pre><code>{
"authinfo": {
"appid": "607785267fb42ad9b5bb701ada446512",
"sign": "eb514ea44c6586664d04240ea51be20b",
"userkey": "36e2a500839a49653de14fc3d7a24812",
"timestamp": "20190523151159"
},
"param": {
"phone": "15001900000",
"servicecode": "1002"
}
}</code></pre>
<h6>multipart/form-data</h6>
<p>若接口可以上传文件(file),如:活体检测,则应为:</p>
<pre><code>appid=607785267fb42ad9b5bb701ada446512&
sign=eb514ea44c6586664d04240ea51be20b&
userkey=36e2a500839a49653de14fc3d7a24812&
timestamp=20190523151159&
videotype=URL&
url=http://file.service.com?id=432l4j424234jkhkhk23&
motion=BLINK</code></pre>
<h5>统一响应参数</h5>
<p>请求返回码及描述请查看页面 请查看页面 <a href="https://www.showdoc.cc/p/3a8247f25b01cb1f6f3023c82e491dab" title="请求返回码">请求返回码</a>。</p>
<table>
<thead>
<tr>
<th>参数名</th>
<th>是否必填</th>
<th>类型</th>
<th><div style="width: 400px"/>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>是</td>
<td>string</td>
<td>请求返回码</td>
</tr>
<tr>
<td>message</td>
<td>是</td>
<td>string</td>
<td>请求返回码描述</td>
</tr>
<tr>
<td>msgid</td>
<td>是</td>
<td>string</td>
<td>平台流水号</td>
</tr>
<tr>
<td>billing</td>
<td>是</td>
<td>string</td>
<td>是否计费,1:计费;0:不计费</td>
</tr>
<tr>
<td>data</td>
<td>否</td>
<td>json</td>
<td>每种产品具体的响应内容,只有当code为000时才有该参数</td>
</tr>
</tbody>
</table>
<h5>统一响应示例</h5>
<p>下面的data以号码实时状态检测响应参数作为整体请求的示例,以便更好地展示整个响应内容的结构和关系。</p>
<h6>请求成功</h6>
<pre><code>{
"code": "000",
"message": "请求成功",
"msgid": "7894415526266478932",
"billing": "1",
"data": {
"state": "1",
"desc": "正常"
}
}</code></pre>
<h6>请求失败</h6>
<pre><code>{
"code": "205",
"message": "认证签名错误",
"msgid": "162341552626641925",
"billing": "0"
}</code></pre>