KKSU
2023-12-22 0e3064b8722b33ee2cf67f8fac581a8b0e04832b
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -19,6 +19,7 @@
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.IXcxCodePayService;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.util.PayThreadPool;
import cc.mrbird.febs.pay.util.Signature;
@@ -28,15 +29,17 @@
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
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.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.thymeleaf.engine.TemplateData;
@@ -69,6 +72,12 @@
    RedisUtils redisUtils;
    @Autowired
    private IApiMallMemberWalletService memberWalletService;
//    @Autowired
//    private WxPayService wxPayService;
//
//    @Autowired
//    private IXcxCodePayService xcxCodePayService;
    @Autowired
    private IXcxPayService iXcxPayService;
@@ -109,7 +118,7 @@
                attrStr = data.getAttach();
                JSONObject jsonObject = JSONUtil.parseObj(attrStr);
                String rechargeNo = (String) jsonObject.get("rechargeNo");
                Long memberId = (Long) jsonObject.get("memberId");
                Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
                // 检验订单状态
                MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
                // 校验签名
@@ -131,19 +140,22 @@
                                RoundingMode.HALF_UP);
                        if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
                                log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
                                memberWalletService.addBalance(payMoney,memberId);
                                RechargeWalletMessageSendDto rechargeWalletMessageSendDto = new RechargeWalletMessageSendDto();
                                rechargeWalletMessageSendDto.setRechargeNo(rechargeNo);
                                rechargeWalletMessageSendDto.setRechargeAmount(payMoney.toString());
                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
                            memberWalletService.addBalance(payMoney,memberId);
                            mallMoneyFlow.setStatus(2);
                            mallMoneyFlowMapper.updateById(mallMoneyFlow);
                                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);
                            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);
@@ -175,6 +187,15 @@
        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);
//    }
    /**
     * 微信支付回调接口
     */
@@ -233,7 +254,7 @@
                        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.setPayResult(1);
                            order.setPayTime(new Date());
                            order.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue());
                            mallOrderInfoMapper.updateById(order);
@@ -262,7 +283,7 @@
//            resXml = AppConstance.RESULT_XML_FAIL.replace(ERRORMSG, "支付回调签名错误");
        } finally {
            // 通知线程消息
            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
//            PayThreadPool.notifyThread(Integer.valueOf(orderId), threadResult);
            sendResultBack(response, resXml);
        }
        return;
@@ -277,4 +298,14 @@
        out.close();
    }
//    @PostMapping(value = "/xcxCodePayCallBack")
//    public String xcxCodePayCallBack(@RequestBody String xmlData) throws WxPayException {
//        log.info("=======微信支付码付款回调:{}========", xmlData);
//        WxPayOrderNotifyResult notifyResult = wxPayService.parseOrderNotifyResult(xmlData);
//        xcxCodePayService.payCallback(notifyResult.toMap());
//        return WxPayNotifyResponse.success("成功");
//    }
}