Closed liguangling-lgl closed 1 day ago
@Override public PayCallbackResult callbackWechatPay(HttpServletRequest httpServletRequest) { String body = getRequestBody(httpServletRequest); String serialNumber = httpServletRequest.getHeader("Wechatpay-Serial"); String nonce = httpServletRequest.getHeader("Wechatpay-Nonce"); String signature = httpServletRequest.getHeader("Wechatpay-Signature"); String timestamp = httpServletRequest.getHeader("Wechatpay-Timestamp"); RequestParam requestParam = new RequestParam.Builder() .serialNumber(serialNumber) .nonce(nonce) .signature(signature) .timestamp(timestamp) .body(body) .build(); log.info("支付回调,通知参数:{}", JSON.toJSONString(requestParam)); NotificationConfig config = (NotificationConfig) wechatPayConfigHolder.getConfig(); NotificationParser parser = new NotificationParser(config); Transaction transaction = parser.parse(requestParam, Transaction.class); String paySn = "P" + IdGeneratorManager.globalGenerator(); OrderCallbackReqDTO orderCallbackReqDTO = OrderCallbackReqDTO.builder() .status(TradeStatusEnum.queryActualTradeStatusCode(transaction.getTradeState().name())) .joinTime(DateUtil.date()) .tradeNo(transaction.getTransactionId()) .gmtPayment(DateUtil.parse(transaction.getSuccessTime())) .orderSn(transaction.getOutTradeNo()) .paySn(paySn) .build(); return orderService.callbackOrder(orderCallbackReqDTO); } private String getRequestBody(HttpServletRequest request) { ByteArrayOutputStream body = new ByteArrayOutputStream(); try { ServletInputStream inputStream = request.getInputStream(); byte[] buffer = new byte[1024]; for (int length; (length = inputStream.read(buffer)) != -1; ) { body.write(buffer, 0, length); } } catch (IOException ex) { log.error("支付回调,读取数据流异常", ex); } log.info("支付回调,通知消息体:{}", body); return body.toString(); }
} 解签代码 ,使用的微信SDK
有的订单支付成功回调没有问题,极少订单会出现解签失败的情况,不清楚为什么
Transaction transaction = parser.parse(requestParam, Transaction.class);
linux
Java21
0.2.7
No response
看看是不是探测流量: https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-verification.html#%E5%BA%94%E5%AF%B9%E7%AD%BE%E5%90%8D%E6%8E%A2%E6%B5%8B%E6%B5%81%E9%87%8F
是的 ,感谢 确实是这个原因
原来如此,吓得我还以为是用户付款了,没有给用户东西
错误描述
重现bug的步骤
} 解签代码 ,使用的微信SDK
预期行为
有的订单支付成功回调没有问题,极少订单会出现解签失败的情况,不清楚为什么
导致错误的代码片段
操作系统
linux
Java 版本
Java21
wechatpay-java 版本
0.2.7
其他信息
No response