千行OSP

千行OSP对外接口


1.0 API接入说明

<p>[TOC]</p> <h4>接入流程</h4> <ul> <li> <p>测试联调:接口对接 -&gt; 联调测试 -&gt; 对接完成;以下是测试环境联调参数: &gt; 渠道编号<strong>(channelNo)</strong>:<code>DC1780</code> &gt; 账户编号<strong>(accountId)</strong>:<code>1560</code> &gt; 接口密钥<strong>(apiKey)</strong>:<code>qk2KX7mHTdeqHZtw</code> &gt; 产品编号<strong>(itemId)</strong>:<code>1001(联通冲浪卡-不选号)</code> 或 <code>1002(联通冲浪卡-选号)</code> &gt; 省份编码<strong>(provinceNo)</strong>:<code>51(四川省)</code> &gt; 地市编码<strong>(cityNo)</strong>:<code>5105(泸州市)</code></p> </li> <li>正式上线:联系运营 -&gt; 获取生产环境参数 -&gt; 配置推送地址 -&gt; 生产下单测试 -&gt; 测试完成 -&gt; 上线</li> </ul> <h4>接口说明</h4> <ul> <li>选号归属地、收货地址可使用接口1.1,1.2,也可使用离线数据:<strong>[prov-city-area.csv](<a href="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4f99e23dcdb523dee1bdf7aafaaf080d">https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4f99e23dcdb523dee1bdf7aafaaf080d</a> &quot;[prov-city-area.csv&quot;)</strong></li> <li>不选号产品必须对接:1.6,1.10</li> <li>选号产品必须对接:1.3,1.7,1.8,1.10(1.9接口可选择接入) <strong>注1:根据不同产品类型,选择性接入1.4,1.5;如不选号产品也要校验一证五户和风控则必须接入1.3接口</strong> <strong>注2:1.4接口仅支持联通、广电直连产品,1.5仅支持联通直连产品,对接前请先咨询要合作的产品</strong> <strong>注3:通知推送接口1.10上线前需联系运营或技术配置推送地址</strong></li> </ul> <h4>签名规则</h4> <ul> <li>除下单接口外其他接口不做签名校验</li> <li>签名规则:传入参数字典序排序后使用=&amp;符号拼接,再追加分配给合作方的apiKey,再对字符串做MD5签名,签名结果不区分大小写;如:md5(key1=value1&amp;key2=value2......keyn=valuen&amp;apiKey) <strong>注1:值为空的字段不参与签名,请勿传递空值字段以避免签名错误</strong> <strong>注2:签名时userParams字段JSON请不要转义</strong></li> </ul> <h4>Java签名示例</h4> <pre><code> public static String createSign(Map&amp;lt;String, Object&amp;gt; params, String appKey) { List&amp;lt;Map.Entry&amp;lt;String, Object&amp;gt;&amp;gt; list = new ArrayList&amp;lt;&amp;gt;(params.entrySet()); list.sort(Map.Entry.comparingByKey()); StringBuilder sb = new StringBuilder(); for (Map.Entry&amp;lt;String, Object&amp;gt; entry : list) { String value = (entry.getValue() == null) ? &amp;quot;&amp;quot; : entry.getValue().toString(); if (!&amp;quot;sign&amp;quot;.equalsIgnoreCase(entry.getKey()) &amp;amp;&amp;amp; StrUtil.isNotEmpty(value)) { sb.append(entry.getKey()).append(&amp;quot;=&amp;quot;).append(value).append(&amp;quot;&amp;amp;&amp;quot;); } } sb.append(appKey); String signSrc = sb.toString(); String signDst = cn.hutool.crypto.SecureUtil.md5(signSrc).toUpperCase(); return signDst; } </code></pre> <p><strong>常用API响应码</strong></p> <ul> <li>100-操作成功</li> <li>200-操作失败</li> <li>900-系统异常</li> <li>[其他](<a href="https://www.showdoc.com.cn/qxosp/9750883487453965">https://www.showdoc.com.cn/qxosp/9750883487453965</a> &quot;其他&quot;)</li> </ul>

页面列表

ITEM_HTML