From 9634244f5ad3c8493fb28e3a32d7526977cdd160 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 05 Feb 2025 11:58:50 +0800
Subject: [PATCH] feat(pay): 添加 FIUU支付功能

---
 src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java |  646 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 380 insertions(+), 266 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index 93b09e9..54c4d4d 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -1,266 +1,380 @@
-package cc.mrbird.febs.pay.controller;
-
-import cc.mrbird.febs.common.entity.FebsResponse;
-import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
-import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
-import cc.mrbird.febs.common.properties.XcxProperties;
-import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.common.utils.SpringContextHolder;
-import cc.mrbird.febs.mall.entity.MallMemberWallet;
-import cc.mrbird.febs.mall.entity.MallMoneyFlow;
-import cc.mrbird.febs.mall.entity.MallOrderInfo;
-import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
-import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
-import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
-import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
-import cc.mrbird.febs.pay.model.NotifyData;
-import cc.mrbird.febs.pay.model.OrderStateDto;
-import cc.mrbird.febs.pay.model.OrderStateMsgVo;
-import cc.mrbird.febs.pay.model.WxTemplateData;
-import cc.mrbird.febs.pay.service.IPayService;
-import cc.mrbird.febs.pay.service.IXcxPayService;
-import cc.mrbird.febs.pay.util.PayThreadPool;
-import cc.mrbird.febs.pay.util.Signature;
-import cc.mrbird.febs.pay.util.Util;
-import cc.mrbird.febs.pay.util.WechatConfigure;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.client.RestTemplate;
-import org.thymeleaf.engine.TemplateData;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-@Slf4j
-@RestController
-@RequestMapping(value = "/api/xcxPay")
-public class XcxPayController {
-
-    @Autowired
-    MallOrderInfoMapper mallOrderInfoMapper;
-    @Autowired
-    MallMoneyFlowMapper mallMoneyFlowMapper;
-    @Autowired
-    MallMemberWalletMapper mallMemberWalletMapper;
-    @Autowired
-    RedisUtils redisUtils;
-    @Autowired
-    private IApiMallMemberWalletService memberWalletService;
-
-    @Autowired
-    private IXcxPayService iXcxPayService;
-
-    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
-    /**
-     * 微信充值回调接口
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @RequestMapping(value = "/rechargeCallBack")
-    public void rechargeCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
-        log.info("微信充值回调start....");
-
-        // 获取输入参数
-        String inputLine;
-        StringBuffer notityXml = new StringBuffer();
-        String resXml = "";
-
-//        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+"}";
-        String attrStr = "";
-
-        FebsResponse threadResult = new FebsResponse();
-        try {
-            while ((inputLine = request.getReader().readLine()) != null) {
-                notityXml.append(inputLine);
-            }
-            request.getReader().close();
-            log.info("notityXml ---- :{} ", notityXml);
-
-
-            // XMl转对象
-            Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class);
-            NotifyData data = new NotifyData();
-            BeanUtils.copyProperties(bb,data);
-            log.info("----return_code = {}", data.getReturn_code());
-            // 返回状态码 SUCCESS/FAIL
-            if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) {
-                attrStr = data.getAttach();
-                JSONObject jsonObject = JSONUtil.parseObj(attrStr);
-                String rechargeNo = (String) jsonObject.get("rechargeNo");
-                Long memberId = (Long) jsonObject.get("memberId");
-                // 检验订单状态
-                MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
-                // 校验签名
-//                String paySecret = WechatConfigure.WECHARPAY_SECRET;
-                String paySecret = xcxProperties.getWecharpaySecret();
-                if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret)) {
-                    // 校验业务结果
-                    if (WechatConfigure.CODE_SUCCESS.equals(data.getResult_code())) {
-                        // 返回SUCCESS报文
-                        resXml = WechatConfigure.RESULT_XML_SUCCESS;
-                        // 支付费用
-                        Double total_fee = Double.parseDouble(data.getTotal_fee());
-                        // 商户订单号
-                        String payNum = data.getOut_trade_no();
-
-                        log.info("支付回调关键信息---total_fee:{},payNum:{},rechargeNo:{}", total_fee, payNum, rechargeNo);
-                        // 订单ID
-                        BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
-                                RoundingMode.HALF_UP);
-
-                        if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
-                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
-                            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
-                            if(ObjectUtil.isNotEmpty(mallMemberWallet)){
-                                memberWalletService.addBalance(payMoney,memberId);
-                            }
-                            threadResult.success().message("充值成功");
-                        } else {
-                            log.info("充值失败", attrStr);
-                        }
-                    } else {
-                        log.info("微信标识业务是失败");
-                        threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
-//                        resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
-                    }
-                } else {
-                    log.info("无效签名");
-                    threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
-//                    resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
-                }
-            } else {
-                log.info("通信标识失败");
-                threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
-//                resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
-            }
-        } catch (Exception e) {
-            log.error("支付回调签名错误", e);
-            threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
-//            resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
-        } finally {
-            // 通知线程消息
-//            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
-            sendResultBack(response, resXml);
-        }
-        return;
-
-    }
-    /**
-     * 微信支付回调接口
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @RequestMapping(value = "/wxpayCallback")
-    public void payCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
-        log.info("微信支付回调start....");
-
-        // 获取输入参数
-        String inputLine;
-        StringBuffer notityXml = new StringBuffer();
-        String resXml = "";
-        String orderId = "";
-
-        FebsResponse threadResult = new FebsResponse();
-        try {
-            while ((inputLine = request.getReader().readLine()) != null) {
-                notityXml.append(inputLine);
-            }
-            request.getReader().close();
-            log.info("notityXml ---- :{} ", notityXml);
-
-
-            // XMl转对象
-            Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class);
-            NotifyData data = new NotifyData();
-            BeanUtils.copyProperties(bb,data);
-            log.info("----return_code = {}", data.getReturn_code());
-
-            // 返回状态码 SUCCESS/FAIL
-            if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) {
-
-                orderId = data.getAttach();
-                // 检验订单状态
-                MallOrderInfo order = mallOrderInfoMapper.selectById(Long.valueOf(orderId));
-
-                // 校验签名
-//                String paySecret = WechatConfigure.WECHARPAY_SECRET;
-                String paySecret = xcxProperties.getWecharpaySecret();
-                if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret)) {
-                    // 校验业务结果
-                    if (WechatConfigure.CODE_SUCCESS.equals(data.getResult_code())) {
-                        // 返回SUCCESS报文
-                        resXml = WechatConfigure.RESULT_XML_SUCCESS;
-                        // 支付费用
-                        Double total_fee = Double.parseDouble(data.getTotal_fee());
-                        // 商户订单号
-                        String payNum = data.getOut_trade_no();
-
-                        log.info("支付回调关键信息---total_fee:{},payNum:{},orderId:{}", total_fee, payNum, orderId);
-                        // 订单ID
-                        BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
-                                RoundingMode.HALF_UP);
-
-
-                        if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) {
-                            log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount());
-                            order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
-                            order.setPayResult("1");
-                            order.setPayTime(new Date());
-                            order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
-                            mallOrderInfoMapper.updateById(order);
-                            threadResult.success().message("支付成功");
-                        } else {
-                            log.info("订单状态不为待付款,order status=", order.getStatus());
-                        }
-                    } else {
-                        log.info("微信标识业务是失败");
-                        threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
-//                        resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
-                    }
-                } else {
-                    log.info("无效签名");
-                    threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
-//                    resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
-                }
-            } else {
-                log.info("通信标识失败");
-                threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
-//                resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
-            }
-        } catch (Exception e) {
-            log.error("支付回调签名错误", e);
-            threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
-//            resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
-        } finally {
-            // 通知线程消息
-            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
-            sendResultBack(response, resXml);
-        }
-        return;
-
-    }
-
-    private void sendResultBack(HttpServletResponse response, String resXml) throws IOException {
-        log.info("返回微信数据={}", resXml);
-        ServletOutputStream out = response.getOutputStream();
-        out.write(resXml.getBytes());
-        out.flush();
-        out.close();
-    }
-
-}
+//package cc.mrbird.febs.pay.controller;
+//
+//import cc.mrbird.febs.common.entity.FebsResponse;
+//import cc.mrbird.febs.common.enumerates.*;
+//import cc.mrbird.febs.common.properties.XcxProperties;
+//import cc.mrbird.febs.common.utils.RedisUtils;
+//import cc.mrbird.febs.common.utils.SpringContextHolder;
+//import cc.mrbird.febs.mall.dto.RechargeWalletMessageSendDto;
+//import cc.mrbird.febs.mall.entity.*;
+//import cc.mrbird.febs.mall.mapper.*;
+//import cc.mrbird.febs.mall.service.IApiMallMemberService;
+//import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
+//import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+//import cc.mrbird.febs.pay.model.NotifyData;
+//import cc.mrbird.febs.pay.service.IXcxPayService;
+//import cc.mrbird.febs.pay.service.WxFaPiaoService;
+//import cc.mrbird.febs.pay.util.Signature;
+//import cc.mrbird.febs.pay.util.Util;
+//import cc.mrbird.febs.pay.util.WechatConfigure;
+//import cc.mrbird.febs.rabbit.producter.AgentProducer;
+//import cn.hutool.core.date.DateUtil;
+//import cn.hutool.core.util.ObjectUtil;
+//import cn.hutool.json.JSONObject;
+//import cn.hutool.json.JSONUtil;
+//import com.wechat.pay.contrib.apache.httpclient.notification.NotificationRequest;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import javax.servlet.ServletOutputStream;
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.io.BufferedReader;
+//import java.io.IOException;
+//import java.math.BigDecimal;
+//import java.math.RoundingMode;
+//import java.nio.charset.StandardCharsets;
+//import java.security.InvalidKeyException;
+//import java.security.NoSuchAlgorithmException;
+//import java.security.SignatureException;
+//import java.text.ParseException;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+//@Slf4j
+//@RestController
+//@RequestMapping(value = "/api/xcxPay")
+//public class XcxPayController {
+//
+//    @Autowired
+//    MallOrderInfoMapper mallOrderInfoMapper;
+//    @Autowired
+//    MallMoneyFlowMapper mallMoneyFlowMapper;
+//    @Autowired
+//    MallMemberWalletMapper mallMemberWalletMapper;
+//    @Autowired
+//    MallMemberMapper mallMemberMapper;
+//    @Autowired
+//    DataDictionaryCustomMapper dataDictionaryCustomMapper;
+//    @Autowired
+//    IMallMoneyFlowService mallMoneyFlowService;
+//    @Autowired
+//    RedisUtils redisUtils;
+//    @Autowired
+//    private IApiMallMemberWalletService memberWalletService;
+//    @Autowired
+//    private IApiMallMemberService mallMemberService;
+//    @Autowired
+//    private MallAgentRecordMapper mallAgentRecordMapper;
+//    @Autowired
+//    private AgentProducer agentProducer;
+//
+//    @Autowired
+//    private IXcxPayService iXcxPayService;
+//
+//    @Autowired
+//    private WxFaPiaoService wxFaPiaoService;
+//
+//    private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class);
+//    /**
+//     * 微信充值回调接口
+//     */
+//    @Transactional(rollbackFor = Exception.class)
+//    @RequestMapping(value = "/rechargeCallBack")
+//    public void rechargeCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
+//        log.info("微信充值回调start....");
+//
+//        // 获取输入参数
+//        String inputLine;
+//        StringBuffer notityXml = new StringBuffer();
+//        String resXml = "";
+//
+////        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+"}";
+//        String attrStr = "";
+//
+//        FebsResponse threadResult = new FebsResponse();
+//        try {
+//            while ((inputLine = request.getReader().readLine()) != null) {
+//                notityXml.append(inputLine);
+//            }
+//            request.getReader().close();
+//            log.info("notityXml ---- :{} ", notityXml);
+//
+//
+//            // XMl转对象
+//            Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class);
+//            NotifyData data = new NotifyData();
+//            BeanUtils.copyProperties(bb,data);
+//            log.info("----return_code = {}", data.getReturn_code());
+//            // 返回状态码 SUCCESS/FAIL
+//            if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) {
+//                attrStr = data.getAttach();
+//                JSONObject jsonObject = JSONUtil.parseObj(attrStr);
+//                String rechargeNo = (String) jsonObject.get("rechargeNo");
+//                Integer type = (Integer) jsonObject.get("type");
+//                Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
+//                Long agentApplyId = Long.parseLong(jsonObject.get("agentApplyId").toString());
+//                // 检验订单状态
+//                MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
+//                // 校验签名
+////                String paySecret = WechatConfigure.WECHARPAY_SECRET;
+//                String paySecret = xcxProperties.getWecharpaySecret();
+//                if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret)) {
+//                    // 校验业务结果
+//                    if (WechatConfigure.CODE_SUCCESS.equals(data.getResult_code())) {
+//                        // 返回SUCCESS报文
+//                        resXml = WechatConfigure.RESULT_XML_SUCCESS;
+//                        // 支付费用
+//                        Double total_fee = Double.parseDouble(data.getTotal_fee());
+//                        // 商户订单号
+//                        String payNum = data.getOut_trade_no();
+//
+//                        log.info("支付回调关键信息---total_fee:{},payNum:{},rechargeNo:{}", total_fee, payNum, rechargeNo);
+//                        // 订单ID
+//                        BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
+//                                RoundingMode.HALF_UP);
+//
+//                        if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
+//                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
+//                            //合伙人申请的充值,要更新会员状态为FIRST_LEVEL
+//                            if(2 == type){
+//                                log.info("微信充值回调" + agentApplyId);
+//                                MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(agentApplyId);
+//                                mallMemberService.updateMemberAgent(agentApplyId,mallAgentRecord.getAgentLevel());
+//                            }
+//                            memberWalletService.addBalance(payMoney,memberId);
+//                            mallMoneyFlow.setStatus(2);
+//                            mallMoneyFlowMapper.updateById(mallMoneyFlow);
+//
+//                            /**
+//                             * 充值赠送金额
+//                             */
+//                            DataDictionaryCustom giveStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                                    DataDictionaryEnum.GIVE_STATE.getType(),
+//                                    DataDictionaryEnum.GIVE_STATE.getCode());
+//
+//                            DataDictionaryCustom giveAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                                    DataDictionaryEnum.GIVE_AMOUNT.getType(),
+//                                    DataDictionaryEnum.GIVE_AMOUNT.getCode());
+//
+//                            DataDictionaryCustom chargeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+//                                    DataDictionaryEnum.CHARGE_AMOUNT.getType(),
+//                                    DataDictionaryEnum.CHARGE_AMOUNT.getCode());
+//                            /**
+//                             * 普通充值
+//                             * 开启了充值赠送
+//                             * 系统设置的赠送金额和充值金额不为空
+//                             * 充值金额大于等于系统设置的充值金额
+//                             */
+//                            if(1 == type
+//                                    && ObjectUtil.isNotEmpty(giveStateDic)
+//                                    && "1".equals(giveStateDic.getValue())
+//                                    && ObjectUtil.isNotEmpty(giveAmountDic)
+//                                    && ObjectUtil.isNotEmpty(chargeAmountDic)){
+//                                BigDecimal giveAmount = ObjectUtil.isEmpty(giveAmountDic.getValue()) ?
+//                                        BigDecimal.ZERO :
+//                                        new BigDecimal(giveAmountDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN);
+//                                BigDecimal chargeAmount = ObjectUtil.isEmpty(chargeAmountDic.getValue()) ?
+//                                        BigDecimal.ZERO :
+//                                        new BigDecimal(chargeAmountDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN);
+//                                if(payMoney.compareTo(chargeAmount) >= 0){
+//                                    mallMoneyFlowService.addMoneyFlow(
+//                                            memberId,
+//                                            giveAmount,
+//                                            MoneyFlowTypeEnum.RECHARGE_SEND.getValue(),
+//                                            rechargeNo+"ZS",
+//                                            FlowTypeEnum.BALANCE.getValue(),
+//                                            "充值赠送金额",
+//                                            2);
+//
+//                                    memberWalletService.addBalance(giveAmount,memberId);
+//                                }
+//                            }
+//
+//                            RechargeWalletMessageSendDto rechargeWalletMessageSendDto = new RechargeWalletMessageSendDto();
+//                            rechargeWalletMessageSendDto.setRechargeNo(rechargeNo);
+//                            rechargeWalletMessageSendDto.setRechargeAmount(payMoney.toString());
+//
+//                            MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+//                            rechargeWalletMessageSendDto.setBalance(mallMemberWallet.getBalance().toString());
+//                            rechargeWalletMessageSendDto.setCreateTime(DateUtil.now());
+//                            rechargeWalletMessageSendDto.setOpenId(mallMemberMapper.selectById(memberId).getOpenId());
+//                            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_TWO.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_TWO.getCode());
+//                            rechargeWalletMessageSendDto.setTemplateId(dataDictionaryCustom.getValue());
+//                            iXcxPayService.rechargeWalletMessageSend(rechargeWalletMessageSendDto);
+//                            threadResult.success().message("充值成功");
+//                        } else {
+//                            log.info("充值失败", attrStr);
+//                        }
+//                    } else {
+//                        log.info("微信标识业务是失败");
+//                        threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
+////                        resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+//                    }
+//                } else {
+//                    log.info("无效签名");
+//                    threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
+////                    resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+//                }
+//            } else {
+//                log.info("通信标识失败");
+//                threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
+////                resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
+//            }
+//        } catch (Exception e) {
+//            log.error("支付回调签名错误", e);
+//            threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
+////            resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
+//        } finally {
+//            // 通知线程消息
+////            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
+//            sendResultBack(response, resXml);
+//        }
+//        return;
+//
+//    }
+//
+////    public static void main(String[] args) {
+////        String attach="{'rechargeNo':CZ_2022083117160259880,'memberId':47}";
+////        JSONObject jsonObject = JSONUtil.parseObj(attach);
+////        String rechargeNo = (String) jsonObject.get("rechargeNo");
+////        Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
+////        System.out.println(memberId);
+////        System.out.println(rechargeNo);
+////    }
+//    /**
+//     * 微信电子发票回调接口
+//     * POST方式回调
+//     * @return
+//     */
+//    @Transactional(rollbackFor = Exception.class)
+//    @RequestMapping(value = "/fapiaoCallBack")
+//    public Map<String, Object> fapiaoCallBack(HttpServletRequest request, @RequestBody Map<String, Object> requestBody) {
+//        return wxFaPiaoService.fapiaoCallBack(request,requestBody);
+//
+//    }
+//
+//    /**
+//     * 微信支付回调接口
+//     */
+//    @Transactional(rollbackFor = Exception.class)
+//    @RequestMapping(value = "/wxpayCallback")
+//    public void payCallBack(HttpServletResponse response, HttpServletRequest request) throws IOException {
+//        log.info("微信支付回调start....");
+//
+//        // 获取输入参数
+//        String inputLine;
+//        StringBuffer notityXml = new StringBuffer();
+//        String resXml = "";
+//        String orderId = "";
+//
+//        FebsResponse threadResult = new FebsResponse();
+//        try {
+//            while ((inputLine = request.getReader().readLine()) != null) {
+//                notityXml.append(inputLine);
+//            }
+//            request.getReader().close();
+//            log.info("notityXml ---- :{} ", notityXml);
+//
+//
+//            // XMl转对象
+//            Object bb = Util.getObjectFromXML(notityXml.toString(), NotifyData.class);
+//            NotifyData data = new NotifyData();
+//            BeanUtils.copyProperties(bb,data);
+//            log.info("----return_code = {}", data.getReturn_code());
+//
+//            // 返回状态码 SUCCESS/FAIL
+//            if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) {
+//
+//                orderId = data.getAttach();
+//                // 检验订单状态
+//                MallOrderInfo order = mallOrderInfoMapper.selectById(Long.valueOf(orderId));
+//
+//                // 校验签名
+////                String paySecret = WechatConfigure.WECHARPAY_SECRET;
+//                String paySecret = xcxProperties.getWecharpaySecret();
+//                if (Signature.checkIsSignValidFromResponseString(notityXml.toString(),paySecret)) {
+//                    // 校验业务结果
+//                    if (WechatConfigure.CODE_SUCCESS.equals(data.getResult_code())) {
+//                        // 返回SUCCESS报文
+//                        resXml = WechatConfigure.RESULT_XML_SUCCESS;
+//                        // 支付费用
+//                        Double total_fee = Double.parseDouble(data.getTotal_fee());
+//                        //微信支付订单号
+//                        String transaction_id = data.getTransaction_id();
+//                        // 商户订单号
+//                        String payNum = data.getOut_trade_no();
+//
+//                        log.info("支付回调关键信息---total_fee:{},payNum:{},orderId:{}", total_fee, payNum, orderId);
+//                        // 订单ID
+//                        BigDecimal payMoney = new BigDecimal(total_fee).divide(new BigDecimal(100), 2,
+//                                RoundingMode.HALF_UP);
+//
+//
+//                        if (order != null && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()) {
+//                            log.debug("检查支付金额payMoney={},order.getPayMoney()={}", payMoney, order.getAmount());
+//                            order.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+//                            order.setPayResult("1");
+//                            order.setPayTime(new Date());
+//                            order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
+//                            order.setPayOrderNo(transaction_id);
+//                            mallOrderInfoMapper.updateById(order);
+//
+//                            agentProducer.sendOrderCoupon(order.getId());
+////                            agentProducer.sendGetScoreMsg(order.getId());
+//
+//                            mallMoneyFlowService.addMoneyFlow(
+//                                    order.getMemberId(),
+//                                    order.getAmount().negate(),
+//                                    MoneyFlowTypeEnum.WECHAT_PAY.getValue(),
+//                                    order.getOrderNo(),
+//                                    FlowTypeEnum.WECHAT.getValue(),
+//                                    "微信支付",
+//                                    2);
+//                            threadResult.success().message("支付成功");
+//                        } else {
+//                            log.info("订单状态不为待付款,order status=", order.getStatus());
+//                        }
+//                    } else {
+//                        log.info("微信标识业务是失败");
+//                        threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:001)");
+////                        resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+//                    }
+//                } else {
+//                    log.info("无效签名");
+//                    threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:002)");
+////                    resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "微信标识业务是失败");
+//                }
+//            } else {
+//                log.info("通信标识失败");
+//                threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:003)");
+////                resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "通信标识失败");
+//            }
+//        } catch (Exception e) {
+//            log.error("支付回调签名错误", e);
+//            threadResult.fail().message("查询支付信息失败,请联系客服或者刷新支付信息(错误码:004)");
+////            resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
+//        } finally {
+//            // 通知线程消息
+////            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
+//            sendResultBack(response, resXml);
+//        }
+//        return;
+//
+//    }
+//
+//    private void sendResultBack(HttpServletResponse response, String resXml) throws IOException {
+//        log.info("返回微信数据={}", resXml);
+//        ServletOutputStream out = response.getOutputStream();
+//        out.write(resXml.getBytes());
+//        out.flush();
+//        out.close();
+//    }
+//
+//}

--
Gitblit v1.9.1