🐛 #2246 【微信支付】修复微信支付V3签名/验签的换行符错误问题
参考微信支付文档: 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平台下签名错误
This commit is contained in:
@@ -83,7 +83,7 @@ public class WxPayUnifiedOrderV3Result implements Serializable {
|
|||||||
private String paySign;
|
private String paySign;
|
||||||
|
|
||||||
private String getSignStr() {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class BusinessCircleServiceImpl implements BusinessCircleService {
|
|||||||
* @return true:校验通过 false:校验不通过
|
* @return true:校验通过 false:校验不通过
|
||||||
*/
|
*/
|
||||||
private boolean verifyNotifySign(SignatureHeader header, String data) {
|
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(),
|
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
|
||||||
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public class MarketingFavorServiceImpl implements MarketingFavorService {
|
|||||||
* @return true:校验通过 false:校验不通过
|
* @return true:校验通过 false:校验不通过
|
||||||
*/
|
*/
|
||||||
private boolean verifyNotifySign(SignatureHeader header, String data) {
|
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(),
|
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
|
||||||
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|||||||
* @return true:校验通过 false:校验不通过
|
* @return true:校验通过 false:校验不通过
|
||||||
*/
|
*/
|
||||||
private boolean verifyNotifySign(SignatureHeader header, String data) {
|
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(),
|
return payService.getConfig().getVerifier().verify(header.getSerialNo(),
|
||||||
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user