傅行帆 5 vuotta sitten
vanhempi
commit
5d26ac7243

+ 16
- 4
src/main/java/com/huiju/estateagents/controller/WxPayController.java Näytä tiedosto

@@ -2,6 +2,7 @@ package com.huiju.estateagents.controller;
2 2
 
3 3
 import com.huiju.estateagents.base.BaseController;
4 4
 import com.huiju.estateagents.base.ResponseBean;
5
+import com.huiju.estateagents.common.wxpay.WXPayConstants;
5 6
 import com.huiju.estateagents.common.wxpay.WXPayUtil;
6 7
 import com.huiju.estateagents.entity.TaOrder;
7 8
 import com.huiju.estateagents.service.IWxPayService;
@@ -29,7 +30,7 @@ public class WxPayController extends BaseController {
29 30
      * @param request
30 31
      * @return
31 32
      */
32
-    @RequestMapping(value = "/pay/unifiedOrder",method = RequestMethod.POST)
33
+    @RequestMapping(value = "/wx/unifiedOrder",method = RequestMethod.POST)
33 34
     public ResponseBean wxUnifiedOrder(@RequestBody TaOrder taOrder,
34 35
                                        HttpServletRequest request){
35 36
         ResponseBean responseBean = new ResponseBean();
@@ -47,7 +48,9 @@ public class WxPayController extends BaseController {
47 48
 
48 49
     @RequestMapping(value = "/notify/{type}",method = RequestMethod.POST)
49 50
     public String wxBillNotify(@PathVariable String type, HttpServletRequest request){
50
-
51
+        log.info("支付成功回调开始,支付类型是{}",type);
52
+        String failResult = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[失败]]></return_msg>" + "</xml> ";
53
+        String successResult = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
51 54
         Map<String, String> resultMap = new HashMap<>();
52 55
         try {
53 56
             InputStream inStream = request.getInputStream();
@@ -67,11 +70,20 @@ public class WxPayController extends BaseController {
67 70
             inStream.close();
68 71
             // xml转换为map
69 72
             resultMap = WXPayUtil.xmlToMap(result);
73
+            //处理业务需求
74
+            if (WXPayConstants.SUCCESS.equalsIgnoreCase(resultMap.get("result_code"))) {
75
+                wxPayService.wxNotify(resultMap, type);
76
+            }else {
77
+                log.error("支付回调出错{}",resultMap.get("return_msg"));
78
+                return failResult;
79
+            }
80
+
70 81
         } catch (Exception e) {
71
-            e.printStackTrace();
82
+            log.error("支付回调出错{}",e.getMessage());
83
+            return failResult;
72 84
         }
73 85
 
74
-        return wxPayService.wxNotify(resultMap, type);
86
+        return successResult;
75 87
     }
76 88
 
77 89
 }

+ 5
- 0
src/main/java/com/huiju/estateagents/entity/TaOrder.java Näytä tiedosto

@@ -80,5 +80,10 @@ public class TaOrder implements Serializable {
80 80
      */
81 81
     private Integer parentOrderId;
82 82
 
83
+    /**
84
+     * 微信订单号
85
+     */
86
+    private String transactionId;
87
+
83 88
 
84 89
 }

+ 1
- 1
src/main/java/com/huiju/estateagents/service/IWxPayService.java Näytä tiedosto

@@ -15,5 +15,5 @@ public interface IWxPayService {
15 15
      */
16 16
     ResponseBean payUnifiedOrder(TaOrder taOrder, String clientIp) throws Exception;
17 17
 
18
-    String wxNotify(Map<String, String> resultMap, String type);
18
+    void wxNotify(Map<String, String> resultMap, String type);
19 19
 }

+ 32
- 18
src/main/java/com/huiju/estateagents/service/impl/WxPayServiceImpl.java Näytä tiedosto

@@ -112,26 +112,40 @@ public class WxPayServiceImpl implements IWxPayService {
112 112
         return ResponseBean.success(secondSignData);
113 113
     }
114 114
 
115
+    /**
116
+     * 微信支付成功的回调,处理业务需求
117
+     * @param resultMap
118
+     * @param type
119
+     */
115 120
     @Override
116
-    public String wxNotify(Map<String, String> resultMap, String type) {
117
-        String failResult = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[失败]]></return_msg>" + "</xml> ";
118
-        String successResult = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> ";
119
-        if (WXPayConstants.SUCCESS.equalsIgnoreCase(resultMap.get("result_code"))) {
120
-            //处理业务逻辑 修改订单状态等
121
-            resultMap.put("pay_type","0");
122
-            String state = "";
123
-            if (type.equals(CommConstant.ORDER_TARGET_TYPE_HOUSE)) {
124
-                //state = wxPayService.wxCarNotify(resultMap);
125
-            }
126
-
127
-            if (state.equals("success")){
128
-                log.info("微信支付成功。。");
129
-                return successResult;
130
-            }
131
-        }else{
132
-            return failResult;
121
+    public void wxNotify(Map<String, String> resultMap, String type) {
122
+        //house类型的支付成功的回调,处理业务逻辑 修改订单状态等
123
+        if (type.equals(CommConstant.ORDER_TARGET_TYPE_HOUSE)) {
124
+            wxHouseNotify(resultMap);
133 125
         }
134
-        return null;
126
+
127
+    }
128
+
129
+    /**
130
+     * 处理认筹房源的相关数据
131
+     * @param resultMap
132
+     * @return
133
+     */
134
+    private synchronized void wxHouseNotify(Map<String, String> resultMap) {
135
+        String tradeNo = resultMap.get("out_trade_no");
136
+        String transactionId = resultMap.get("transaction_id");
137
+        QueryWrapper<TaOrder> taOrderQueryWrapper = new QueryWrapper<>();
138
+        taOrderQueryWrapper.eq("trade_no",tradeNo);
139
+        TaOrder taOrder = taOrderMapper.selectOne(taOrderQueryWrapper);
140
+        //设置为已缴费
141
+        taOrder.setPayStatus(CommConstant.PAY_STATUS_PAID);
142
+        taOrder.setPayTime(LocalDateTime.now());
143
+        taOrder.setTransactionId(transactionId);
144
+        taOrderMapper.updateById(taOrder);
145
+        //修改认筹单支付状态
146
+        TaRaiseRecord taRaiseRecord = taRaiseRecordMapper.selectById(taOrder.getTargetId());
147
+        taRaiseRecord.setPayStatus(CommConstant.PAY_STATUS_PAID);
148
+        taRaiseRecordMapper.updateById(taRaiseRecord);
135 149
     }
136 150
 
137 151
     /**

+ 3
- 3
src/test/java/com/huiju/estateagents/WxPayTest.java Näytä tiedosto

@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
12 12
 public class WxPayTest {
13 13
 
14 14
 //    @Test
15
-    public void getLocationCity() {
16
-        System.out.println(System.currentTimeMillis());
17
-    }
15
+//    public void getLocationCity() {
16
+//        System.out.println(System.currentTimeMillis());
17
+//    }
18 18
 }