Skip to content

Commit 17c2042

Browse files
cloudX2019曾浩
and
曾浩
authored
🆕 #1667 微信支付增加电商收付通-二级商户进件相关接口
电商收付通二级商户进件 Co-authored-by: 曾浩 <[email protected]>
1 parent a278383 commit 17c2042

File tree

9 files changed

+1274
-5
lines changed

9 files changed

+1274
-5
lines changed

Diff for: weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/ApplymentsRequest.java

+796
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.github.binarywang.wxpay.bean.ecommerce;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
7+
import java.io.Serializable;
8+
9+
/**
10+
* 二级商户进件 提交申请结果响应
11+
*/
12+
@Data
13+
@NoArgsConstructor
14+
public class ApplymentsResult implements Serializable {
15+
16+
/**
17+
* <pre>
18+
* 字段名:微信支付申请单号
19+
* 变量名:applyment_id
20+
* 是否必填:是
21+
* 类型:uint64
22+
* 描述:
23+
* 微信支付分配的申请单号 。
24+
* 示例值:2000002124775691
25+
* </pre>
26+
*/
27+
@SerializedName(value = "applyment_id")
28+
private String applymentId;
29+
30+
/**
31+
* <pre>
32+
* 字段名:业务申请编号
33+
* 变量名:out_request_no
34+
* 是否必填:是
35+
* 类型:string(124)
36+
* 描述:
37+
* 服务商自定义的商户唯一编号。每个编号对应一个申请单,每个申请单审核通过后会生成一个微信支付商户号。
38+
* 示例值:APPLYMENT_00000000001
39+
* </pre>
40+
*/
41+
@SerializedName(value = "out_request_no")
42+
private String outRequestNo;
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,308 @@
1+
package com.github.binarywang.wxpay.bean.ecommerce;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import lombok.NoArgsConstructor;
6+
7+
import java.io.Serializable;
8+
import java.util.List;
9+
10+
@Data
11+
@NoArgsConstructor
12+
public class ApplymentsStatusResult implements Serializable {
13+
/**
14+
* <pre>
15+
* 字段名:申请状态
16+
* 变量名:applyment_state
17+
* 是否必填:否
18+
* 类型:string(32)
19+
* 描述:
20+
* 枚举值:
21+
* CHECKING:资料校验中
22+
* ACCOUNT_NEED_VERIFY:待账户验证
23+
* AUDITING:审核中
24+
* REJECTED:已驳回
25+
* NEED_SIGN:待签约
26+
* FINISH:完成
27+
* FROZEN:已冻结
28+
* 示例值:FINISH
29+
* </pre>
30+
*/
31+
@SerializedName(value = "applyment_state")
32+
private String applymentState;
33+
34+
/**
35+
* <pre>
36+
* 字段名:申请状态描述
37+
* 变量名:applyment_state_desc
38+
* 是否必填:否
39+
* 类型:string(32)
40+
* 描述:
41+
* 申请状态描述
42+
* 示例值:“审核中”
43+
* </pre>
44+
*/
45+
@SerializedName(value = "applyment_state_desc")
46+
private String applymentStateDesc;
47+
48+
/**
49+
* <pre>
50+
* 字段名:签约链接
51+
* 变量名:sign_url
52+
* 是否必填:否
53+
* 类型:string(256)
54+
* 描述:
55+
* 1、当申请状态为NEED_SIGN时才返回。
56+
* 2、建议将链接转为二维码展示,需让申请单-管理者用微信扫码打开,完成签约。
57+
* 示例值:https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec
58+
* </pre>
59+
*/
60+
@SerializedName(value = "sign_url")
61+
private String signUrl;
62+
63+
/**
64+
* <pre>
65+
* 字段名:电商平台二级商户号
66+
* 变量名:sub_mchid
67+
* 是否必填:否
68+
* 类型:string(32)
69+
* 描述:
70+
* 当申请状态为NEED_SIGN或FINISH时才返回。
71+
* 示例值:1542488631
72+
* </pre>
73+
*/
74+
@SerializedName(value = "sub_mchid")
75+
private String subMchid;
76+
77+
/**
78+
* <pre>
79+
* 字段名:+汇款账户验证信息
80+
* 变量名:account_validation
81+
* 是否必填:否
82+
* 类型:object
83+
* 描述:当申请状态为ACCOUNT_NEED_VERIFY 时有返回,可根据指引汇款,完成账户验证。
84+
* </pre>
85+
*/
86+
@SerializedName(value = "account_validation")
87+
private AccountValidation accountValidation;
88+
89+
/**
90+
* <pre>
91+
* 字段名:+驳回原因详情
92+
* 变量名:audit_detail
93+
* 是否必填:否
94+
* 类型:array
95+
* 描述:各项资料的审核情况。当申请状态为REJECTED或 FROZEN时才返回。
96+
* </pre>
97+
*/
98+
@SerializedName(value = "audit_detail")
99+
private List<AuditDetail> auditDetail;
100+
101+
/**
102+
* <pre>
103+
* 字段名:法人验证链接
104+
* 变量名:legal_validation_url
105+
* 是否必填:否
106+
* 类型:string(256)
107+
* 描述:
108+
* 1、当申请状态为
109+
* ACCOUNT_NEED_VERIFY,且通过系统校验的申请单,将返回链接。
110+
* 2、建议将链接转为二维码展示,让商户法人用微信扫码打开,完成账户验证。
111+
* 示例值: https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec
112+
* </pre>
113+
*/
114+
@SerializedName(value = "legal_validation_url")
115+
private String legalValidationUrl;
116+
117+
/**
118+
* <pre>
119+
* 字段名:业务申请编号
120+
* 变量名:out_request_no
121+
* 是否必填:是
122+
* 类型:string(124)
123+
* 描述:
124+
* 提交接口填写的业务申请编号。
125+
* 示例值:APPLYMENT_00000000001
126+
* </pre>
127+
*/
128+
@SerializedName(value = "out_request_no")
129+
private String outRequestNo;
130+
131+
/**
132+
* <pre>
133+
* 字段名:微信支付申请单号
134+
* 变量名:applyment_id
135+
* 是否必填:否
136+
* 类型:uint64
137+
* 描述:
138+
* 微信支付分配的申请单号。
139+
* 示例值:2000002124775691
140+
* </pre>
141+
*/
142+
@SerializedName(value = "applyment_id")
143+
private String applymentId;
144+
145+
@Data
146+
@NoArgsConstructor
147+
public static class AccountValidation implements Serializable{
148+
/**
149+
* <pre>
150+
* 字段名:付款户名
151+
* 变量名:account_name
152+
* 是否必填:否
153+
* 类型:uint64
154+
* 描述:
155+
* 需商户使用该户名的账户进行汇款。
156+
* 示例值: rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==
157+
* </pre>
158+
*/
159+
@SerializedName(value = "account_name")
160+
private String accountName;
161+
162+
/**
163+
* <pre>
164+
* 字段名:付款卡号
165+
* 变量名:account_no
166+
* 是否必填:否
167+
* 类型:string(128)
168+
* 描述:
169+
* 结算账户为对私时会返回,商户需使用该付款卡号进行汇款。
170+
* 示例值:9nZYDEvBT4rDdICA3ZYXshYqeOSslSjSauAE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==
171+
* </pre>
172+
*/
173+
@SerializedName(value = "account_no")
174+
private String accountNo;
175+
176+
/**
177+
* <pre>
178+
* 字段名:汇款金额
179+
* 变量名:pay_amount
180+
* 是否必填:否
181+
* 类型:string(32)
182+
* 描述:
183+
* 需要汇款的金额(单位:分)。
184+
* 示例值:124
185+
* </pre>
186+
*/
187+
@SerializedName(value = "pay_amount")
188+
private String payAmount;
189+
190+
/**
191+
* <pre>
192+
* 字段名:收款卡号
193+
* 变量名:destination_account_number
194+
* 是否必填:否
195+
* 类型:string(128)
196+
* 描述:
197+
* 收款账户的卡号
198+
* 示例值:7222223333322332
199+
* </pre>
200+
*/
201+
@SerializedName(value = "destination_account_number")
202+
private String destinationAccountNumber;
203+
204+
/**
205+
* <pre>
206+
* 字段名:收款户名
207+
* 变量名:destination_account_name
208+
* 是否必填:否
209+
* 类型:string(128)
210+
* 描述:
211+
* 收款账户名
212+
* 示例值:财付通支付科技有限公司
213+
* </pre>
214+
*/
215+
@SerializedName(value = "destination_account_name")
216+
private String destinationAccountName;
217+
218+
/**
219+
* <pre>
220+
* 字段名:开户银行
221+
* 变量名:destination_account_bank
222+
* 是否必填:否
223+
* 类型:string(128)
224+
* 描述:
225+
* 收款账户的开户银行名称。
226+
* 示例值:招商银行威盛大厦支行
227+
* </pre>
228+
*/
229+
@SerializedName(value = "destination_account_bank")
230+
private String destinationAccountBank;
231+
232+
/**
233+
* <pre>
234+
* 字段名:省市信息
235+
* 变量名:city
236+
* 是否必填:否
237+
* 类型:string(128)
238+
* 描述:
239+
* 收款账户的省市。
240+
* 示例值:深圳
241+
* </pre>
242+
*/
243+
@SerializedName(value = "city")
244+
private String city;
245+
246+
/**
247+
* <pre>
248+
* 字段名:备注信息
249+
* 变量名:remark
250+
* 是否必填:否
251+
* 类型:string(128)
252+
* 描述:
253+
* 商户汇款时,需要填写的备注信息。
254+
* 示例值:入驻账户验证
255+
* </pre>
256+
*/
257+
@SerializedName(value = "remark")
258+
private String remark;
259+
260+
/**
261+
* <pre>
262+
* 字段名:汇款截止时间
263+
* 变量名:deadline
264+
* 是否必填:否
265+
* 类型:string(20)
266+
* 描述:
267+
* 请在此时间前完成汇款。
268+
* 示例值:2018-12-1017:09:01
269+
* </pre>
270+
*/
271+
@SerializedName(value = "deadline")
272+
private String deadline;
273+
274+
}
275+
276+
@Data
277+
@NoArgsConstructor
278+
public static class AuditDetail implements Serializable{
279+
/**
280+
* <pre>
281+
* 字段名:参数名称
282+
* 变量名:param_name
283+
* 是否必填:否
284+
* 类型:string(32)
285+
* 描述:
286+
* 提交申请单的资料项名称。
287+
* 示例值:id_card_copy
288+
* </pre>
289+
*/
290+
@SerializedName(value = "param_name")
291+
private String paramName;
292+
293+
/**
294+
* <pre>
295+
* 字段名:驳回原因
296+
* 变量名:reject_reason
297+
* 是否必填:否
298+
* 类型:string(32)
299+
* 描述:
300+
* 提交资料项被驳回原因。
301+
* 示例值:身份证背面识别失败,请上传更清晰的身份证图片
302+
* </pre>
303+
*/
304+
@SerializedName(value = "reject_reason")
305+
private String rejectReason;
306+
307+
}
308+
}

Diff for: weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,12 @@ public class WxPayConfig {
130130
* 私钥信息
131131
*/
132132
private PrivateKey privateKey;
133+
134+
/**
135+
* 证书自动更新时间差(分钟),默认一分钟
136+
*/
137+
private int certAutoUpdateTime = 60;
138+
133139
/**
134140
* p12证书文件内容的字节数组.
135141
*/
@@ -245,8 +251,7 @@ public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
245251

246252
AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
247253
new WxPayCredentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)),
248-
apiV3Key.getBytes(StandardCharsets.UTF_8));
249-
254+
apiV3Key.getBytes(StandardCharsets.UTF_8), this.getCertAutoUpdateTime());
250255

251256
CloseableHttpClient httpClient = WxPayV3HttpClientBuilder.create()
252257
.withMerchant(mchId, certSerialNo, merchantPrivateKey)

0 commit comments

Comments
 (0)