微信支付APIv3请求签名

微信支付APIv3请求签名

    • 获取证书私钥
    • 构造签名串
    • 生成签名
    • 设置请求头

获取证书私钥

商户申请商户API证书时,会生成商户私钥,并保存在本地证书文件夹的文件apiclient_key.pem 中。可以将私钥串儿写到项目的配置文件中(注意中间不能有换行),也可以读取私钥文件获得。

构造签名串

签名串格式为五行,每一行为一个参数,行尾以 \n结束。报文主体可能为空,此时依然有\n。
注:若报文主体为空则可能是null\n,需要注意直接空字符串即可,不要null。

HTTP请求方法\n
URL\n
请求时间戳\n
请求随机串\n
请求报文主体\n
String buildMessage(String method, HttpUrl url, long timestamp, String nonceStr, String body) {
     
    String canonicalUrl = url.encodedPath();
    if (url.encodedQuery() != null) {
     
      canonicalUrl += "?" + url.encodedQuery();
    }

    return method + "\n"
        + canonicalUrl + "\n"
        + timestamp + "\n"
        + nonceStr + "\n"
        + body + "\n";
}

生成签名

设置请求头

你可能感兴趣的:(微信支付APIv3请求签名)