NotificationConfig config1 = new RSAAutoCertificateConfig.Builder()
.merchantId(payOrder.getThirdMchId())
.privateKey(privateKey)
.merchantSerialNumber(key)
.apiV3Key(apiV3key)
.build();
NotificationParser parser = new NotificationParser(config1);
RequestParam requestParam = new RequestParam.Builder()
.serialNumber(serialNumber)
.nonce(nonce)
.signature(signature)
.timestamp(timestamp)
.body(body)
.build();
try {
Notification parse = parser.parse(requestParam, Notification.class);
log.info("订单号{}通知内容为{}",payOrder.getPayNo(),JSON.toJSONString(parse));
}catch (ValidationException e) {
log.error("验签失败",e);
}
一直返回异常 验签失败
Processing WechatPay notification,signature verification failed,signType[WECHATPAY2-SHA256-RSA2048] serial[788F72CE6A38448B344E49E56EAA5EF29B6C8EE1] message[1744796490
SGF0Qv2ebGGpPszyAixeFboai4GsCyQw
{"summary":"商家转账单据终态通知","event_type":"MCHTRANSFER.BILL.FINISHED","create_time":"2025-04-16T17:13:48+08:00","resource":{"associated_data":"mch_payment","ciphertext":"bHwL6SkNnIGuJOUseGxaxKuPckEqEbkSKkapj2sTvlWl4aUyM+tasQ/+6+rovJAA8KqQd3UKQu0O7zPT9I1QjGERp7578hV8K/arrCdbCmdlFNy4YZtT4FgDnxlqUukV94ziWAppwrm6qpKDAV4Xesg7lig7pwJCriMU8RLV4CIIh1JyVEcxRN2uSXhikJHNX4kKhFakDenUxnXWeWId5LioWaP/PeN1vhVPtuBL+u1oUN8HNag4PD896aMvk++FD5TBO/vfIpT+zxIOHeUH3fdaCc9P7uu0eaESFfq3K06AGMe5yZYL17qfPEIly6yoHlD0r1QpDH6wa0Itwn4X/1ScpD3AsrBt6YcODRg/Ju/s1oeM3v+aVcvm2Fi5wXstTUbDuWrwPZdEb/4aguELCJ951GuXT8ZHnMRQRv+RRLsBahSvj1eV0szxCtnNO4C1C95nlF7PE5vRTIng","original_type":"mch_payment","nonce":"AJSEpTGBbpZq","algorithm":"AEAD_AES_256_GCM"},"resource_type":"encrypt-resource","id":"53b544aa-f2c0-565f-80b7-0ba6da6e8b7f"}
] sign[FUWHEJvG0RVHbcb6GHuCWkQ4cM4bN+3Gl3Sns57Mp75nryxmxvEZQNTR/zbsmyNNENrmN4NBtvDfmd0bAH/0lKrDJcSJA499wuOiuko2NEqAmaLds1a5AwxYDIFDdCl5UwCgN5jvvBCrh6idPSbuhsMwcZNHlbH6USvEx+bpQ73SZWLr4KO5yJFkS6Hdb7pWKtLTeCit8/hw6viaNjIkFkf97fLRC10opadKJsz+JexFfKt2nxmmOc22FDYXoZfx8yMAfH77ib4QD0Sov22YOJTAUwZLv8f/0ris3x44IbL4ft1BDHAB6LocyMV1QFR+Yh4mjmdvMdZZerzmpQX3HA==]

感谢,是body问题。踩坑、避雷:如果用的springboot,加了拦截器、过滤器的,要放行回调url。不要处理body数据
手动验签能不能过?