Skip to content

Commit e02f6d2

Browse files
authored
🆕 #3862 【微信支付】 增加V3「微工卡」的批量转账接口实现
1 parent 373d9fa commit e02f6d2

File tree

5 files changed

+542
-0
lines changed

5 files changed

+542
-0
lines changed
Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
package com.github.binarywang.wxpay.bean.marketing.payroll;
2+
3+
import com.github.binarywang.wxpay.v3.SpecEncrypt;
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.io.Serializable;
11+
import java.util.List;
12+
13+
/**
14+
* <pre>
15+
* 微工卡批量转账API请求参数
16+
* 文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_8.shtml
17+
*
18+
* 适用对象:服务商
19+
* 请求URL:https://api.mch.weixin.qq.com/v3/payroll-card/transfer-batches
20+
* 请求方式:POST
21+
* </pre>
22+
*
23+
* @author binarywang
24+
* created on 2025/01/19
25+
*/
26+
@Data
27+
@Builder
28+
@NoArgsConstructor
29+
@AllArgsConstructor
30+
public class PayrollTransferBatchesRequest implements Serializable {
31+
private static final long serialVersionUID = 1L;
32+
33+
/**
34+
* <pre>
35+
* 字段名:应用ID
36+
* 变量名:appid
37+
* 是否必填:二选一
38+
* 类型:string[1, 32]
39+
* 描述:
40+
* 服务商在微信申请公众号/小程序或移动应用成功后分配的账号ID
41+
* 示例值:wxa1111111
42+
* </pre>
43+
*/
44+
@SerializedName(value = "appid")
45+
private String appid;
46+
47+
/**
48+
* <pre>
49+
* 字段名:子商户应用ID
50+
* 变量名:sub_appid
51+
* 是否必填:二选一
52+
* 类型:string[1, 32]
53+
* 描述:
54+
* 特约商户在微信申请公众号/小程序或移动应用成功后分配的账号ID
55+
* 示例值:wxa1111111
56+
* </pre>
57+
*/
58+
@SerializedName(value = "sub_appid")
59+
private String subAppid;
60+
61+
/**
62+
* <pre>
63+
* 字段名:子商户号
64+
* 变量名:sub_mchid
65+
* 是否必填:是
66+
* 类型:string[1, 32]
67+
* 描述:
68+
* 微信服务商下特约商户的商户号,由微信支付生成并下发
69+
* 示例值:1111111
70+
* </pre>
71+
*/
72+
@SerializedName(value = "sub_mchid")
73+
private String subMchid;
74+
75+
/**
76+
* <pre>
77+
* 字段名:商家批次单号
78+
* 变量名:out_batch_no
79+
* 是否必填:是
80+
* 类型:string[1, 32]
81+
* 描述:
82+
* 商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
83+
* 示例值:plfk2020042013
84+
* </pre>
85+
*/
86+
@SerializedName(value = "out_batch_no")
87+
private String outBatchNo;
88+
89+
/**
90+
* <pre>
91+
* 字段名:批次名称
92+
* 变量名:batch_name
93+
* 是否必填:是
94+
* 类型:string[1, 32]
95+
* 描述:
96+
* 该笔批量转账的名称
97+
* 示例值:2019年1月深圳分部报销单
98+
* </pre>
99+
*/
100+
@SerializedName(value = "batch_name")
101+
private String batchName;
102+
103+
/**
104+
* <pre>
105+
* 字段名:批次备注
106+
* 变量名:batch_remark
107+
* 是否必填:是
108+
* 类型:string[1, 32]
109+
* 描述:
110+
* 转账说明,UTF8编码,最多允许32个字符
111+
* 示例值:2019年1月深圳分部报销单
112+
* </pre>
113+
*/
114+
@SerializedName(value = "batch_remark")
115+
private String batchRemark;
116+
117+
/**
118+
* <pre>
119+
* 字段名:转账总金额
120+
* 变量名:total_amount
121+
* 是否必填:是
122+
* 类型:int64
123+
* 描述:
124+
* 转账金额单位为"分"。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作
125+
* 示例值:4000000
126+
* </pre>
127+
*/
128+
@SerializedName(value = "total_amount")
129+
private Long totalAmount;
130+
131+
/**
132+
* <pre>
133+
* 字段名:转账总笔数
134+
* 变量名:total_num
135+
* 是否必填:是
136+
* 类型:int
137+
* 描述:
138+
* 一个转账批次单最多发起一千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作
139+
* 示例值:200
140+
* </pre>
141+
*/
142+
@SerializedName(value = "total_num")
143+
private Integer totalNum;
144+
145+
/**
146+
* <pre>
147+
* 字段名:转账明细列表
148+
* 变量名:transfer_detail_list
149+
* 是否必填:是
150+
* 类型:array
151+
* 描述:
152+
* 发起批量转账的明细列表,最多一千笔
153+
* </pre>
154+
*/
155+
@SerializedName(value = "transfer_detail_list")
156+
private List<TransferDetail> transferDetailList;
157+
158+
/**
159+
* 转账明细
160+
*/
161+
@Data
162+
@Builder
163+
@NoArgsConstructor
164+
@AllArgsConstructor
165+
public static class TransferDetail implements Serializable {
166+
private static final long serialVersionUID = 1L;
167+
168+
/**
169+
* <pre>
170+
* 字段名:商家明细单号
171+
* 变量名:out_detail_no
172+
* 是否必填:是
173+
* 类型:string[1, 32]
174+
* 描述:
175+
* 商户系统内部区分转账批次单下不同转账明细单的唯一标识
176+
* 示例值:x23zy545Bd5436
177+
* </pre>
178+
*/
179+
@SerializedName(value = "out_detail_no")
180+
private String outDetailNo;
181+
182+
/**
183+
* <pre>
184+
* 字段名:转账金额
185+
* 变量名:transfer_amount
186+
* 是否必填:是
187+
* 类型:int64
188+
* 描述:
189+
* 转账金额单位为"分"
190+
* 示例值:200000
191+
* </pre>
192+
*/
193+
@SerializedName(value = "transfer_amount")
194+
private Long transferAmount;
195+
196+
/**
197+
* <pre>
198+
* 字段名:转账备注
199+
* 变量名:transfer_remark
200+
* 是否必填:是
201+
* 类型:string[1, 32]
202+
* 描述:
203+
* 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符
204+
* 示例值:2020年4月报销
205+
* </pre>
206+
*/
207+
@SerializedName(value = "transfer_remark")
208+
private String transferRemark;
209+
210+
/**
211+
* <pre>
212+
* 字段名:用户标识
213+
* 变量名:openid
214+
* 是否必填:是
215+
* 类型:string[1, 64]
216+
* 描述:
217+
* 用户在商户对应appid下的唯一标识
218+
* 示例值:o-MYE42l80oelYMDE34nYD456Xoy
219+
* </pre>
220+
*/
221+
@SerializedName(value = "openid")
222+
private String openid;
223+
224+
/**
225+
* <pre>
226+
* 字段名:收款用户姓名
227+
* 变量名:user_name
228+
* 是否必填:否
229+
* 类型:string[1, 1024]
230+
* 描述:
231+
* 收款用户真实姓名。该字段需进行加密处理,加密方法详见敏感信息加密说明
232+
* 示例值:757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45
233+
* </pre>
234+
*/
235+
@SpecEncrypt
236+
@SerializedName(value = "user_name")
237+
private String userName;
238+
}
239+
}

0 commit comments

Comments
 (0)