交互总体说明
<p>[TOC]</p>
<h5>基础说明</h5>
<ul>
<li>接口中的地址,为我司处理数据的地址以及基础的字段,同理适用于对接方,对接方只需要告知接收对应业务的地址即可,我司将按照接口原样传输对应数据;</li>
</ul>
<h5>加密传输规则</h5>
<ul>
<li>使用RSA2048位加密公私钥对,敏感信息使用DES3加密传输,如有必要可以加入IP白名单规则;</li>
<li>RSA生成可以百度,也可以参考支付宝官方生成的方式:<a href="https://docs.zhifux.com/read/zhifufm/alipayrsa">https://docs.zhifux.com/read/zhifufm/alipayrsa</a></li>
</ul>
<h5>Java代码请求示例</h5>
<pre><code>String des3Key=&quot;双方约定的DES3密钥&quot;;
String responseJson = &quot;需要加密的数据&quot;;
String privateKey=&quot;客户自己的私钥&quot;;
String publickey=&quot;恒强的公钥&quot;;
String data = Des3Encryption.encode(des3Key, responseJson);//加密数据
String signature = RSAUtil.sign(data, privateKey);//RSA得到签名
//组装请求参数的封装数据(可以根据自己的情况改动,这里只是作为演示)
Map&lt;String, Object&gt; contentData = new HashMap&lt;&gt;();
contentData.put(&quot;signature&quot;, signature);
contentData.put(&quot;data&quot;, data);
String responseJson1 = JSONObject.toJSONString(contentData);
Map&lt;String, Object&gt; requestJsonMap1 = JSONObject.parseObject(responseJson1, Map.class);
String responseResult = HttpUtil.doPostJson(&quot;请求地址&quot;, requestJsonMap1);
//响应得到签名
String signature1 = (String) map.get(&quot;signature&quot;);
//响应得到加密域数据
String responsedata = (String) map.get(&quot;data&quot;);
if (!StringUtils.isBlank(signature1)) {
boolean b = RSAUtil.verify(responsedata, publickey, signature1);//进行验签
}
</code></pre>
<h5>请求参数说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
<th>必传</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">signature</td>
<td style="text-align: left;">string</td>
<td>请求的签名数据</td>
<td>是</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">string</td>
<td>请求加密数据</td>
<td>是</td>
</tr>
</tbody>
</table>
<h5>7.java返回参数样例</h5>
<pre><code>{
&quot;bizType&quot;: &quot;XXXXXAAA&quot;,
&quot;data&quot;: &quot;v+QGzpFzCnjHZ+I/2+tfT6/+0y2kgXof0f4A0J8eOxFDTaLdL9NEzq2Wy+yV4NAHyeBA5QokxLsGMlLdSvl7dsAXT26Cag3xf3/5cFsKjBo=&quot;,
&quot;signature&quot;: &quot;O+pXuU73QjKb9oCXcAvL1ZP1jZYrPTXSvqEOs1Ci7kPBuUb++GS7BKibznUXMomaLreMYm/e3srhgfmkVj5S8zQcE7cxmTTaOXrbUg8OyHVsHjrHmNJYBX9MJ4vycQB3r7NsqOcFM7C+b5Q/g/+PKVKMuP3e+M8Vv5rY/D8N20xEDDSeEsvUVKbK8WgVHKXbgA58FE4nMFEioUnPKp6yDaWcYCoa2ye8KGm5FEV8wlU751jAWrgrMhWpY4PXMQT7QZtMWWHQ45Z6YwQ16nOX6vA64k2a/A7kT+zUUtkx0CYz9CGle8zDjVo6LrUxtE2BbKNA8zUZuGKgzHbDHduM4w==&quot;,
&quot;retCode&quot;: &quot;C0000&quot;,
&quot;retMsg&quot;: &quot;成功&quot;
}</code></pre>
<h5>8.返回参数说明</h5>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th style="text-align: left;">说明</th>
<th style="text-align: left;">是否必返</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">bizType</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">请求的接口</td>
<td style="text-align: left;">是</td>
</tr>
<tr>
<td style="text-align: left;">data</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">加密信息域,需要解密</td>
<td style="text-align: left;">否</td>
</tr>
<tr>
<td style="text-align: left;">signature</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">签名域</td>
<td style="text-align: left;">否</td>
</tr>
<tr>
<td style="text-align: left;">retCode</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">返回码</td>
<td style="text-align: left;">是</td>
</tr>
<tr>
<td style="text-align: left;">retMsg</td>
<td style="text-align: left;">String</td>
<td style="text-align: left;">返回信息</td>
<td style="text-align: left;">是</td>
</tr>
</tbody>
</table>
<h5>备注</h5>
<ul>
<li>retCode返回码解释如下:C5555:系统处理失败,C9999:系统异常,C0000:处理成功,其余返回码均表示具体的业务失败原因;</li>
</ul>