From 8b45f267e75cb7817e33d994c00ee047173c6711 Mon Sep 17 00:00:00 2001 From: jyy <935090232@qq.com> Date: Tue, 09 Mar 2021 11:00:43 +0800 Subject: [PATCH] 解决微信回调报错问题 --- zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 34 +++++++++++++++++++++------------- 1 files changed, 21 insertions(+), 13 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java index cb91885..6460aac 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java @@ -1,12 +1,11 @@ package com.matrix.system.shopXcx.api.action; -import com.matrix.biz.dao.BizUserDao; import com.matrix.component.rabbitmq.RabiitMqTemplate; -import com.matrix.core.pojo.AjaxResult; -import com.matrix.core.tools.LogUtil; import com.matrix.component.wechat.externalInterface.common.Signature; import com.matrix.component.wechat.externalInterface.common.Util; import com.matrix.component.wechat.externalInterface.protocol.queryProtocol.NotifyData; +import com.matrix.core.pojo.AjaxResult; +import com.matrix.core.tools.LogUtil; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; @@ -22,6 +21,7 @@ import com.matrix.system.shopXcx.dao.ShopOrderDao; import com.matrix.system.shopXcx.dao.ShopPayLogDao; import com.matrix.system.shopXcx.mqTask.MQTaskRouting; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; @@ -29,12 +29,10 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import org.xml.sax.SAXException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.ParserConfigurationException; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; @@ -110,16 +108,25 @@ notityXml.append(inputLine); } request.getReader().close(); - // XMl转对象 - NotifyData data = (NotifyData) Util.getObjectFromXML(notityXml.toString(), NotifyData.class); - LogUtil.info(data.toString()); LogUtil.info("notityXml ---- :{} ", notityXml); + + + // XMl转对象 + Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class); + NotifyData data = new NotifyData(); + BeanUtils.copyProperties(bb,data); LogUtil.info("----return_code = {}", data.getReturn_code()); + // 返回状态码 SUCCESS/FAIL if (AppConstance.CODE_SUCCESS.equals(data.getReturn_code())) { + + orderId = data.getAttach(); + // 检验订单状态 + ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); + // 校验签名 - BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, HostInterceptor.getCompanyId()); + BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, order.getCompanyId()); if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret.getParamValue())) { // 校验业务结果 if (AppConstance.CODE_SUCCESS.equals(data.getResult_code())) { @@ -129,14 +136,13 @@ Double total_fee = Double.parseDouble(data.getTotal_fee()); // 商户订单号 String payNum = data.getOut_trade_no(); - orderId = data.getAttach(); + LogUtil.info("支付回调关键信息---total_fee:{},payNum:{},orderId:{}", total_fee, payNum, orderId); // 订单ID BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); - // 检验订单状态 - ShopOrder order = shopOrderDao.selectById(Integer.valueOf(orderId)); + if (order != null && ShopOrder.ORDER_PAY_STATUS_WAIT == order.getPayStatus()) { ShopPayLog payLog = new ShopPayLog(); // TODO 校验支付金额 @@ -219,7 +225,7 @@ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)"); resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败"); } - } catch (ParserConfigurationException | IOException | SAXException e) { + } catch (Exception e) { LogUtil.error("支付回调签名错误", e); threadResult.putInMap("status", "err"); threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)"); @@ -271,4 +277,6 @@ return null; } + + } \ No newline at end of file -- Gitblit v1.9.1