Closed Terry163com closed 1 year ago
在通过com.wechat.pay.java.core.http.AbstractHttpClient.download 方法下载回单数据流时。下载回的文件为json格式 且内容为{"code":"INVALID REQUEST","message":"错误的签名,导致验签失败"} 后发现回单下载接口的参数规则与其他V3接口不一致。请求报文 body 后面没有换行符。
{"code":"INVALID REQUEST","message":"错误的签名,导致验签失败"}
源代码中,下载文件接口和其他V3接口使用了同一个buildMessage方法,需要进行判断是否为回单下载链接
private String buildMessage( String nonce, long timestamp, URI uri, String httpMethod, String signBody) { String canonicalUrl = uri.getRawPath(); if (uri.getQuery() != null) { canonicalUrl += "?" + uri.getRawQuery(); } return httpMethod + "\n" + canonicalUrl + "\n" + timestamp + "\n" + nonce + "\n" + (signBody == null ? "" : signBody) + ((uri.getPath().startsWith("/v3/transferdownload"))?"":"\n"); }
使用com.wechat.pay.java.core.http.AbstractHttpClient.download方法对返回的回单地址进行下载
返回正确的回单pdf
No response
win10
Java8
0.2.7
严格来说,这是接口实现上的bug。已经跟相关同事沟通,预期最近一段时间修复,到时候能同时兼容两种签名。
从 SDK 维护的角度,我不希望兼容这个bug。短期内,建议 @Terry163com 自行修改代码。等接口修复后,再切回官方的代码。
好的。没毛病,我也觉得这是接口端的问题哈哈。
API 的兼容逻辑今天已经发布了, @Terry163com 可以直接用 SDK 试试
错误描述
在通过com.wechat.pay.java.core.http.AbstractHttpClient.download 方法下载回单数据流时。下载回的文件为json格式 且内容为
{"code":"INVALID REQUEST","message":"错误的签名,导致验签失败"}
后发现回单下载接口的参数规则与其他V3接口不一致。请求报文 body 后面没有换行符。源代码中,下载文件接口和其他V3接口使用了同一个buildMessage方法,需要进行判断是否为回单下载链接
重现bug的步骤
使用com.wechat.pay.java.core.http.AbstractHttpClient.download方法对返回的回单地址进行下载
预期行为
返回正确的回单pdf
导致错误的代码片段
No response
操作系统
win10
Java 版本
Java8
wechatpay-java 版本
0.2.7
其他信息
No response