融赋通平台商户API接口V1.0.3

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


2.回调验签

<h1>1、验证签名过程</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;, &amp;quot;sign&amp;quot;: &amp;quot;0g02YUW2fRRrAaMlYrwUmVAS1rb6loTJQ+4ffFNB7DM=&amp;quot; }</code></pre> <h2>2)、临时保存&quot;sign&quot;值,去除&quot;sign&quot;后把所有参数根据参数名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)、追加验证签名密钥signVerificationKey(从融赋通获取,如:key=282b00eb561b455caac86925c6xxxxxx)</h2> <pre><code>merchant_id=testMerchant001&amp;amp;partner_id=RFT&amp;amp;sign_type=SHA256&amp;amp;timestamp=20180924235824387&amp;amp;key=282b00eb561b455caac86925c6xxxxxx</code></pre> <h2>4)、生成签名并base64</h2> <pre><code>0g02YUW2fRRrAaMlYrwUmVAS1rb6loTJQ+4ffFNB7DM=</code></pre> <h2>5)、验证传回签名(步骤2中&quot;sign&quot;)与当前生成是否一致</h2> <h1>2、验证签名代码参考</h1> <pre><code> public static void main(String[] args) { // 从融赋通获取 String signVerificationKey = &amp;quot;282b00eb561b455caac86925c6xxxxxx&amp;quot;; // 举例回调传入参数 String param = &amp;quot;{\n&amp;quot; + &amp;quot; \&amp;quot;merchant_id\&amp;quot;: \&amp;quot;testMerchant001\&amp;quot;,\n&amp;quot; + &amp;quot; \&amp;quot;partner_id\&amp;quot;: \&amp;quot;RFT\&amp;quot;,\n&amp;quot; + &amp;quot; \&amp;quot;timestamp\&amp;quot;: \&amp;quot;20180924235824387\&amp;quot;,\n&amp;quot; + &amp;quot; \&amp;quot;sign_type\&amp;quot;: \&amp;quot;SHA256\&amp;quot;,\n&amp;quot; + &amp;quot; \&amp;quot;sign\&amp;quot;: \&amp;quot;0g02YUW2fRRrAaMlYrwUmVAS1rb6loTJQ+4ffFNB7DM=\&amp;quot;\n&amp;quot; + &amp;quot;}\n&amp;quot;; JSONObject jsonObject = JSON.parseObject(param); String verifySign = jsonObject.getString(&amp;quot;sign&amp;quot;); jsonObject.remove(&amp;quot;sign&amp;quot;); // 参数排序 String paramSort = getSortKVStr(jsonObject); System.out.println(paramSort); // 追加签名密钥signGenerationKey String paramSortAppendkey = paramSort + &amp;quot;&amp;amp;key=&amp;quot; + signVerificationKey; System.out.println(paramSortAppendkey); try { 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;验证签名结果: &amp;quot; + verifySign.equals(base64Sign)); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } /** * 参数排序 * @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 || &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; }</code></pre>

页面列表

ITEM_HTML