Skip to content

Commit a361487

Browse files
committed
企业付款相关接口抽取为一个独立的接口实现类
1 parent 42d5396 commit a361487

File tree

21 files changed

+831
-453
lines changed

21 files changed

+831
-453
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ public class BeanUtils {
3232
* 检查bean里标记为@Required的field是否为空,为空则抛异常
3333
*
3434
* @param bean 要检查的bean对象
35-
* @throws WxErrorException
3635
*/
3736
public static void checkRequiredFields(Object bean) throws WxErrorException {
3837
List<String> requiredFields = Lists.newArrayList();
@@ -68,39 +67,4 @@ public static void checkRequiredFields(Object bean) throws WxErrorException {
6867
}
6968
}
7069

71-
/**
72-
* 将bean按照@XStreamAlias标识的字符串内容生成以之为key的map对象
73-
*
74-
* @param bean 包含@XStreamAlias的xml bean对象
75-
* @return map对象
76-
*/
77-
public static Map<String, String> xmlBean2Map(Object bean) {
78-
Map<String, String> result = Maps.newHashMap();
79-
List<Field> fields = new ArrayList<>(Arrays.asList(bean.getClass().getDeclaredFields()));
80-
fields.addAll(Arrays.asList(bean.getClass().getSuperclass().getDeclaredFields()));
81-
for (Field field : fields) {
82-
try {
83-
boolean isAccessible = field.isAccessible();
84-
field.setAccessible(true);
85-
if (field.get(bean) == null) {
86-
field.setAccessible(isAccessible);
87-
continue;
88-
}
89-
90-
if (field.isAnnotationPresent(XStreamAlias.class)) {
91-
result.put(field.getAnnotation(XStreamAlias.class).value(), field.get(bean).toString());
92-
} else if (!Modifier.isStatic(field.getModifiers())) {
93-
//忽略掉静态成员变量
94-
result.put(field.getName(), field.get(bean).toString());
95-
}
96-
97-
field.setAccessible(isAccessible);
98-
} catch (SecurityException | IllegalArgumentException | IllegalAccessException e) {
99-
log.error(e.getMessage(), e);
100-
}
101-
102-
}
103-
104-
return result;
105-
}
10670
}

weixin-java-pay/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434
<artifactId>commons-lang3</artifactId>
3535
</dependency>
3636

