From f501ddfe054f23e50239dff36270fc2f56d15e7d Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 08 May 2023 17:00:55 +0800
Subject: [PATCH] 微信支付

---
 src/main/java/cc/mrbird/febs/pay/service/AliIPayService.java                    |   16 ++
 src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImplAli.java            |    8 -
 src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java             |  122 ++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   60 ++++++---
 src/main/java/cc/mrbird/febs/mall/service/ICommonService.java                   |    2 
 src/main/java/cc/mrbird/febs/pay/properties/WxPayProperties.java                |   34 +++++
 src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java                |    6 
 src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java          |    8 -
 src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java               |   56 ++++++++
 src/main/java/cc/mrbird/febs/pay/service/IPayService.java                       |    8 -
 src/main/resources/application-test.yml                                         |    9 +
 pom.xml                                                                         |    6 +
 12 files changed, 288 insertions(+), 47 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2b6819d..17cd494 100644
--- a/pom.xml
+++ b/pom.xml
@@ -323,6 +323,12 @@
             <artifactId>poi-ooxml-schemas</artifactId>
             <version>3.8</version>
         </dependency>
+        <!-- 微信支付 -->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-pay</artifactId>
+            <version>4.4.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
index 60f4b46..6c09b78 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
@@ -25,7 +25,11 @@
     /**
      * 佣金
      */
-    COMMISSION(4);
+    COMMISSION(4),
+    /**
+     * 微信支付
+     */
+    WX(5);
 
     private final int value;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java
index 5eb07b0..7b66cac 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/ICommonService.java
@@ -21,4 +21,6 @@
 
     void updateDataDic(String type, String code, String value);
 
+    void addAchieveAndUpdateLevel(Long orderId,Long memberId);
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 91affc1..8f3f3ae 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -19,8 +19,8 @@
 import cc.mrbird.febs.mall.vo.OrderListVo;
 import cc.mrbird.febs.mall.vo.OrderRefundVo;
 import cc.mrbird.febs.pay.model.AgreementPayDto;
-import cc.mrbird.febs.pay.model.AgreementSignDto;
 import cc.mrbird.febs.pay.model.UnipayDto;
+import cc.mrbird.febs.pay.service.AliIPayService;
 import cc.mrbird.febs.pay.service.IPayService;
 import cc.mrbird.febs.pay.service.UnipayService;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -37,7 +37,6 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -70,7 +69,7 @@
     private final RedisUtils redisUtils;
 
     private final AgentProducer agentProducer;
-    private final IPayService payService;
+    private final AliIPayService payService;
     private final IMallAchieveService mallAchieveService;
     private final MallAchieveRecordMapper mallAchieveRecordMapper;
     private final UnipayService unipayService;
@@ -78,6 +77,8 @@
     private final MallMemberBankSignMapper mallMemberBankSignMapper;
     private final MallMemberBankMapper mallMemberBankMapper;
     private final MallShopApplyMapper mallShopApplyMapper;
