傅行帆 5 年之前
父節點
當前提交
f2cbe97c27

+ 8
- 5
src/main/java/com/huiju/estateagents/controller/TaRaiseRecordController.java 查看文件

@@ -532,17 +532,20 @@ public class TaRaiseRecordController extends BaseController {
532 532
                 }
533 533
             });
534 534
 
535
+            Map<String, Object> map = new HashMap<>();
536
+            map.put("refundOrder", null);
535 537
             //订单信息
536 538
             TaOrder taOrder = taOrderService.getById(taRaiseRecord.getOrderId());
537
-            //退费信息
538
-            TaOrder refundOrder = taOrderService.getOne(new QueryWrapper<TaOrder>().eq("parent_order_id",taOrder.getOrderId()));
539
-
540
-            Map<String, Object> map = new HashMap<>();
539
+            if (null != taOrder){
540
+                //退费信息
541
+                TaOrder refundOrder = taOrderService.getOne(new QueryWrapper<TaOrder>().eq("parent_order_id",taOrder.getOrderId()));
542
+                map.put("refundOrder", refundOrder);
543
+            }
541 544
             map.put("taRaiseRecord", taRaiseRecord);
542 545
             map.put("taRaiseHouseList", taRaiseHouseList);
543 546
             map.put("houseList", houseList);
544 547
             map.put("taOrder", taOrder);
545
-            map.put("refundOrder", refundOrder);
548
+
546 549
             map.put("taRaise", taRaise);
547 550
             responseBean.addSuccess(map);
