1.1 接口调用规则
<p>[TOC]</p>
<h5>1.简要描述</h5>
<ul>
<li>这里主要描述系统进行交互的基本规则,以及安全校验;我司官方网址:<a href="https://www.891tech.com/">https://www.891tech.com/</a>.</li>
</ul>
<h5>2.请求URL</h5>
<ul>
<li>
<p>测试地址:<code>http://pay.test.891tech.com/website/agent/isv/</code></p>
</li>
<li>
<p>正式地址:<code>http://pay.891tech.com/website/agent/isv/</code></p>
</li>
<li>上述是请求接口的前段地址,每个业务需要加上对应的业务地址;目前不管正式还是测试,均是生产地址,只需用一个即可;</li>
</ul>
<h5>3.请求方式</h5>
<ul>
<li>POST,其中 Content-Type:【application/json; charset=UTF-8】</li>
</ul>
<h5>4.加密传输规则</h5>
<ul>
<li>使用RSA2048位加密公私钥对,敏感信息使用DES3加密传输,商户入网成功以后会下发平台公钥(代理也需要提供自己的公钥),以及对应业务的IP地址,同时系统需要当前代理商请求的IP地址,作为白名单;</li>
<li>RSA生成可以百度,也可以参考支付宝官方生成的方式:<a href="https://docs.zhifux.com/read/zhifufm/alipayrsa">https://docs.zhifux.com/read/zhifufm/alipayrsa</a></li>
</ul>
<h5>5.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;bizType&quot;, agentReportVo.getBizType());
contentData.put(&quot;signature&quot;, signature);
contentData.put(&quot;data&quot;, data);
contentData.put(&quot;agentNo&quot;, agentReportVo.getAgentNo());
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>6.请求参数说明</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;">bizType</td>
<td style="text-align: left;">string</td>
<td>请求的接口</td>
<td>是</td>
</tr>
<tr>
<td style="text-align: left;">agentNo</td>
<td style="text-align: left;">string</td>
<td>请求的代理商编号</td>
<td>是</td>
</tr>
<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;reportQueryItf&quot;,
&quot;orderNo&quot;: &quot;20220709150614463&quot;,
&quot;agentNo&quot;: &quot;AG00000000000012&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;">agentNo</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;">orderNo</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>