+    private final IPayService wechatPayService;
+    private final ICommonService commonService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -261,32 +262,45 @@
         String rcResult = "";
         switch (payOrderDto.getType()) {
             case "1":
-                UnipayDto unipayDtoWx = new UnipayDto();
-//                unipayDto.setAmount(new BigDecimal("0.01"));
-                unipayDtoWx.setAmount(orderInfo.getAmount());
-                unipayDtoWx.setFrpCode("WEIXIN_APP3");
-                unipayDtoWx.setTradeMerchantNo("777180800385820");
-                unipayDtoWx.setOrderNo(orderInfo.getOrderNo());
                 List<MallOrderItem> itemsWx = orderInfo.getItems();
                 if(CollUtil.isEmpty(itemsWx)){
-                    unipayDtoWx.setProductName("商品");
+                    orderInfo.setName("商品");
                 }else{
-                    unipayDtoWx.setProductName(itemsWx.get(0).getGoodsName());
+                    orderInfo.setName(itemsWx.get(0).getGoodsName());
                 }
-                String unipayStrWx = unipayService.unipay(unipayDtoWx);
-                if("fail" == unipayStrWx){
-                    throw new FebsException("支付失败");
-                }else{
-//                    JSONUtil.parseObj(unipayStr);
-                    JSONObject jsonObject = JSONUtil.parseObj(unipayStrWx);
-                    payResultStr = (String) jsonObject.get("r7_TrxNo");
-                    rcResult = (String) jsonObject.get("rc_Result");
-                }
+
+                payResultStr = wechatPayService.pay(orderInfo);
                 orderInfo.setPayOrderNo(payResultStr);
-//                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
-//                orderInfo.setPayImage(payOrderDto.getPayImage());
                 orderInfo.setPayMethod("微信支付");
+                orderInfo.setPayResult("2");
                 break;
+//            case "1":
+//                UnipayDto unipayDtoWx = new UnipayDto();
+////                unipayDto.setAmount(new BigDecimal("0.01"));
+//                unipayDtoWx.setAmount(orderInfo.getAmount());
+//                unipayDtoWx.setFrpCode("WEIXIN_APP3");
+//                unipayDtoWx.setTradeMerchantNo("777180800385820");
+//                unipayDtoWx.setOrderNo(orderInfo.getOrderNo());
+//                List<MallOrderItem> itemsWx = orderInfo.getItems();
+//                if(CollUtil.isEmpty(itemsWx)){
+//                    unipayDtoWx.setProductName("商品");
+//                }else{
+//                    unipayDtoWx.setProductName(itemsWx.get(0).getGoodsName());
+//                }
+//                String unipayStrWx = unipayService.unipay(unipayDtoWx);
+//                if("fail" == unipayStrWx){
+//                    throw new FebsException("支付失败");
+//                }else{
+////                    JSONUtil.parseObj(unipayStr);
+//                    JSONObject jsonObject = JSONUtil.parseObj(unipayStrWx);
+//                    payResultStr = (String) jsonObject.get("r7_TrxNo");
+//                    rcResult = (String) jsonObject.get("rc_Result");
+//                }
+//                orderInfo.setPayOrderNo(payResultStr);
+////                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
+////                orderInfo.setPayImage(payOrderDto.getPayImage());
+//                orderInfo.setPayMethod("微信支付");
+//                break;
             case "2":
 //                if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) {
 //                    payResultStr = orderInfo.getPayOrderNo();
@@ -329,8 +343,8 @@
                 this.baseMapper.updateById(orderInfo);
                 //新增业绩,第一次购买套餐则升级用户为普通会员
 
-                addAchieveAndUpdateLevel(orderInfo.getId(),member.getId());
 
+                commonService.addAchieveAndUpdateLevel(orderInfo.getId(),orderInfo.getMemberId());
                 mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
                 agentProducer.sendAutoLevelUpMsg(member.getId());
 //                agentProducer.sendOrderReturn(orderInfo.getId());
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
index ad5ce73..70395e5 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
@@ -1,18 +1,19 @@
 package cc.mrbird.febs.mall.service.impl;
 
+import cc.mrbird.febs.common.enumerates.MemberLevelEnum;
 import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.RedisUtils;
-import cc.mrbird.febs.mall.entity.AppVersion;
-import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
-import cc.mrbird.febs.mall.mapper.AppVersionMapper;
-import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
+import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.ICommonService;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -26,6 +27,11 @@
     private final RedisUtils redisUtils;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final AppVersionMapper appVersionMapper;
+    private final MallOrderInfoMapper mallOrderInfoMapper;
+    private final MallMemberMapper memberMapper;
+    private final MallGoodsMapper mallGoodsMapper;
+    private final MallGoodsSkuMapper mallGoodsSkuMapper;
+    private final MallAchieveRecordMapper mallAchieveRecordMapper;
 
     @Override
     public boolean verifyCode(String account, String code) {
@@ -82,4 +88,46 @@
             dataDictionaryCustomMapper.updateById(dic);
         }
     }
