合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 接口规范 * 数据传输必需使用`POST`方式提交`JSON`格式 * `API`通过签名进行验证,具体签名方法进入下面的`签名规则` * 参数中的`data`必需是一维数组,也可以传空数组 * 数据提交标准数据格式 如下: ```JSON { "code": "商户标识", "sign": "32位签名", "data": { "key1": "value1", "key2": "value2", "key3": "value3" } } ``` * 接口数据返回标准格式 如下: ```JSON { "msg": "返回提示消息内容", "code": "状态代码", "sign": "32位数据签名", "type": "JSON", "data": { "key1":"value1", "key2":"value2", "key3":"value3" } } ``` ## 数据签名规则 第一步,设所有发送或者接收到的数据为集合`M`,将集合M内非空参数值的参数按照参数名`ASCII`码从小到大排序(字典序),将所有值拼接成字符串`stringA`(即value1value2value3...)【仅字符串类型的参数参与签名】 #### 特别注意以下重要规则: * 参数名`ASCII`码从小到大排序(字典序); * 参数名不区分大小写; * 验证调用返回或主动通知签名时,传送的参数仅`data`参与签名,将生成的签名与该`sign`值作校验。 * 接口可能增加字段,验证签名时必须支持增加的扩展字段 * 下面使用到的`ApiKey`需要在平台获取 第二步,在`stringA`最后拼接上`ApiKey`得到`stringSignTemp`字符串(stringSignTempApiKey),并对`stringSignTemp`进行MD5运算,再将得到的字符串所有字符转换为大写,得到`sign`值`signValue` #### PHP生成签名DEMO ```php /** * 接口数据签名 * @param array $data 需要传输的数据 * @param string $apikey 接口ApiKey * @return string */ function signData(&$data, $apikey = '', $prefix = '') { $data['_SIGNSTR_'] = strtoupper(isset($data['_SIGNSTR_']) ? $data['_SIGNSTR_'] : substr(md5(uniqid()),22)); ksort($data); foreach (array_values($data) as $string) { is_array($string) || ($prefix .= "{$string}"); } return strtoupper(md5($prefix . $apikey . $data['_SIGNSTR_'])); } ``` ## API请求示例 具体参考会在接口处说明 ~~~[api] post:http://315.cuci.cc/code/api/test.html *code=默认值#商户编号,需要在平台获取 *sign=签名值#数据签名,需要使用签名规则进行签名 *array:data=数据对象#需要提交数据(一维数组) <<< 接口成功 { "msg": "提交成功", "code": "SUCCESS", "sign": "32位数据签名", "type": "JSON", "data": { "key1":"value1", "key2":"value2", "key3":"value3" } } <<< 商户异常 { "msg": "商户不存在, 请传入正确的商户!", "code": "ERROR", "sign": "32位数据签名", "type": "JSON", "data": [] } <<< 签名异常 { "msg": "签名错误, 请检查数据内容是否正确!", "code": "ERROR", "sign": "32位数据签名", "type": "JSON", "data": [] } <<< 验证异常 { "msg": "签名数据与商户ApiKey不匹配!", "code": "ERROR", "sign": "32位数据签名", "type": "JSON", "data": [] } <<< 数据异常 { "msg": "数据格式错误!", "code": "ERROR", "sign": "32位数据签名", "type": "JSON", "data": [] } ~~~