傅行帆 5 år sedan
förälder
incheckning
b1c464e6c8

+ 13
- 1
src/main/java/com/huiju/estateagents/controller/WxPayController.java Visa fil

@@ -1,11 +1,14 @@
1 1
 package com.huiju.estateagents.controller;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.huiju.estateagents.base.BaseController;
4 5
 import com.huiju.estateagents.base.ResponseBean;
5 6
 import com.huiju.estateagents.common.MD5Utils;
6 7
 import com.huiju.estateagents.common.wxpay.WXPayConstants;
7 8
 import com.huiju.estateagents.common.wxpay.WXPayUtil;
8 9
 import com.huiju.estateagents.entity.TaOrder;
10
+import com.huiju.estateagents.entity.TaWxPayConfig;
11
+import com.huiju.estateagents.service.ITaWxPayConfigService;
9 12
 import com.huiju.estateagents.service.IWxPayService;
10 13
 import lombok.extern.slf4j.Slf4j;
11 14
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -35,6 +38,9 @@ public class WxPayController extends BaseController {
35 38
     @Autowired
36 39
     private IWxPayService wxPayService;
37 40
 
41
+    @Autowired
42
+    private ITaWxPayConfigService taWxPayConfigService;
43
+
38 44
     /**
39 45
      * 微信统一下单接口
40 46
      * @param taOrder
@@ -135,10 +141,16 @@ public class WxPayController extends BaseController {
135 141
             resultMap = WXPayUtil.xmlToMap(result);
136 142
             //处理业务需求
137 143
             if (WXPayConstants.SUCCESS.equalsIgnoreCase(resultMap.get("result_code"))) {
138
-                SecretKeySpec key = new SecretKeySpec(MD5Utils.md5("key需要从库里获取", "UTF-8").toLowerCase().getBytes(), "AES");
144
+                String mchId = resultMap.get("mch_id");
145
+                QueryWrapper<TaWxPayConfig> queryWrapper = new QueryWrapper<>();
146
+                queryWrapper.eq("mch_id",mchId);
147
+                String mchKey = taWxPayConfigService.list(queryWrapper).get(0).getMchKey();
148
+                SecretKeySpec key = new SecretKeySpec(MD5Utils.md5(mchKey, "UTF-8").toLowerCase().getBytes(), "AES");
139 149
                 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
140 150
                 cipher.init(Cipher.DECRYPT_MODE, key);
141 151
                 String req_info = new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(resultMap.get("req_info"))), "UTF-8");
152
+                Map<String, String> orderInfo = WXPayUtil.xmlToMap(req_info);
153
+                wxPayService.houseRefund(orderInfo);
142 154
             }else {
143 155
                 log.error("支付回调出错{}",resultMap.get("return_msg"));
144 156
                 return failResult;

+ 2
- 0
src/main/java/com/huiju/estateagents/service/IWxPayService.java Visa fil

@@ -24,4 +24,6 @@ public interface IWxPayService {
24 24
      * @param userId
25 25
      */
26 26
     void payRefund(TaOrder taOrder, Integer orgId, Integer userId) throws Exception;
27
+
28
+    void houseRefund(Map<String, String> orderInfo);
27 29
 }

+ 21
- 0
src/main/java/com/huiju/estateagents/service/impl/WxPayServiceImpl.java Visa fil

@@ -171,6 +171,27 @@ public class WxPayServiceImpl implements IWxPayService {
171 171
         updateRefundOrderStatus(taOrder);
172 172
     }
173 173
 
174
+    /**
175
+     * 微信退款接口
176
+     * @param orderInfo
177
+     */
178
+    @Override
179
+    public void houseRefund(Map<String, String> orderInfo) {
180
+        //更新订单状态为退款
181
+        String transactionId = orderInfo.get("transaction_id");
182
+        List<TaOrder> orderList = taOrderMapper.selectList(new QueryWrapper<TaOrder>().eq("transaction_id", transactionId));
183
+        orderList.forEach(e -> {
184
+            e.setPayStatus(CommConstant.PAY_STATUS_REFUNDED);
185
+            taOrderMapper.updateById(e);
186
+            if (null != e.getParentOrderId()){
187
+                //更新认筹单为退款
188
+                TaRaiseRecord taRaiseRecord = taRaiseRecordMapper.selectOne(new QueryWrapper<TaRaiseRecord>().eq("order_id", e.getParentOrderId()));
189
+                taRaiseRecord.setPayStatus(CommConstant.PAY_STATUS_REFUNDED);
190
+                taRaiseRecordMapper.updateById(taRaiseRecord);
191
+            }
192
+        });
193
+    }
194
+
174 195
     /**
175 196
      * 插入退款订单并更新认筹单的退款原因
176 197
      * @param taOrder