企业外部第三方接入流程

1.环境地址

正式环境域名: https://cop.caocaokeji.cn

沙箱环境域名: https://sandbox-cop.caocaokeji.cn

2.对接流程

1、首先确保在开放平台申请应用获取client_id和sign_key(非常重要)

申请地址:https://open.caocaokeji.cn/ocean/login

2.接口调试

2.1 签名认证(防止参数篡改)
签名方式:SHA1 MD5

加签参数 是否必须加签 备注
client_id 曹操申请的client_id
sign_key 秘钥
timestamp 时间戳
业务参数 具体对待 业务参数

1.生成签名时将sign_key加入传递的参数,参与签名;
2.将所有的参数按照key值按字符升序排列(key1value1key2value2),生成小写的签名作为sign;
3.生成sign后,sign与其他的参数一同传递;
4.sign_key不参与传递;
5.timestamp时间戳为毫秒,例如 timestamp=1508240915308
注:access_token 方式接入时 access_token 不参与加签(参与传递),仍然是 client_id 参与加签(不参与传递)

Java 加签示例:

@Override
public String sign(Map<String, Object> params, String signKey) throws Exception {
    params.put(SIGN_KEY, signKey);
    Map<String, String> needVerify = new HashMap<>();
    for (Map.Entry<String, Object> entry : params.entrySet()) {
       needVerify.put(entry.getKey(), String.valueOf(entry.getValue()));
    }
    List<Map.Entry<String, String>> entryList = new ArrayList<>(needVerify.entrySet());
    //排序
    Collections.sort(entryList, (o1, o2) -> o1.getKey().compareTo(o2.getKey()));
    StringBuilder buffer = new StringBuilder();
    for (Map.Entry<String, String> entry : entryList) {
       buffer.append(entry.getKey()).append(entry.getValue());
    }
    logger.info("sha1 签名参数:{}", buffer.toString());
    return SHA.encodeBySHA(buffer.toString());
}

2.2、请求服务

请求地址: /v2/xxxx/xxxx

服务协议: HTTP/(POST or GET)

Content-Type: application/x-www-form-urlencoded

请求参数:

参数 是否必传 备注
client_id 曹操申请的client_id
sign 参数加签之后结果
timestamp 时间戳 毫秒 (过期为5分钟)
其他业务参数

2.3、返回结果:

参数 必有 备注
code success code:200
success 是否成功
msg 提示信息
data 结果消息体