+
+    @Override
+    public void addAchieveAndUpdateLevel(Long orderId,Long memberId){
+        MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(orderId);
+        MallMember member = memberMapper.selectById(memberId);
+
+        boolean hasTc = false;
+        BigDecimal achieveAmount = BigDecimal.ZERO;
+        List<MallOrderItem> orderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(orderId);
+        if (CollUtil.isNotEmpty(orderItems)) {
+            for (MallOrderItem orderItem : orderItems) {
+                MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
+                MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
+                if (mallGoods.getIsNormal() == 2) {
+                    hasTc = true;
+                    achieveAmount = achieveAmount.add(sku.getPresentPrice().multiply(new BigDecimal(orderItem.getCnt())));
+                }
+            }
+        }
+
+        if (hasTc){
+            if(achieveAmount.compareTo(BigDecimal.ZERO) > 0) {
+                // 添加业绩
+                MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+                mallAchieveRecord.setMemberId(memberId);
+                mallAchieveRecord.setAmount(achieveAmount);
+                mallAchieveRecord.setAchieveTime(orderInfo.getPayTime());
+                mallAchieveRecord.setOrderId(orderInfo.getId());
+                mallAchieveRecord.setIsNormal(2);
+                mallAchieveRecord.setPayTime(orderInfo.getPayTime());
+                mallAchieveRecordMapper.insert(mallAchieveRecord);
+                //得到三倍补助
+//                BigDecimal multiply = achieveAmount.multiply(new BigDecimal(3));
+//                memberWalletService.add(multiply, memberId, "commission");
+
+            }
+            if(member.getLevel().equals(MemberLevelEnum.FANS.getType())){
+                member.setLevel(MemberLevelEnum.NORMAL.getType());
+                memberMapper.updateById(member);
+            }
+        }
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
index 6616618..4b09e49 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
@@ -1,16 +1,12 @@
 package cc.mrbird.febs.pay.controller;
 
-import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.pay.properties.AliPayProperties;
-import cc.mrbird.febs.pay.service.IPayService;
-import com.alibaba.fastjson.JSONObject;
+import cc.mrbird.febs.pay.service.AliIPayService;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.ijpay.alipay.AliPayApi;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -28,7 +24,7 @@
 public class PayCallBackController {
 
     @Autowired
-    private IPayService payService;
+    private AliIPayService payService;
 
     @Resource
     private AliPayProperties aliPayProperties;
diff --git a/src/main/java/cc/mrbird/febs/pay/properties/WxPayProperties.java b/src/main/java/cc/mrbird/febs/pay/properties/WxPayProperties.java
new file mode 100644
index 0000000..e456c25
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/properties/WxPayProperties.java
@@ -0,0 +1,34 @@
+package cc.mrbird.febs.pay.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author wzy
+ * @date 2023-04-07
+ **/
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "pay.wx")
+public class WxPayProperties {
+
+    /**
+     * 设置微信公众号或者小程序等的appid
+     */
+    private String appId;
+
+    /**
+     * 微信支付商户号
+     */
+    private String mchId;
+
+    /**
+     * 微信支付商户密钥
+     */
+    private String mchKey;
+
+    private String keyPath;
+
+    private String noticeUrl;
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/AliIPayService.java b/src/main/java/cc/mrbird/febs/pay/service/AliIPayService.java
new file mode 100644
index 0000000..4b8cc4f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/service/AliIPayService.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.pay.service;
+
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2021-09-27
+ **/
+public interface AliIPayService {
+
+    String aliPay(MallOrderInfo orderInfo);
+
+    void aliCallback(Map<String, String> params);
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/service/IPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java
index 155cfb7..ce5f928 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/IPayService.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/IPayService.java
@@ -4,13 +4,9 @@
 
 import java.util.Map;
 
-/**
- * @author wzy
- * @date 2021-09-27
- **/
 public interface IPayService {
 
-    String aliPay(MallOrderInfo orderInfo);
+    String pay(MallOrderInfo orderInfo);
 
-    void aliCallback(Map<String, String> params);
+    void payCallback(Map<String, String> params);
 }
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImplAli.java
similarity index 92%
rename from src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
rename to src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImplAli.java
index 3883bcb..487bd21 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImplAli.java
@@ -1,20 +1,16 @@
 package cc.mrbird.febs.pay.service.impl;
 
 import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallOrderInfo;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
-import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
 import cc.mrbird.febs.pay.model.AliPayPassbackModel;
 import cc.mrbird.febs.pay.properties.AliPayProperties;
-import cc.mrbird.febs.pay.service.IPayService;
+import cc.mrbird.febs.pay.service.AliIPayService;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
-import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.api.AlipayApiException;
 import com.alipay.api.domain.AlipayTradeAppPayModel;
@@ -36,7 +32,7 @@
  **/
 @Slf4j
 @Service
-public class PayServiceImpl implements IPayService {
+public class PayServiceImplAli implements AliIPayService {
 
     @Resource
     private AliPayProperties aliPayProperties;
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java
new file mode 100644
index 0000000..4fd1300
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/WxPayServiceImpl.java
@@ -0,0 +1,122 @@
+package cc.mrbird.febs.pay.service.impl;
+
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
+import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
+import cc.mrbird.febs.mall.service.ICommonService;
+import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
+import cc.mrbird.febs.pay.properties.WxPayProperties;
+import cc.mrbird.febs.pay.service.IPayService;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.binarywang.wxpay.bean.order.WxPayAppOrderResult;
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2023-04-07
+ **/
+@Slf4j
+@Service("wechatPayService")
+@RequiredArgsConstructor
+public class WxPayServiceImpl implements IPayService {
+
+    @Autowired
+    private ICommonService commonService;
+
+    @Autowired
+    private MallOrderInfoMapper orderInfoMapper;
+
+    @Autowired
+    private WxPayService wxPayService;
+
+    @Autowired
+    private WxPayProperties wxPayProperties;
+
+    @Autowired
+    private AgentProducer agentProducer;
+
+    @Autowired
+    private IMallMoneyFlowService mallMoneyFlowService;
+
+    @Value("${spring.profiles.active}")
+    private String active;
+
+    @Override
+    public String pay(MallOrderInfo orderInfo) {
+        WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
+        request.setAppid(wxPayProperties.getAppId());
+        request.setMchId(wxPayProperties.getMchId());
+        request.setNotifyUrl(wxPayProperties.getNoticeUrl());
+        request.setBody(orderInfo.getName());
+        request.setOutTradeNo(orderInfo.getOrderNo());
+        request.setTimeExpire(DateUtil.format(DateUtil.offset(new Date(), DateField.MINUTE, 15), DatePattern.PURE_DATETIME_PATTERN));
+        request.setSpbillCreateIp("127.0.0.1");
+        request.setTradeType("APP");
+
+        if ("dev".equals(active) || "test".equals(active)) {
+            request.setTotalFee(1);
+        } else {
+            request.setTotalFee(orderInfo.getAmount().add(orderInfo.getCarriage()).multiply(new BigDecimal(100)).intValue());
+        }
+
+        try {
+            WxPayAppOrderResult result = wxPayService.createOrder(request);
+            return JSONObject.toJSONString(result);
+        } catch (WxPayException e) {
+            e.printStackTrace();
+            throw new FebsException("支付异常, 请检查");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void payCallback(Map<String, String> params) {
+        String orderNo = params.get("out_trade_no");
+
+        LambdaQueryWrapper<MallOrderInfo> query = new LambdaQueryWrapper<>();
+        query.eq(MallOrderInfo::getOrderNo, orderNo);
+        MallOrderInfo orderInfo = this.orderInfoMapper.selectOne(query);
+        if ("1".equals(orderInfo.getPayResult())) {
+            return;
+        }
+
+        orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+        orderInfo.setPayResult("1");
+        orderInfo.setPayTime(new Date());
+        orderInfo.setPayTradeNo(params.get("transaction_id"));
+        orderInfoMapper.updateById(orderInfo);
+
+        commonService.addAchieveAndUpdateLevel(orderInfo.getId(),orderInfo.getMemberId());
+        mallMoneyFlowService.addMoneyFlow(orderInfo.getMemberId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.WX.getValue());
+        agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
+        agentProducer.sendReturnMoneyMsg(orderInfo.getId());
+
+    }
+}
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index e40d05f..3020490 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -57,4 +57,11 @@
     privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw==
     # 回调地址
     noticeUrl: http://120.27.238.55:8801/api/pay/aliCallBack
-    domain: https://openapi.alipaydev.com/gateway.do
\ No newline at end of file
+    domain: https://openapi.alipaydev.com/gateway.do
+
+  wx:
+    appId: wx051693799db39540
+    mchId: 1641389321
+    mchKey: wqri51aCfiG31o4IcdX3dW12qnX3u4hp
+    keyPath: classpath:cert/apiclient_cert.p12
+    noticeUrl: http://120.27.238.55:8185/api/pay/wxPayCallBack
\ No newline at end of file

--
Gitblit v1.9.1