37+
<dependency>
38+
<groupId>commons-beanutils</groupId>
39+
<artifactId>commons-beanutils</artifactId>
40+
<version>1.9.3</version>
41+
</dependency>
42+
3743
<dependency>
3844
<groupId>ch.qos.logback</groupId>
3945
<artifactId>logback-classic</artifactId>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.github.binarywang.wxpay.bean.entpay;
2+
3+
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
4+
import com.thoughtworks.xstream.annotations.XStreamAlias;
5+
import lombok.*;
6+
import me.chanjar.weixin.common.annotation.Required;
7+
import me.chanjar.weixin.common.util.ToStringUtils;
8+
9+
/**
10+
* <pre>
11+
* 企业付款请求对象
12+
* Created by Binary Wang on 2016/10/19.
13+
* </pre>
14+
*
15+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
16+
*/
17+
@Data
18+
@EqualsAndHashCode(callSuper = true)
19+
@Builder(builderMethodName = "newBuilder")
20+
@NoArgsConstructor
21+
@AllArgsConstructor
22+
@XStreamAlias("xml")
23+
public class EntPayQueryRequest extends BaseWxPayRequest {
24+
/**
25+
* <pre>
26+
* 字段名:商户订单号.
27+
* 变量名:partner_trade_no
28+
* 是否必填:是
29+
* 示例值:10000098201411111234567890
30+
* 类型:String
31+
* 描述商户订单号
32+
* </pre>
33+
*/
34+
@Required
35+
@XStreamAlias("partner_trade_no")
36+
private String partnerTradeNo;
37+
38+
@Override
39+
protected void checkConstraints() {
40+
//do nothing
41+
}
42+
43+
@Override
44+
public String toString() {
45+
return ToStringUtils.toSimpleString(this);
46+
}
47+
48+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package com.github.binarywang.wxpay.bean.entpay;
2+
3+
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
4+
import com.thoughtworks.xstream.annotations.XStreamAlias;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
import lombok.NoArgsConstructor;
8+
9+
/**
10+
* <pre>
11+
* 企业付款查询返回结果.
12+
* Created by Binary Wang on 2016/10/19.
13+
* </pre>
14+
*
15+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
16+
*/
17+
@Data
18+
@EqualsAndHashCode(callSuper = true)
19+
@NoArgsConstructor
20+
@XStreamAlias("xml")
21+
public class EntPayQueryResult extends BaseWxPayResult {
22+
23+
/**
24+
* 商户订单号
25+
*/
26+
@XStreamAlias("partner_trade_no")
27+
private String partnerTradeNo;
28+
29+
/**
30+
* 付款单号
31+
*/
32+
@XStreamAlias("detail_id")
33+
private String detailId;
34+
35+
/**
36+
* 转账状态
37+
*/
38+
@XStreamAlias("status")
39+
private String status;
40+
41+
/**
42+
* 失败原因
43+
*/
44+
@XStreamAlias("reason")
45+
private String reason;
46+
47+
/**
48+
* 收款用户openid
49+
*/
50+
@XStreamAlias("openid")
51+
private String openid;
52+
53+
/**
54+
* 收款用户姓名
55+
*/
56+
@XStreamAlias("transfer_name")
57+
private String transferName;
58+
59+
/**
60+
* 付款金额
61+
*/
62+
@XStreamAlias("payment_amount")
63+
private Integer paymentAmount;
64+
65+
/**
66+
* 转账时间
67+
*/
68+
@XStreamAlias("transfer_time")
69+
private String transferTime;
70+
71+
/**
72+
* 付款描述
73+
*/
74+
@XStreamAlias("desc")
75+
private String desc;
76+
77+
}
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
package com.github.binarywang.wxpay.bean.entpay;
2+
3+
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
4+
import com.thoughtworks.xstream.annotations.XStreamAlias;
5+
import lombok.*;
6+
import me.chanjar.weixin.common.annotation.Required;
7+
import me.chanjar.weixin.common.util.ToStringUtils;
8+
9+
/**
10+
* <pre>
11+
* 企业付款请求对象.
12+
* Created by Binary Wang on 2016/10/02.
13+
* </pre>
14+
*
15+
* @author <a href="https://github.com/binarywang">Binary Wang</a>
16+
*/
17+
18+
@Data
19+
@EqualsAndHashCode(callSuper = true)
20+
@Builder(builderMethodName = "newBuilder")
21+
@NoArgsConstructor
22+
@AllArgsConstructor
23+
@XStreamAlias("xml")
24+
public class EntPayRequest extends BaseWxPayRequest {
25+
/**
26+
* <pre>
27+
* 字段名:公众账号appid
28+
* 变量名:mch_appid
29+
* 是否必填:是
30+
* 示例值:wx8888888888888888
31+
* 类型:String
32+
* 描述:微信分配的公众账号ID(企业号corpid即为此appId)
33+
* </pre>
34+
*/
35+
@XStreamAlias("mch_appid")
36+
private String mchAppid;
37+
38+
/**
39+
* <pre>
40+
* 字段名:商户号
41+
* 变量名:mchid
42+
* 是否必填:是
43+
* 示例值:1900000109
44+
* 类型:String(32)
45+
* 描述:微信支付分配的商户号
46+
* </pre>
47+
*/
48+
@XStreamAlias("mchid")
49+
private String mchId;
50+
51+
/**
52+
* <pre>
53+
* 字段名:设备号
54+
* 变量名:device_info
55+
* 是否必填:否
56+
* 示例值:13467007045764
57+
* 类型:String(32)
58+
* 描述:微信支付分配的终端设备号
59+
* </pre>
60+
*/
61+
@XStreamAlias("device_info")
62+
private String deviceInfo;
63+
64+
/**
65+
* <pre>
66+
* 字段名:商户订单号
67+
* 变量名:partner_trade_no
68+
* 是否必填:是
69+
* 示例值:10000098201411111234567890
70+
* 类型:String
71+
* 描述:商户订单号
72+
* </pre>
73+
*/
74+
@Required
75+
@XStreamAlias("partner_trade_no")
76+
private String partnerTradeNo;
77+
78+
/**
79+
* <pre>
80+
* 字段名:需保持唯一性 用户openid
81+
* 变量名:openid
82+
* 是否必填:是
83+
* 示例值:oxTWIuGaIt6gTKsQRLau2M0yL16E
84+
* 类型:String
85+
* 描述:商户appid下,某用户的openid
86+
* </pre>
87+
*/
88+
@Required
89+
@XStreamAlias("openid")
90+
private String openid;
91+
92+
/**
93+
* <pre>
94+
* 字段名:校验用户姓名选项
95+
* 变量名:check_name
96+
* 是否必填:是
97+
* 示例值:OPTION_CHECK
98+
* 类型:String
99+
* 描述:NO_CHECK:不校验真实姓名 
100+
* FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) 
101+
* OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
102+
* </pre>
103+
*/
104+
@Required
105+
@XStreamAlias("check_name")
106+
private String checkName;
107+
108+
/**
109+
* <pre>
110+
* 字段名:收款用户姓名
111+
* 变量名:re_user_name
112+
* 是否必填:可选
113+
* 示例值:马花花
114+
* 类型:String
115+
* 描述:收款用户真实姓名。
116+
* 如果check_name设置为FORCE_CHECK或OPTION_CHECK, 则必填用户真实姓名
117+
* </pre>
118+
*/
119+
@XStreamAlias("re_user_name")
120+
private String reUserName;
121+
122+
/**
123+
* <pre>
124+
* 字段名:金额
125+
* 变量名:amount
126+
* 是否必填:是
127+
* 示例值:10099
128+
* 类型:int
129+
* 描述:企业付款金额, 单位为分
130+
* </pre>
131+
*/
132+
@Required
133+
@XStreamAlias("amount")
134+
private Integer amount;
135+
136+
/**
137+
* <pre>
138+
* 字段名:企业付款描述信息
139+
* 变量名:desc
140+
* 是否必填:是
141+
* 示例值:理赔
142+
* 类型:String
143+
* 描述:企业付款操作说明信息。必填。
144+
* </pre>
145+
*/
146+
@Required
147+
@XStreamAlias("desc")
148+
private String description;
149+
150+
/**
151+
* <pre>
152+
* 字段名:Ip地址
153+
* 变量名:spbill_create_ip
154+
* 是否必填:是
155+
* 示例值:192.168.0.1
156+
* 类型:String(32)
157+
* 描述:调用接口的机器Ip地址
158+
* </pre>
159+
*/
160+
@Required
161+
@XStreamAlias("spbill_create_ip")
162+
private String spbillCreateIp;
163+
164+
@Override
165+
protected void checkConstraints() {
166+
167+
}
168+
169+
@Override
170+
public String getAppid() {
171+
return this.mchAppid;
172+
}
173+
174+
@Override
175+
public void setAppid(String appid) {
176+
this.mchAppid = appid;
177+
}
178+
179+
@Override
180+
public String getMchId() {
181+
return this.mchId;
182+
}
183+
184+
@Override
185+
public void setMchId(String mchId) {
186+
this.mchId = mchId;
187+
}
188+
189+
@Override
190+
public String toString() {
191+
return ToStringUtils.toSimpleString(this);
192+
}
193+
194+
}

0 commit comments

Comments
 (0)