融赋通平台商户API接口

岭世科技融赋通平台是岭世科技面向自由职业者结算报税需求的专业平台,其支持具有开发能力的企业商户通过API接口调用方式获取以下服务. PS: 第二章和第三章主要说明对接API前期所需的一些准备工作; 第四章平台服务接口规范对平台开放的API进行了详细说明; 第五章对API的签名加密规则和返回码进行详细说明; 第六章 补充说明中,对于接口开发流程做了详细描述,请注意阅读; 第七章 API账号信息[测试环境]中,提供了测试环境参数可直接拿来调试用;


1、服务接口公共报文域-签名生成

<h1>1、上送报文的公共报文域</h1> <p>定义说明:</p> <table> <thead> <tr> <th>报文域</th> <th>格式</th> <th>最大长度</th> <th>必输</th> <th>含义</th> <th>备注</th> </tr> </thead> <tbody> <tr> <td>merchant_id</td> <td>String</td> <td>50</td> <td>Y</td> <td>商户ID</td> <td>由融赋通分配</td> </tr> <tr> <td>partner_id</td> <td>String</td> <td>50</td> <td>Y</td> <td>代理渠道ID</td> <td>由融赋通分配</td> </tr> <tr> <td>timestamp</td> <td>String</td> <td>17</td> <td>Y</td> <td>当前时间戳,格式为yyyyMMddHHmmssSSS</td> <td>由商户系统产生</td> </tr> <tr> <td>sign_type</td> <td>String</td> <td>10</td> <td>Y</td> <td>签名类型SHA256</td> <td>与商户服务平台中配置一致</td> </tr> <tr> <td>sign</td> <td>String</td> <td>1024</td> <td>Y</td> <td>生成签名的base64编码</td> <td>按约定生成</td> </tr> </tbody> </table> <h1>2、签名sign生成约定</h1> <h2>1)、上送报文,加签前(举例)</h2> <pre><code>{ &amp;quot;merchant_id&amp;quot;: &amp;quot;testMerchant001&amp;quot;, &amp;quot;partner_id&amp;quot;: &amp;quot;RFT&amp;quot;, &amp;quot;timestamp&amp;quot;: &amp;quot;20180924235824387&amp;quot;, &amp;quot;sign_type&amp;quot;: &amp;quot;SHA256&amp;quot; }</code></pre> <h2>2)、把所有参数根据参数名k排序(升序)并拼接</h2> <pre><code>merchant_id=testMerchant001&amp;amp;partner_id=RFT&amp;amp;sign_type=SHA256&amp;amp;timestamp=20180924235824387</code></pre> <h2>3)、追加签名密钥signGenerationKey(如:key=282b00eb561b455caac86925c6xxxxxx)</h2> <p>merchant_id=testMerchant001&amp;partner_id=RFT&amp;sign_type=SHA256&amp;timestamp=20180924235824387&amp;key=282b00eb561b455caac86925c6xxxxxx</p> <h2>4)、生成签名并base64</h2> <pre><code>0g02YUW2fRRrAaMlYrwUmVAS1rb6loTJQ+4ffFNB7DM=</code></pre> <h2>5)、最终上送报文</h2> <pre><code>{ &amp;quot;merchant_id&amp;quot;: &amp;quot;testMerchant001&amp;quot;, &amp;quot;partner_id&amp;quot;: &amp;quot;RFT&amp;quot;, &amp;quot;timestamp&amp;quot;: &amp;quot;20180924235824387&amp;quot;, &amp;quot;sign_type&amp;quot;: &amp;quot;SHA256&amp;quot;, &amp;quot;sign&amp;quot;: &amp;quot;0g02YUW2fRRrAaMlYrwUmVAS1rb6loTJQ+4ffFNB7DM=&amp;quot; }</code></pre> <h1>3、生成签名核心代码参考</h1> <pre><code>/** * 参数排序 * @param values * @return 排序后输出String */ private static String getSortKVStr(Map&amp;lt;String, Object&amp;gt; values) { List&amp;lt;String&amp;gt; keys = new ArrayList&amp;lt;&amp;gt;(values.keySet()); Collections.sort(keys); StringBuilder sb = new StringBuilder(); for (String key : keys) { //附件不参与签名验签 if (&amp;quot;file&amp;quot;.equals(key)) { continue; } Object value = values.get(key); if (value == null) { continue; } if (&amp;quot;&amp;quot;.equals(value)) continue; if (sb.length() &amp;gt; 0) sb.append('&amp;amp;'); sb.append(key).append(&amp;quot;=&amp;quot;).append(value); } String sortKVStr = sb.toString(); System.out.println(&amp;quot;sort kv string for sign:&amp;quot; + sortKVStr); return sortKVStr; } public static void main(String[] args) { try { String signGenerationKey = &amp;quot;282b00eb561b455caac86925c6xxxxxx&amp;quot;; // 举例输入参数 String param = &amp;quot;{\n&amp;quot; + &amp;quot;\t\&amp;quot;merchant_id\&amp;quot;: \&amp;quot;testMerchant001\&amp;quot;,\n&amp;quot; + &amp;quot;\t\&amp;quot;partner_id\&amp;quot;: \&amp;quot;RFT\&amp;quot;,\n&amp;quot; + &amp;quot;\t\&amp;quot;timestamp\&amp;quot;: \&amp;quot;20180924235824387\&amp;quot;,\n&amp;quot; + &amp;quot;\t\&amp;quot;sign_type\&amp;quot;: \&amp;quot;SHA256\&amp;quot;\n&amp;quot; + &amp;quot;}&amp;quot;; JSONObject jsonObject = JSON.parseObject(param); // 参数排序 String paramSort = getSortKVStr(jsonObject); System.out.println(paramSort); // 追加签名密钥signGenerationKey String paramSortAppendkey = paramSort + &amp;quot;&amp;amp;key=&amp;quot; + signGenerationKey; System.out.println(paramSortAppendkey); MessageDigest digest = MessageDigest.getInstance(&amp;quot;SHA-256&amp;quot;); // 执行加签转base64 byte[] paramHash = digest.digest(paramSortAppendkey.getBytes(StandardCharsets.UTF_8)); String base64Sign = Base64.getEncoder().encodeToString(paramHash); System.out.println(&amp;quot;Base64 encoded SHA256 hash: &amp;quot; + base64Sign); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } }</code></pre>

页面列表

ITEM_HTML