微信支付V3图片上传接口返回400解决思路

304 阅读1分钟

前言

最近在做微信支付,进件接口需要上传图片信息,使用的是微信的sdk,但是一直返回400

正文

代码就是官方demo中的代码

如果不把response中的body输出出来的话,是没办法定位到问题的,会一直返回400

加上下面的代码就可以查看body中的返回的信息

String json = EntityUtils.toString(httpEntity);

最后发现提示的是图片为空

这个很诡异,为什么会为空呢?

原来是因为

InputStream byteArrayInputStream = new ByteArrayInputStream(file.getBytes())
String sha256 = DigestUtils.sha256Hex(byteArrayInputStream);

进行图片加密的时候流里面的东东貌似不太对劲

需要进行下面的操作

byteArrayInputStream.reset();

这样就可以了

结语

看来还是需要仔细往下分析,不要觉得返回400就是签名的问题,打印出来具体的问题后,就可以继续修改和排查了!