548 551
         } catch (Exception e) {

+ 6
- 3
src/main/java/com/huiju/estateagents/controller/WxPayController.java 查看文件

@@ -11,6 +11,7 @@ import com.huiju.estateagents.entity.TaWxPayConfig;
11 11
 import com.huiju.estateagents.service.ITaWxPayConfigService;
12 12
 import com.huiju.estateagents.service.IWxPayService;
13 13
 import lombok.extern.slf4j.Slf4j;
14
+import org.apache.commons.codec.digest.DigestUtils;
14 15
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
15 16
 import org.springframework.beans.factory.annotation.Autowired;
16 17
 import org.springframework.web.bind.annotation.*;
@@ -117,7 +118,7 @@ public class WxPayController extends BaseController {
117 118
      */
118 119
     @RequestMapping(value = "/refund/{type}",method = RequestMethod.POST)
119 120
     public String wxRefund(@PathVariable String type, HttpServletRequest request){
120
-        log.info("支付成功回调开始,支付类型是{}",type);
121
+        log.info("微信退款成功回调开始,退款类型是{}",type);
121 122
         String failResult = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[失败]]></return_msg>" + "</xml> ";
122 123
         String successResult = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
123 124
         Map<String, String> resultMap = new HashMap<>();
@@ -140,15 +141,17 @@ public class WxPayController extends BaseController {
140 141
             // xml转换为map
141 142
             resultMap = WXPayUtil.xmlToMap(result);
142 143
             //处理业务需求
143
-            if (WXPayConstants.SUCCESS.equalsIgnoreCase(resultMap.get("result_code"))) {
144
+            if (WXPayConstants.SUCCESS.equalsIgnoreCase(resultMap.get("return_code"))) {
144 145
                 String mchId = resultMap.get("mch_id");
145 146
                 QueryWrapper<TaWxPayConfig> queryWrapper = new QueryWrapper<>();
146 147
                 queryWrapper.eq("mch_id",mchId);
147 148
                 String mchKey = taWxPayConfigService.list(queryWrapper).get(0).getMchKey();
148
-                SecretKeySpec key = new SecretKeySpec(MD5Utils.md5(mchKey, "UTF-8").toLowerCase().getBytes(), "AES");
149
+                log.info("key等于{}",mchKey);
150
+                SecretKeySpec key = new SecretKeySpec(DigestUtils.md5Hex(mchKey).toLowerCase().getBytes(), "AES");
149 151
                 Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
150 152
                 cipher.init(Cipher.DECRYPT_MODE, key);
151 153
                 String req_info = new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(resultMap.get("req_info"))), "UTF-8");
154
+                log.info("req_info等于{}",req_info);
152 155
                 Map<String, String> orderInfo = WXPayUtil.xmlToMap(req_info);
153 156
                 wxPayService.houseRefund(orderInfo);
154 157
             }else {

+ 6
- 0
src/main/java/com/huiju/estateagents/service/impl/WxPayServiceImpl.java 查看文件

@@ -191,6 +191,7 @@ public class WxPayServiceImpl implements IWxPayService {
191 191
      */
192 192
     @Override
193 193
     public void houseRefund(Map<String, String> orderInfo) {
194
+        log.info("更新订单{}状态为退款",orderInfo.get("transaction_id"));
194 195
         //更新订单状态为退款
195 196
         String transactionId = orderInfo.get("transaction_id");
196 197
         List<TaOrder> orderList = taOrderMapper.selectList(new QueryWrapper<TaOrder>().eq("transaction_id", transactionId));
@@ -276,6 +277,11 @@ public class WxPayServiceImpl implements IWxPayService {
276 277
             if (null == taRaiseRecord){
277 278
                 throw new Exception("此认筹单不存在!请联系置业顾问!");
278 279
             }
280
+            //判断是否是已经退费过的单子
281
+            TaOrder parentOrder = taOrderMapper.selectOne(new QueryWrapper<TaOrder>().eq("parent_order_id", taRaiseRecord.getOrderId()));
282
+            if (null != parentOrder){
283
+                throw new Exception("此认筹单已经退费!");
284
+            }
279 285
             //获取订单中的价格
280 286
             TaOrder refundOrder = taOrderMapper.selectById(taRaiseRecord.getOrderId());
281 287
             //退款单号

+ 21
- 1
src/test/java/com/huiju/estateagents/WxPayTest.java 查看文件

@@ -1,10 +1,17 @@
1 1
 package com.huiju.estateagents;
2 2
 
3
+import com.huiju.estateagents.common.wxpay.WXPayUtil;
4
+import org.apache.commons.codec.digest.DigestUtils;
3 5
 import org.junit.Test;
4 6
 import org.junit.runner.RunWith;
5 7
 import org.springframework.boot.test.context.SpringBootTest;
6 8
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
7 9
 import org.springframework.transaction.annotation.Transactional;
10
+import sun.misc.BASE64Decoder;
11
+
12
+import javax.crypto.Cipher;
13
+import javax.crypto.spec.SecretKeySpec;
14
+import java.util.Map;
8 15
 
9 16
 @RunWith(SpringJUnit4ClassRunner.class)
10 17
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@@ -13,6 +20,19 @@ public class WxPayTest {
13 20
 
14 21
     @Test
15 22
     public void getLocationCity() {
16
-//        System.out.println(System.currentTimeMillis());
23
+//        try {
24
+//            String abc = "<xml><return_code>SUCCESS</return_code><appid><![CDATA[wxbbb069a341055ef0]]></appid><mch_id><![CDATA[1577983541]]></mch_id><nonce_str><![CDATA[3d8740137b51c5980b2048a105beb708]]></nonce_str><req_info><![CDATA[5RjGrqrAbzRvah2pEMp1QjCQavhY16xZhke159cIIap/UlJqUj0HSpFHGhlxp03Spbhb5I7WFdUqUErX8NOF7Wp4B/t06xYDvu+/KOVVtjHxvHijGfRIn9LTXPdDqJePFg/ZeYbZUYSUoqHygMSw8O+itBnlipxxh+bUPuTZro1/ydaiTC7gCcKTLkT1Njx6ctrPUC+IcukGVOzpnHy4tSfrt8mMpeGGrKVnmTDZxPBVbfGFebkir32wU4JfBpbpGmS0HDS8i8uq1qW8hnrDufIdcqzio7uMeM/ClTU5jy2Ez4SA7Ks21iObx0gNXMfnEDBKYJsw58R3V7aSf8VS2gWTSn/2QFxmzrSoMH3/bBKvY+LfOsSkis+ZvnMd4baYrRoIzGUkfmE2QXxzupN4404folIyuJ2xB1ewLRK7BTU6MRjPhg9jcEIAVWyoTp04Alek3xLzMILvMzGr0tOdIIqXYKs+7FAcuXgiqpvyw6yVF1l3Xj/IorXLSpfeFqycUUTr4uH7Rm8eCdFDt6YTSVaMRLWNWUBTC8BW4JlpimuXYYMeqrjY0MaJceiN5ZHoIGFmqnml/Tpzcwyb2j6tk5oaEIHlYVAJmsFmL6RLTPFDlUTOOEFAnZ1+wUqxSO0Z6cwcZgIioL1OPS2DC5c2Vi/FEgt8vu1HMn2wClH+R9kDu3fx9TqP8sfG1W89TQP1/s+oQvNdtFJKacGCVeSJ5Fc4pF1zRCStOGOoIAtEf7ub7VitKelYuABPc8P0dzgoLsBPUwFgrx+QrDMzyp8zICK8bzIqqFp+x+1RSN5Q7i8gvh4vWKuajST3F74L+zkQ9r2pEaZ/zWIUHx+xWDb8nw9hMlR4oER+ITASgsqP1PAFpRrHNFl3kV6p5V9Cp5LEVfch+yCS1f/cfcY3KiY4KYBB2jNe+nr/cq5Aq1ijujNERBpjDzJaaJiVcPBKSkcAwk0wPTqYk4ihDlUQ8XTgrfEKje1acdKiA3/t4ltHdG0vGVTKXwteHdnRggBUwELzQFLrPpbx1M2lxBlc8zkm08WLP+DW+rx09ZcyQMCBTFk=]]></req_info></xml>";
25
+//            Map resultMap = WXPayUtil.xmlToMap(abc);
26
+//            SecretKeySpec key = new SecretKeySpec(DigestUtils.md5Hex("RGiWajOfaw3Zl7TUIoQNjmEKA8VG8ZNL").toLowerCase().getBytes(), "AES");
27
+//            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
28
+//            cipher.init(Cipher.DECRYPT_MODE, key);
29
+//            String req_info = new String(cipher.doFinal(new BASE64Decoder().decodeBuffer(resultMap.get("req_info").toString())), "UTF-8");
30
+//
31
+//            Map<String, String> orderInfo = WXPayUtil.xmlToMap(req_info);
32
+//            System.out.println(orderInfo);
33
+//        }catch (Exception e) {
34
+//            e.printStackTrace();
35
+//        }
36
+
17 37
     }
18 38
 }