傅行帆 пре 5 година
родитељ
комит
78f82cf3a8

+ 106
- 0
src/main/java/com/huiju/estateagents/common/wxpay/WXPayRefundReason.java Прегледај датотеку

@@ -0,0 +1,106 @@
1
+package com.huiju.estateagents.common.wxpay;
2
+
3
+public enum WXPayRefundReason {
4
+    SYSTEMERROR("SYSTEMERROR","系统超时等"),
5
+    BIZERR_NEED_RETRY("BIZERR_NEED_RETRY","并发情况下,业务被拒绝,商户重试即可解决"),
6
+    TRADE_OVERDUE("TRADE_OVERDUE","订单已经超过可退款的最大期限(支付后一年内可退款)"),
7
+    ERROR("ERROR","申请退款业务发生错误"),
8
+    USER_ACCOUNT_ABNORMAL("USER_ACCOUNT_ABNORMAL","用户帐号注销"),
9
+    INVALID_REQ_TOO_MUCH("INVALID_REQ_TOO_MUCH","连续错误请求数过多被系统短暂屏蔽"),
10
+    NOTENOUGH("NOTENOUGH","商户可用退款余额不足"),
11
+    INVALID_TRANSACTIONID("INVALID_TRANSACTIONID","请求参数未按指引进行填写"),
12
+    PARAM_ERROR("PARAM_ERROR","请求参数未按指引进行填写"),
13
+    APPID_NOT_EXIST("APPID_NOT_EXIST","参数中缺少APPID"),
14
+    MCHID_NOT_EXIST("MCHID_NOT_EXIST","参数中缺少MCHID"),
15
+    ORDERNOTEXIST("ORDERNOTEXIST","缺少有效的订单号"),
16
+    REQUIRE_POST_METHOD("REQUIRE_POST_METHOD","未使用post传递参数 "),
17
+    SIGNERROR("SIGNERROR","参数签名结果不正确"),
18
+    XML_FORMAT_ERROR("XML_FORMAT_ERROR","XML格式错误"),
19
+    FREQUENCY_LIMITED("FREQUENCY_LIMITED","2个月之前的订单申请退款有频率限制"),
20
+    NOAUTH("NOAUTH","请求ip异常"),
21
+    ;
22
+
23
+    WXPayRefundReason(String code, String message) {
24
+        this.code = code;
25
+        this.message = message;
26
+    }
27
+
28
+    private String code;
29
+
30
+    private String message;
31
+
32
+    public String getCode() {
33
+        return code;
34
+    }
35
+
36
+    public void setCode(String code) {
37
+        this.code = code;
38
+    }
39
+
40
+    public String getMessage() {
41
+        return message;
42
+    }
43
+
44
+    public void setMessage(String message) {
45
+        this.message = message;
46
+    }
47
+
48
+
49
+    public static String getMsg(String code) {
50
+        String message = "";
51
+       switch (code){
52
+           case "SYSTEMERROR":
53
+               message = SYSTEMERROR.getMessage();
54
+               break;
55
+           case "BIZERR_NEED_RETRY":
56
+               message = BIZERR_NEED_RETRY.getMessage();
57
+               break;
58
+           case "TRADE_OVERDUE":
59
+               message = TRADE_OVERDUE.getMessage();
60
+               break;
61
+           case "ERROR":
62
+               message = ERROR.getMessage();
63
+               break;
64
+           case "USER_ACCOUNT_ABNORMAL":
65
+               message = USER_ACCOUNT_ABNORMAL.getMessage();
66
+               break;
67
+           case "INVALID_REQ_TOO_MUCH":
68
+               message = INVALID_REQ_TOO_MUCH.getMessage();
69
+               break;
70
+           case "NOTENOUGH":
71
+               message = NOTENOUGH.getMessage();
72
+               break;
73
+           case "INVALID_TRANSACTIONID":
74
+               message = INVALID_TRANSACTIONID.getMessage();
75
+               break;
76
+           case "PARAM_ERROR":
77
+               message = PARAM_ERROR.getMessage();
78
+               break;
79
+           case "APPID_NOT_EXIST":
80
+               message = APPID_NOT_EXIST.getMessage();
81
+               break;
82
+           case "MCHID_NOT_EXIST":
83
+               message = MCHID_NOT_EXIST.getMessage();
84
+               break;
85
+           case "REQUIRE_POST_METHOD":
86
+               message = REQUIRE_POST_METHOD.getMessage();
87
+               break;
88
+           case "SIGNERROR":
89
+               message = SIGNERROR.getMessage();
90
+               break;
91
+           case "XML_FORMAT_ERROR":
92
+               message = XML_FORMAT_ERROR.getMessage();
93
+               break;
94
+           case "FREQUENCY_LIMITED":
95
+               message = FREQUENCY_LIMITED.getMessage();
96
+               break;
97
+           case "NOAUTH":
98
+               message = NOAUTH.getMessage();
99
+               break;
100
+           case "ORDERNOTEXIST":
101
+               message = ORDERNOTEXIST.getMessage();
102
+               break;
103
+       }
104
+        return message;
105
+    }
106
+}

+ 6
- 4
src/main/java/com/huiju/estateagents/service/impl/WxPayServiceImpl.java Прегледај датотеку

@@ -3,10 +3,8 @@ package com.huiju.estateagents.service.impl;
3 3
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 4
 import com.huiju.estateagents.base.ResponseBean;
5 5
 import com.huiju.estateagents.common.CommConstant;
6
-import com.huiju.estateagents.common.wxpay.WXPay;
7
-import com.huiju.estateagents.common.wxpay.WXPayConstants;
8
-import com.huiju.estateagents.common.wxpay.WXPayUtil;
9
-import com.huiju.estateagents.common.wxpay.WxConfig;
6
+import com.huiju.estateagents.common.StringUtils;
7
+import com.huiju.estateagents.common.wxpay.*;
10 8
 import com.huiju.estateagents.entity.*;
11 9
 import com.huiju.estateagents.mapper.*;
12 10
 import com.huiju.estateagents.service.ITaRaiseRecordService;
@@ -215,9 +213,13 @@ public class WxPayServiceImpl implements IWxPayService {
215 213
                 TaRaiseRecord taRaiseRecord = taRaiseRecordMapper.selectOne(new QueryWrapper<TaRaiseRecord>().eq("order_id", e.getParentOrderId()));
216 214
                 if (orderInfo.get("refund_status").equals(WXPayConstants.SUCCESS)){
217 215
                     taRaiseRecord.setPayStatus(CommConstant.PAY_STATUS_REFUNDED);
216
+                    if (!StringUtils.isEmpty(orderInfo.get("err_code"))){
217
+                        taRaiseRecord.setRefundReason(WXPayRefundReason.getMsg(orderInfo.get("err_code")));
218
+                    }
218 219
                 }
219 220
                 if (!orderInfo.get("refund_status").equals(WXPayConstants.SUCCESS)){
220 221
                     taRaiseRecord.setPayStatus(CommConstant.PAY_STATUS_CHANGE);
222
+                    taRaiseRecord.setRefundReason("");
221 223
                 }
222 224
 
223 225
                 taRaiseRecordMapper.updateById(taRaiseRecord);