Skip to content

Commit ccb2534

Browse files
outerskybinarywang
authored andcommitted
🎨 #1390 微信支付增加XML转换的快速模式,发送请求以及组装响应对象的时候不再依赖反射机制
* 增加XML的快速模式,发送请求以及组装响应对象的时候,不再依赖java的反射机制。 1:提升性能 2:可以通过 graalvm 生成native image. 本次完成:全部BaseWxPayRequest的改造,部分BaseWxPayResult子类的改造。 * clean code * 标记 xmlDoc 为 transient 否则toString()方法中Gson可能会堆栈溢出 * 完成大多数BaseWxPayResult子类的改造。还有 notify.*Result下面留了两个TODO需要处理。 * toXML时遗漏了sign参数 * 使用dom4j简化了toXML,同时根据本版本构建native-image的demo已经提交: https://github.com/outersky/wx-micronaut-graal.git 供参考。 * 完成了最后两个Result的xml解析。
1 parent 15f7de3 commit ccb2534

File tree

77 files changed

+1420
-37
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1420
-37
lines changed

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponInfoQueryRequest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import lombok.*;
66
import me.chanjar.weixin.common.annotation.Required;
77

8+
import java.util.Map;
9+
810
/**
911
* <pre>
1012
* 查询代金券信息请求对象类
@@ -120,4 +122,15 @@ protected void checkConstraints() {
120122
//do nothing
121123
}
122124

125+
@Override
126+
protected void storeMap(Map<String, String> map) {
127+
map.put("coupon_id", couponId);
128+
map.put("stock_id", stockId);
129+
map.put("openid", openid);
130+
map.put("op_user_id", opUserId);
131+
map.put("device_info", deviceInfo);
132+
map.put("version", version);
133+
map.put("type", type);
134+
}
135+
123136
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponInfoQueryResult.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* <pre>
@@ -227,4 +228,23 @@ public class WxPayCouponInfoQueryResult extends BaseWxPayResult {
227228
@XStreamAlias("is_partial_use")
228229
private String isPartialUse;
229230

231+
@Override
232+
protected void loadXML(Document d) {
233+
deviceInfo = readXMLString(d, "device_info");
234+
couponStockId = readXMLString(d, "coupon_stock_id");
235+
couponId = readXMLString(d, "coupon_id");
236+
couponValue = readXMLInteger(d, "coupon_value");
237+
couponMinimum = readXMLInteger(d, "coupon_minimum");
238+
couponName = readXMLString(d, "coupon_name");
239+
couponState = readXMLString(d, "coupon_state");
240+
couponDesc = readXMLString(d, "coupon_desc");
241+
couponUseValue = readXMLInteger(d, "coupon_use_value");
242+
couponRemainValue = readXMLInteger(d, "coupon_remain_value");
243+
beginTime = readXMLString(d, "begin_time");
244+
endTime = readXMLString(d, "end_time");
245+
sendTime = readXMLString(d, "send_time");
246+
consumerMchId = readXMLString(d, "consumer_mch_id");
247+
sendSource = readXMLString(d, "send_source");
248+
isPartialUse = readXMLString(d, "is_partial_use");
249+
}
230250
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponSendRequest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import lombok.*;
66
import me.chanjar.weixin.common.annotation.Required;
77

8+
import java.util.Map;
9+
810
/**
911
* <pre>
1012
* 发送代金券请求对象类
@@ -132,4 +134,16 @@ public class WxPayCouponSendRequest extends BaseWxPayRequest {
132134
protected void checkConstraints() {
133135
//do nothing
134136
}
137+
138+
@Override
139+
protected void storeMap(Map<String, String> map) {
140+
map.put("coupon_stock_id", couponStockId);
141+
map.put("openid_count", openidCount.toString());
142+
map.put("partner_trade_no", partnerTradeNo);
143+
map.put("openid", openid);
144+
map.put("op_user_id", opUserId);
145+
map.put("device_info", deviceInfo);
146+
map.put("version", version);
147+
map.put("type", type);
148+
}
135149
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponSendResult.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* <pre>
@@ -136,4 +137,16 @@ public class WxPayCouponSendResult extends BaseWxPayResult {
136137
@XStreamAlias("ret_msg")
137138
private String retMsg;
138139

140+
@Override
141+
protected void loadXML(Document d) {
142+
deviceInfo = readXMLString(d, "device_info");
143+
couponStockId = readXMLString(d, "coupon_stock_id");
144+
respCount = readXMLInteger(d, "resp_count");
145+
successCount = readXMLInteger(d, "success_count");
146+
failedCount = readXMLInteger(d, "failed_count");
147+
openid = readXMLString(d, "openid");
148+
retCode = readXMLString(d, "ret_code");
149+
couponId = readXMLString(d, "coupon_id");
150+
retMsg = readXMLString(d, "ret_msg");
151+
}
139152
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponStockQueryRequest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import lombok.*;
66
import me.chanjar.weixin.common.annotation.Required;
77

8+
import java.util.Map;
9+
810
/**
911
* <pre>
1012
* 查询代金券批次请求对象类
@@ -91,4 +93,13 @@ protected void checkConstraints() {
9193
//do nothing
9294
}
9395

96+
@Override
97+
protected void storeMap(Map<String, String> map) {
98+
map.put("coupon_stock_id", couponStockId);
99+
map.put("op_user_id", opUserId);
100+
map.put("device_info", deviceInfo);
101+
map.put("version", version);
102+
map.put("type", type);
103+
}
104+
94105
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/coupon/WxPayCouponStockQueryResult.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import lombok.Data;
77
import lombok.EqualsAndHashCode;
88
import lombok.NoArgsConstructor;
9+
import org.w3c.dom.Document;
910

1011
/**
1112
* <pre>
@@ -191,4 +192,20 @@ public class WxPayCouponStockQueryResult extends BaseWxPayResult {
191192
@XStreamAlias("coupon_budget")
192193
private Integer couponBudget;
193194

195+
@Override
196+
protected void loadXML(Document d) {
197+
deviceInfo = readXMLString(d, "device_info");
198+
couponStockId = readXMLString(d, "coupon_stock_id");
199+
couponName = readXMLString(d, "coupon_name");
200+
couponValue = readXMLInteger(d, "coupon_value");
201+
couponMinimum = readXMLInteger(d, "coupon_mininumn");
202+
couponStockStatus = readXMLInteger(d, "coupon_stock_status");
203+
couponTotal = readXMLInteger(d, "coupon_total");
204+
maxQuota = readXMLInteger(d, "max_quota");
205+
isSendNum = readXMLInteger(d, "is_send_num");
206+
beginTime = readXMLString(d, "begin_time");
207+
endTime = readXMLString(d, "end_time");
208+
createTime = readXMLString(d, "create_time");
209+
couponBudget = readXMLInteger(d, "coupon_budget");
210+
}
194211
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankQueryResult.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* <pre>
@@ -93,4 +94,17 @@ public class EntPayBankQueryResult extends BaseWxPayResult {
9394
@XStreamAlias("reason")
9495
private String failReason;
9596

97+
@Override
98+
protected void loadXML(Document d) {
99+
partnerTradeNo = readXMLString(d, "partner_trade_no");
100+
paymentNo = readXMLString(d, "payment_no");
101+
bankNoMd5 = readXMLString(d, "bank_no_md5");
102+
trueNameMd5 = readXMLString(d, "true_name_md5");
103+
amount = readXMLInteger(d, "amount");
104+
status = readXMLString(d, "status");
105+
cmmsAmount = readXMLInteger(d, "cmms_amt");
106+
createTime = readXMLString(d, "create_time");
107+
paySuccessTime = readXMLString(d, "pay_succ_time");
108+
failReason = readXMLString(d, "reason");
109+
}
96110
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankRequest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import lombok.NoArgsConstructor;
1111
import me.chanjar.weixin.common.annotation.Required;
1212

13+
import java.util.Map;
14+
1315
/**
1416
* <pre>
1517
* 企业付款到银行卡的请求对象类
@@ -121,6 +123,16 @@ protected String[] getIgnoredParamsForSign() {
121123
return new String[]{"sign_type"};
122124
}
123125

126+
@Override
127+
protected void storeMap(Map<String, String> map) {
128+
map.put("partner_trade_no", partnerTradeNo);
129+
map.put("enc_bank_no", encBankNo);
130+
map.put("enc_true_name", encTrueName);
131+
map.put("bank_code", bankCode);
132+
map.put("amount", amount.toString());
133+
map.put("desc", description);
134+
}
135+
124136
@Override
125137
protected boolean ignoreAppid() {
126138
return true;

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayBankResult.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* <pre>
@@ -48,4 +49,11 @@ public class EntPayBankResult extends BaseWxPayResult {
4849
@XStreamAlias("cmms_amt")
4950
private Integer cmmsAmount;
5051

52+
@Override
53+
protected void loadXML(Document d) {
54+
amount = readXMLInteger(d, "amount");
55+
partnerTradeNo = readXMLString(d, "partner_trade_no");
56+
paymentNo = readXMLString(d, "payment_no");
57+
cmmsAmount = readXMLInteger(d, "cmms_amt");
58+
}
5159
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryRequest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import me.chanjar.weixin.common.annotation.Required;
1111
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
1212

13+
import java.util.Map;
14+
1315
/**
1416
* <pre>
1517
* 企业付款请求对象.
@@ -55,4 +57,9 @@ public String toString() {
5557
protected String[] getIgnoredParamsForSign() {
5658
return new String[]{"sign_type"};
5759
}
60+
61+
@Override
62+
protected void storeMap(Map<String, String> map) {
63+
map.put("partner_trade_no", partnerTradeNo);
64+
}
5865
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayQueryResult.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* <pre>
@@ -81,4 +82,17 @@ public class EntPayQueryResult extends BaseWxPayResult {
8182
@XStreamAlias("desc")
8283
private String desc;
8384

85+
@Override
86+
protected void loadXML(Document d) {
87+
partnerTradeNo = readXMLString(d, "partner_trade_no");
88+
detailId = readXMLString(d, "detail_id");
89+
status = readXMLString(d, "status");
90+
reason = readXMLString(d, "reason");
91+
openid = readXMLString(d, "openid");
92+
transferName = readXMLString(d, "transfer_name");
93+
paymentAmount = readXMLInteger(d, "payment_amount");
94+
transferTime = readXMLString(d, "transfer_time");
95+
paymentTime = readXMLString(d, "payment_time");
96+
desc = readXMLString(d, "desc");
97+
}
8498
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryRequest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
import com.thoughtworks.xstream.annotations.XStreamAlias;
66
import lombok.*;
77

8+
import java.util.Map;
9+
810
/**
911
* 红包发送记录查询请求
12+
*
1013
* @author wuyong
1114
* @date 2019-12-01 17:19
1215
*/
@@ -30,4 +33,9 @@ public class EntPayRedpackQueryRequest extends BaseWxPayRequest {
3033
protected void checkConstraints() throws WxPayException {
3134

3235
}
36+
37+
@Override
38+
protected void storeMap(Map<String, String> map) {
39+
map.put("mch_billno", mchBillNo);
40+
}
3341
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackQueryResult.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
/**
1011
* 红包发送记录查询返回
@@ -130,4 +131,24 @@ public class EntPayRedpackQueryResult extends BaseWxPayResult {
130131
@XStreamAlias("sender_header_media_id")
131132
private Integer senderHeaderMediaId;
132133

134+
@Override
135+
protected void loadXML(Document d) {
136+
mchBillNo = readXMLString(d, "mch_billno");
137+
detailId = readXMLString(d, "detailId");
138+
status = readXMLString(d, "status");
139+
sendType = readXMLString(d, "send_type");
140+
totalAmount = readXMLInteger(d, "total_amount");
141+
reason = readXMLInteger(d, "reason");
142+
sendTime = readXMLString(d, "send_time");
143+
refundTime = readXMLString(d, "refund_time");
144+
refundAmount = readXMLInteger(d, "refund_amount");
145+
wishing = readXMLString(d, "wishing");
146+
remark = readXMLString(d, "remark");
147+
actName = readXMLString(d, "act_name");
148+
openid = readXMLString(d, "openid");
149+
amount = readXMLInteger(d, "amount");
150+
rcvTime = readXMLInteger(d, "rcv_time");
151+
senderName = readXMLInteger(d, "sender_name");
152+
senderHeaderMediaId = readXMLInteger(d, "sender_header_media_id");
153+
}
133154
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackRequest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
import lombok.*;
77
import me.chanjar.weixin.common.annotation.Required;
88

9+
import java.util.Map;
10+
911
/**
1012
* 发送企业红包
13+
*
1114
* @author wuyong
1215
* @date 2019-12-1
1316
*/
@@ -144,4 +147,19 @@ protected boolean ignoreSubMchId() {
144147
protected boolean isWxWorkSign() {
145148
return true;
146149
}
150+
151+
@Override
152+
protected void storeMap(Map<String, String> map) {
153+
map.put("mch_billno", mchBillNo);
154+
map.put("wxappid", wxAppId);
155+
map.put("sender_name", senderName);
156+
map.put("agentid", agentId);
157+
map.put("sender_header_media_id", senderHeaderMediaId);
158+
map.put("re_openid", reOpenid);
159+
map.put("total_amount", totalAmount.toString());
160+
map.put("wishing", wishing);
161+
map.put("act_name", actName);
162+
map.put("remark", remark);
163+
map.put("scene_id", sceneId);
164+
}
147165
}

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entpay/EntPayRedpackResult.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
77
import lombok.NoArgsConstructor;
8+
import org.w3c.dom.Document;
89

910
import java.io.Serializable;
1011

1112
/**
1213
* 企业微信红包返回
14+
*
1315
* @author wuyong
1416
* @date 2019-12-01 11:31
1517
*/
@@ -77,4 +79,15 @@ public class EntPayRedpackResult extends BaseWxPayResult implements Serializable
7779
@XStreamAlias("sender_header_media_id")
7880
private String senderHeaderMediaId;
7981

82+
@Override
83+
protected void loadXML(Document d) {
84+
mchBillNo = readXMLString(d, "mch_billno");
85+
mchId = readXMLString(d, "mch_id");
86+
wxAppId = readXMLString(d, "wxappid");
87+
reOpenid = readXMLString(d, "re_openid");
88+
totalAmount = readXMLString(d, "totalAmount");
89+
sendListId = readXMLString(d, "sendListid");
90+
senderName = readXMLString(d, "sender_name");
91+
senderHeaderMediaId = readXMLString(d, "sender_header_media_id");
92+
}
8093
}

0 commit comments

Comments
 (0)