请求签名是微信用来验证请求的合法性的,签名是放在请求头中的编码串。
获取证书私钥
商户申请商户API证书时,会生成商户私钥,并保存在本地证书文件夹的文件apiclient_key.pem 中。可以将私钥串儿写到项目的配置文件中(注意中间不能有换行),也可以读取私钥文件获得。
如何申请商户证书在上一篇文章中。(传送门)
/**
* 读取私钥文件
* @return 私钥对象
*/
public static PrivateKey getWXPayPrivateKey() throws IOException{
String content = new String(WXPayUtil.getConfigProperties("WX_SIGN_PRIVATEKEY"));
try {
// replace: 将匹配到的字符替换
// \s+: 正则匹配,\s代表空白字符(包括空格制表符等),+ 代表任意多,将所有匹配到的空白字符替换为空
String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "");
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKey)));
}