签名算法
计算签名
所有请求都需要带上signature字段,以防止数据被篡改,在加入scanforpay后,scanforpay会提供签名key供签名实用。
签名的具体算法为: 对(请求中的request数据+签名key)进行SHA256加密处理。Java签名算法可参考apache commons-codec包中的DigestUtils类
请求格式如基本说明所示,计算签名示例如下:
String req = “{
\"header\":{
请求头数据
},
\"body\":{
业务请求数据
}
}”
String signKey = "123456" //实际会由scanforpay提供
String signature = DigestUtils.sha256Hex(req + signKey);
校验签名
收到响应时需要对数据进行验签,对响应中的response数据进行如上述方法的签名计算, 将得到的签名和响应中返回的签名进行对比,如一致则验签正确
响应格式如基本说明所示,对比签名示例如下:
String resp = “{
\"header\":{
请求头数据
},
\"body\":{
业务请求数据
}
}”
String signKey = "123456" //实际会由scanforpay提供
String signature = DigestUtils.sha256Hex(req + signKey);
//if(signature.equals(response.signature)){
// 如果计算出的签名和响应里的签名相等,验签成功
//}