1.在企业-数据集成中新建Webhook自建应用。

2.审核成功后编辑该应用,配置第三方回调接口地址及参数类型。

3.在具体业务逻辑插入使用该Webhook功能。根据该Webhook自建应用参数配置封装对应参数并请求Webhook服务http接口:webhook服务地址+/api/webhook/hook

4.第三方回调接口。

webhook服务向第三方回调接口发送请求(Post请求)时,会使用授权密钥生成消息内容的 hmac sha256 hex 摘要签名,携带在 header 中。

签名生成方法

注意事项


鉴权代码参考

以java代码为例

/**
 * 生成signature方法 CHARSET=utf-8
 * param data 参数map
 * param secrect 密钥
 */
public static String HmacSha256(SortedMap<String, Object> data, String secrect) {
    byte[] hash = new byte[0];
    try {
        String stringToSign = canonicalize(data);
        Mac mac = Mac.getInstance(HmacSHA256);
        SecretKeySpec secretKeySpec = new SecretKeySpec(secrect.getBytes(CHARSET), mac.getAlgorithm());
        mac.init(secretKeySpec);
        hash = mac.doFinal(stringToSign.getBytes(CHARSET));
    } catch (Exception e) {
        logger.error("HmacSha256 error!", e);
    }
    return DatatypeConverter.printBase64Binary(hash);
}

public static String canonicalize(SortedMap<String, Object> sortedParamMap) {
    if (sortedParamMap.isEmpty()) {  
        return "";  
    }  
    StringBuffer buffer = new StringBuffer();  
    Iterator<Entry<String, Object>> iter = sortedParamMap.entrySet().iterator();
    while (iter.hasNext()) {  
        Entry<String, Object> kvpair = iter.next();
        buffer.append(percentEncodeRfc3986(kvpair.getKey()));
        buffer.append("=");  
        buffer.append(kvpair.getValue());
        if (iter.hasNext()) {  
            buffer.append("&");  
        }  
    }   
    return buffer.toString();  
}