webhook消息通知对接鉴权方法

当触发通知目标操作时,您的触发器消息将会附到URL后面 "https://yourdomain/path?message=xx"。如果租户自己提供接口密钥来验签输入参数,则会在url后面加上验签的时间戳timestamp和签名sign,即"https://yourdomain/path?message=xx&timestamp=xx&sign=xx"。

请求参数

字段名称 字段类型 说明 取值
timestamp String 当前时间戳 13位时间戳
sign String 鉴权签名 见下面描述
message String 消息体,字段名为webhook设置时“属性名”,默认为message 消息体字段说明详见下述 webhook消息通知对接技术对接文档

1.请求中所有参数(除sign字段)字段值的ASCII 码,从小到大排序(字典序)后,使用签名的格式(即 value1&value2)拼接成字符串string1;

2.在string1后面拼上&timestamp;

3.在string1最后拼接上&secret(租户提供的接口密钥)得到stringSignTemp字符串;

4.并对stringSignTemp进行sha256运算,得到sign值signValue。

其中sha256运算运算的java示例代码如下:

public static String sha256(String data) throws NoSuchAlgorithmException { 
       MessageDigest md = MessageDigest.getInstance("SHA-256"); 
       md.update(data.getBytes()); 
       StringBuffer buf = new StringBuffer(); 
       byte[] bits = md.digest(); 
       for(int i=0;i<bits.length;i++){ 
           int a = bits[i]; 
           if(a<0) a+=256; 
           if(a<16) buf.append("0"); 
           buf.append(Integer.toHexString(a)); 
       }
       return buf.toString(); 
   }

注意:1、 字符集默认使用 UTF-8,请勿使用其它字符集;2、报文中所有时间时区为东八区。

results matching ""

    No results matching ""