-
-
Notifications
You must be signed in to change notification settings - Fork 9k
Closed
Description
https://github.com/Wechat-Group/weixin-java-tools/blob/master/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java#L203
WxPayServiceImpl的200行-213行
configMap.put("prepayid", prepayId);
configMap.put("partnerid", partnerid);
configMap.put("package", "Sign=WXPay");
configMap.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000));
configMap.put("noncestr", String.valueOf(System.currentTimeMillis()));
configMap.put("appid", appId);
// 此map用于客户端与微信服务器交互
payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey()));
payInfo.put("prepayId", prepayId);
payInfo.put("partnerId", partnerid);
payInfo.put("appId", appId);
payInfo.put("packageValue", "Sign=WXPay");
payInfo.put("timeStamp", String.valueOf(System.currentTimeMillis() / 1000));
payInfo.put("nonceStr", String.valueOf(System.currentTimeMillis()));
在configMap生成签名需要字段timestamp和noncestr是实时生成,但是返回的时候payInfo又重新生成一个新的,实际签名用两个字段与返回的不一致,导致客户端签名失败
可以改成
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
String nonceStr = String.valueOf(System.currentTimeMillis());
configMap.put("prepayid", prepayId);
configMap.put("partnerid", partnerid);
configMap.put("package", "Sign=WXPay");
configMap.put("timestamp", timestamp); // 同一个timestamp
configMap.put("noncestr", nonceStr); // 同一个nonceStr
configMap.put("appid", appId);
// 此map用于客户端与微信服务器交互
payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey()));
payInfo.put("prepayId", prepayId);
payInfo.put("partnerId", partnerid);
payInfo.put("appId", appId);
payInfo.put("packageValue", "Sign=WXPay");
payInfo.put("timeStamp", timestamp); // 同一个timestamp
payInfo.put("nonceStr", nonceStr); // 同一个nonceStr
Metadata
Metadata
Assignees
Labels
No labels