Skip to content

Commit

Permalink
🐛 #2246 【微信支付】修复微信支付V3签名/验签的换行符错误问题
Browse files Browse the repository at this point in the history
参考微信支付文档:
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_4.shtml
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml

签名时使用的换行符必须是\n,因此不应使用%n,这会导致windows平台下签名错误
  • Loading branch information
gadfly3173 authored Aug 13, 2021
1 parent 2b92b6f commit 60c9df4
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public static class JsapiResult implements Serializable {
private String paySign;

private String getSignStr() {
return String.format("%s%n%s%n%s%n%s%n", appId, timeStamp, nonceStr, packageValue);
return String.format("%s\n%s\n%s\n%s\n", appId, timeStamp, nonceStr, packageValue);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public void notifyPoints(PointsNotifyRequest request) throws WxPayException {
* @return true:校验通过 false:校验不通过
*/
private boolean verifyNotifySign(SignatureHeader header, String data) {
String beforeSign = String.format("%s%n%s%n%s%n", header.getTimeStamp(), header.getNonce(), data);
String beforeSign = String.format("%s\n%s\n%s\n", header.getTimeStamp(), header.getNonce(), data);
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public FavorStocksStartResult restartFavorStocksV3(String stockId, FavorStocksSe
* @return true:校验通过 false:校验不通过
*/
private boolean verifyNotifySign(SignatureHeader header, String data) {
String beforeSign = String.format("%s%n%s%n%s%n", header.getTimeStamp(), header.getNonce(), data);
String beforeSign = String.format("%s\n%s\n%s\n", header.getTimeStamp(), header.getNonce(), data);
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ public WxPayScoreResult decryptNotifyDataResource(PayScoreNotifyData data) throw
* @return true:校验通过 false:校验不通过
*/
private boolean verifyNotifySign(SignatureHeader header, String data) {
String beforeSign = String.format("%s%n%s%n%s%n", header.getTimeStamp(), header.getNonce(), data);
String beforeSign = String.format("%s\n%s\n%s\n", header.getTimeStamp(), header.getNonce(), data);
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
}
Expand Down

0 comments on commit 60c9df4

Please sign in to comment.