891支付项目

891支付项目


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=&amp;quot;平台下发的DES3密钥&amp;quot;; String responseJson = &amp;quot;需要加密的数据&amp;quot;; String privateKey=&amp;quot;代理商自己的私钥&amp;quot;; String publickey=&amp;quot;平台公钥&amp;quot;; String data = Des3Encryption.encode(des3Key, responseJson);//加密数据 String signature = RSAUtil.sign(data, privateKey);//RSA得到签名 //组装请求参数的封装数据(可以根据自己的情况改动,这里只是作为演示) Map&amp;lt;String, Object&amp;gt; contentData = new HashMap&amp;lt;&amp;gt;(); contentData.put(&amp;quot;bizType&amp;quot;, agentReportVo.getBizType()); contentData.put(&amp;quot;signature&amp;quot;, signature); contentData.put(&amp;quot;data&amp;quot;, data); contentData.put(&amp;quot;agentNo&amp;quot;, agentReportVo.getAgentNo()); String responseJson1 = JSONObject.toJSONString(contentData); Map&amp;lt;String, Object&amp;gt; requestJsonMap1 = JSONObject.parseObject(responseJson1, Map.class); String responseResult = HttpUtil.doPostJson(&amp;quot;请求地址&amp;quot;, requestJsonMap1); //响应得到签名 String signature1 = (String) map.get(&amp;quot;signature&amp;quot;); //响应得到加密域数据 String responsedata = (String) map.get(&amp;quot;data&amp;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>{ &amp;quot;bizType&amp;quot;: &amp;quot;reportQueryItf&amp;quot;, &amp;quot;orderNo&amp;quot;: &amp;quot;20220709150614463&amp;quot;, &amp;quot;agentNo&amp;quot;: &amp;quot;AG00000000000012&amp;quot;, &amp;quot;data&amp;quot;: &amp;quot;v+QGzpFzCnjHZ+I/2+tfT6/+0y2kgXof0f4A0J8eOxFDTaLdL9NEzq2Wy+yV4NAHyeBA5QokxLsGMlLdSvl7dsAXT26Cag3xf3/5cFsKjBo=&amp;quot;, &amp;quot;signature&amp;quot;: &amp;quot;O+pXuU73QjKb9oCXcAvL1ZP1jZYrPTXSvqEOs1Ci7kPBuUb++GS7BKibznUXMomaLreMYm/e3srhgfmkVj5S8zQcE7cxmTTaOXrbUg8OyHVsHjrHmNJYBX9MJ4vycQB3r7NsqOcFM7C+b5Q/g/+PKVKMuP3e+M8Vv5rY/D8N20xEDDSeEsvUVKbK8WgVHKXbgA58FE4nMFEioUnPKp6yDaWcYCoa2ye8KGm5FEV8wlU751jAWrgrMhWpY4PXMQT7QZtMWWHQ45Z6YwQ16nOX6vA64k2a/A7kT+zUUtkx0CYz9CGle8zDjVo6LrUxtE2BbKNA8zUZuGKgzHbDHduM4w==&amp;quot;, &amp;quot;retCode&amp;quot;: &amp;quot;C0000&amp;quot;, &amp;quot;retMsg&amp;quot;: &amp;quot;成功&amp;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>

页面列表

ITEM_HTML