From a9f950c0d11a687a7a940443b8c765f6d87ae4f1 Mon Sep 17 00:00:00 2001
From: jyy <935090232@qq.com>
Date: Tue, 20 Apr 2021 00:26:22 +0800
Subject: [PATCH] 合并新的修改
---
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java | 151 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 136 insertions(+), 15 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 88c4948..dde86bb 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
@@ -10,9 +10,13 @@
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
+import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.hive.bean.MoneyCardUse;
+import com.matrix.system.hive.bean.MoneyCardUseFlow;
import com.matrix.system.hive.bean.SysVipInfo;
+import com.matrix.system.hive.dao.MoneyCardUseDao;
+import com.matrix.system.hive.dao.MoneyCardUseFlowDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
-import com.matrix.system.score.entity.ScoreVipDetail;
import com.matrix.system.score.service.ScoreVipDetailService;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoin;
import com.matrix.system.shopXcx.bean.ShopActivitiesGroupJoinUser;
@@ -90,11 +94,6 @@
private String evn;
/**
* 微信支付回调接口
- *
- * @param response
- * @param request
- * @throws IOException
- * @throws Exception
*/
@Transactional(rollbackFor = Exception.class)
@RequestMapping(value = "/wxapi/wxpayCallback")
@@ -189,7 +188,7 @@
}
shopActivitiesGroupJoinDao.updateByModel(groupJoin);
- SysVipInfo sysVipInfo = sysVipInfoDao.selectByPhone(order.getUserTel());
+ SysVipInfo sysVipInfo = sysVipInfoDao.selectByPhone(order.getUserTel(), order.getCompanyId());
if(sysVipInfo!=null){
sysVipInfo.setIsDeal(SysVipInfo.DEAL_VIP);
sysVipInfoDao.update(sysVipInfo);
@@ -200,16 +199,13 @@
// 根据订单类型创建不同的处理任务
rabiitMqTemplate.sendTopicMsg(RabbitMqConfig.MQ_EXCHANGE_TOPIC +evn, MQTaskRouting.CREATE_ORDER+evn, orderId);
- //扣除积分
- if(order.getScorePay()!=null){
- scoreVipDetailService.deductionScore(order.getUserId(),null,Long.parseLong(order.getStoreId()+""),order.getScorePay(),Long.parseLong(order.getId()+""), ScoreVipDetail.SCORE_VIP_TYPE_CASH);
- }
+
threadResult.putInMap("status", "success");
resXml = AppConstance.RESULT_XML_SUCCESS;
//支付记录
- recordPayLog(Integer.valueOf(orderId), payMoney, order, payLog, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+ recordPayLog(Integer.valueOf(orderId), 1, order.getOrderNo(), payMoney, "支付成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
} else {
@@ -248,12 +244,137 @@
}
- private void recordPayLog(Integer orderId, BigDecimal payMoney, ShopOrder order, ShopPayLog payLog, String payRemark, int payStatus) {
+
+ @Autowired
+ MoneyCardUseFlowDao moneyCardUseFlowDao;
+
+ @Autowired
+ MoneyCardUseDao moneyCardUseDao;
+
+ /**
+ * 微信充值回调
+ */
+ @Transactional(rollbackFor = Exception.class)
+ @RequestMapping(value = "/wxapi/rechargeCallBack")
+ public void rechargeCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
+ LogUtil.info("微信充值回调start....");
+
+ // 获取输入参数
+ String inputLine;
+ StringBuffer notityXml = new StringBuffer();
+ String resXml = "";
+ String moneyCardUseFlowId = "";
+
+ AjaxResult threadResult = new AjaxResult(AjaxResult.STATUS_SUCCESS, "");
+ try {
+ while ((inputLine = request.getReader().readLine()) != null) {
+ notityXml.append(inputLine);
+ }
+ request.getReader().close();
+ 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())) {
+
+ moneyCardUseFlowId = data.getAttach();
+ // 检验订单状态
+ MoneyCardUseFlow moneyCardUseFlow = moneyCardUseFlowDao.selectById(Long.valueOf(moneyCardUseFlowId));
+ SysVipInfo user=sysVipInfoDao.selectById(moneyCardUseFlow.getVipId());
+
+ // 校验签名
+ BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, user.getCompanyId());
+ if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret.getParamValue())) {
+ // 校验业务结果
+ if (AppConstance.CODE_SUCCESS.equals(data.getResult_code())) {
+ // 返回SUCCESS报文
+ resXml = AppConstance.RESULT_XML_SUCCESS;
+ // 支付费用
+ Double total_fee = Double.parseDouble(data.getTotal_fee());
+ // 商户订单号
+ String payNum = data.getOut_trade_no();
+
+ LogUtil.info("支付回调关键信息---total_fee:{},payNum:{},moneyCardUseFlowId:{}", total_fee, payNum, moneyCardUseFlowId);
+ // 订单ID
+ Double payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
+ BigDecimal.ROUND_HALF_DOWN).doubleValue();
+
+ if (moneyCardUseFlow.getCarUseId()==null) {
+
+ if(payMoney.equals(moneyCardUseFlow.getTotal())){
+ threadResult.putInMap("status", "success");
+ resXml = AppConstance.RESULT_XML_SUCCESS;
+ MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(user.getId());
+ moneyCardUseFlow.setCarUseId(moneyCardUse.getId());
+ moneyCardUseFlow.setCardName(moneyCardUse.getCardName());
+ Double balance=moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney();
+ moneyCardUseFlow.setBalance(balance==null?0:balance);
+ moneyCardUseFlowDao.update(moneyCardUseFlow);
+
+ moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()+payMoney.doubleValue());
+ moneyCardUseDao.update(moneyCardUse);
+
+ //充值记录
+ recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS);
+ }else{
+ LogUtil.debug("支付金额不一致,检查支付金额payMoney={},order.getPayMoney()={}", payMoney, moneyCardUseFlow.getTotal());
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "支付金额不一致");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+
+ } else {
+ LogUtil.info("充值已经确认");
+ }
+
+ } else {
+ LogUtil.info("微信标识业务是失败");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+ } else {
+ LogUtil.info("无效签名");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+ }
+ } else {
+ LogUtil.info("通信标识失败");
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
+ }
+ } catch (Exception e) {
+ LogUtil.error("支付回调签名错误", e);
+ threadResult.putInMap("status", "err");
+ threadResult.putInMap("msg", "查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
+ resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
+ } finally {
+ // 通知线程消息
+ PayThreadPool.notifyThread(Integer.valueOf(moneyCardUseFlowId), threadResult);
+ sendResultBack(response, resXml);
+ }
+ return;
+
+ }
+
+
+
+ private void recordPayLog(Integer orderId, Integer type,String orderNo, BigDecimal payMoney, String payRemark, int payStatus) {
//设置支付类型为收款
- payLog.setPayType(1);
+ ShopPayLog payLog=new ShopPayLog();
+ payLog.setPayType(type);
payLog.setJoinId(orderId);
payLog.setPayMoney(payMoney);
- payLog.setPayOrderNo(order.getOrderNo());
+ payLog.setPayOrderNo(orderNo);
payLog.setPayRemark(payRemark);
payLog.setPayStatus(payStatus);
payLog.setCreateBy(AppConstance.SYSTEM_USER);
--
Gitblit v1.9.1