// 拼签名串
StringBuffer sb = new StringBuffer();
sb.append("POST").append("\n");
sb.append("/v3/applyment4sub/applyment/").append("\n");
sb.append(timestamp).append("\n");
sb.append(nonce_str).append("\n");
sb.append(business).append("\n");
System.out.println(sb.toString());
//计算签名值
String sign = new String(Base64.encodeBase64(ApiclientCertUtil.signRSA(sb.toString(), ApiclientCertUtil.getRsaPrivateKey())));
// 拼装http头的Authorization内容
String authorization = "WECHATPAY2-SHA256-RSA2048 mchid=\"" + ApiclientCertUtil.getMchid() + "\",nonce_str=\"" + nonce_str
+ "\",signature=\"" + sign + "\",timestamp=\"" + timestamp + "\",serial_no=\"" + ApiclientCertUtil.getSerial_no() + "\"";
// 设置头部
post.addHeader("Content-Type", "application/json");
post.addHeader("Accept", "application/json");
post.addHeader("Wechatpay-Serial", serial_no);
post.addHeader("Authorization", authorization);
返回错误信息:
"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization"
特约商户入驻全部参数都要提交吗?有部分不是必要提交的我就没添,是不是签名拼接第5行body的请求参数json参数不全的问题吗?
腾讯的API做的比阿里烂很多,真的好难用,就签名而言,几个API接口的签名是不一样的,这个坑我都踩过好几次了,最坑的是没有技术支持工单系统。提问一次,邮件7个工作日恢复,那就是10天,还不能一次性解决问题
验证签名工具:
链接:https://pan.baidu.com/s/1ixOAnYyZVW13dFr0jWVpvw 提取码:wujv
,麻烦使用V3签名验证工具参考V3签名文档https://wechatpay-api.gitbook.io/wechatpay-api-v3/
进行排查修改。V3签名需使用apiv3秘钥。麻烦参考https://kf.qq.com/faq/180830E36vyQ180830AZFZvu.html