Closed sharkbb closed 9 months ago
具体出错的日志呢?最好是提供下请求和应答的完整报文
body = {"code":"SIGN_ERROR", "detail":{ "detail": {"issue":"sign not match"}, "field":"signature", "location":"authorization", "sign_information":{"method":"GET","sign_message_length":66,"truncated_sign_message":"GET\n/v3/certificates\n1695709854\nNjqCvW8x0GmpdtWmPbfzxBsHEONf67K5\n\n","url":"/v3/certificates"}} ,"message":"错误的签名,验签失败"} 这是当时返回的resp,日志被清理了 出错就是拿不到CloseableHttpClient 对象 具体出错就在这句 certificatesManager.putMerchant(mchId, new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)), apiV3Key.getBytes(StandardCharsets.UTF_8));
你是用的 wechatpay-apache-httpclient ?
暂时先关闭,如果遇到请提到 wechatpay-apache-httpclient
错误描述
今天在改其他功能时 测试发现uat的微信支付突然报错了com.wechat.pay.contrib.apache.httpclient.exception.HttpCodeException: 下载平台证书返回状态码异常,状态码为:401 我马上检查生产环境发现生产环境没问题 当时很奇怪 以为有其他人改了微信支付的代码 但是我去看git历史没有提交记录 除了回调的url不一样其他都一样 感到很奇怪于是重新打了一下包 还是一样的报错:下载平台证书返回状态码异常,状态码为:401,我再检查了几遍还是没有发现问题于是重新打了几次包结果都是一样的报错。实在没办法 就问了微信支付的在线支持 我贴出了代码他具体报错在这一行: certificatesManager.putMerchant(mchId, new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)), apiV3Key.getBytes(StandardCharsets.UTF_8)); 他说只有可能是三个参数mchId mchSerialNo apiV3Key其中一个有问题,我感到很困惑因为支付的代码从没动过 不可能参数有问题啊 于是在上面+了一句代码想打出这三个参数的值再看问题: log.info("mchId ="+mchId," mchSerialNo ="+mchSerialNo, " apiV3Key="+apiV3Key); 加完这句代码再打到uat发现 马上又好了 就搞得我云里雾里有点害怕隐藏bug不敢打生产了 如果可以麻烦你们检查一下是否有隐藏的bug 今天这个确实迷惑到我了 谢谢
重现bug的步骤
正常打开 没动过代码 不知道如何触发的这个bug 无法重现
预期行为
没动过代码 不知道如何触发的这个bug 很迷惑 导致现在不敢动生产环境的order服务
导致错误的代码片段
操作系统
linuxcentos7
Java 版本
java8
wechatpay-java 版本
0.4.2
其他信息
如果有什么不清楚的 可以电联17324280943