Skip to content

Commit 03114b9

Browse files
Copilotbinarywang
authored andcommitted
🎨 #3753 【微信支付】添加商家转账用户授权免确认模式相关接口
1 parent f6d9e8b commit 03114b9

File tree

8 files changed

+870
-0
lines changed

8 files changed

+870
-0
lines changed
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
package com.github.binarywang.wxpay.bean.transfer;
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+
/**
11+
* <pre>
12+
* 预约转账批次单号查询接口响应结果
13+
* 通过预约批次单号查询批量预约商家转账批次单基本信息。
14+
* 文档地址:https://pay.weixin.qq.com/doc/v3/merchant/4015901167
15+
* </pre>
16+
*
17+
* @author wanggang
18+
* created on 2025/11/28
19+
*/
20+
@Data
21+
@NoArgsConstructor
22+
public class ReservationTransferBatchGetResult implements Serializable {
23+
private static final long serialVersionUID = 1L;
24+
25+
/**
26+
* 【商户号】 微信支付分配的商户号
27+
*/
28+
@SerializedName("mch_id")
29+
private String mchId;
30+
31+
/**
32+
* 【商户预约批次单号】 商户系统内部的商家预约批次单号
33+
*/
34+
@SerializedName("out_batch_no")
35+
private String outBatchNo;
36+
37+
/**
38+
* 【微信预约批次单号】 微信预约批次单号,微信商家转账系统返回的唯一标识
39+
*/
40+
@SerializedName("reservation_batch_no")
41+
private String reservationBatchNo;
42+
43+
/**
44+
* 【商户AppID】 商户在微信申请公众号或移动应用成功后分配的账号ID
45+
*/
46+
@SerializedName("appid")
47+
private String appid;
48+
49+
/**
50+
* 【批次备注】 批次备注
51+
*/
52+
@SerializedName("batch_remark")
53+
private String batchRemark;
54+
55+
/**
56+
* 【转账场景ID】 商户在商户平台-产品中心-商家转账中申请的转账场景ID
57+
*/
58+
@SerializedName("transfer_scene_id")
59+
private String transferSceneId;
60+
61+
/**
62+
* 【批次状态】
63+
* ACCEPTED: 批次已受理
64+
* PROCESSING: 批次处理中
65+
* FINISHED: 批次处理完成
66+
* CLOSED: 批次已关闭
67+
*/
68+
@SerializedName("batch_state")
69+
private String batchState;
70+
71+
/**
72+
* 【转账总金额】 转账金额单位为"分"
73+
*/
74+
@SerializedName("total_amount")
75+
private Integer totalAmount;
76+
77+
/**
78+
* 【转账总笔数】 转账总笔数
79+
*/
80+
@SerializedName("total_num")
81+
private Integer totalNum;
82+
83+
/**
84+
* 【转账成功金额】 转账成功金额单位为"分"
85+
*/
86+
@SerializedName("success_amount")
87+
private Integer successAmount;
88+
89+
/**
90+
* 【转账成功笔数】 转账成功笔数
91+
*/
92+
@SerializedName("success_num")
93+
private Integer successNum;
94+
95+
/**
96+
* 【转账失败金额】 转账失败金额单位为"分"
97+
*/
98+
@SerializedName("fail_amount")
99+
private Integer failAmount;
100+
101+
/**
102+
* 【转账失败笔数】 转账失败笔数
103+
*/
104+
@SerializedName("fail_num")
105+
private Integer failNum;
106+
107+
/**
108+
* 【批次创建时间】 批次受理成功时返回
109+
* 遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
110+
*/
111+
@SerializedName("create_time")
112+
private String createTime;
113+
114+
/**
115+
* 【批次更新时间】 批次最后更新时间
116+
* 遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
117+
*/
118+
@SerializedName("update_time")
119+
private String updateTime;
120+
121+
/**
122+
* 【批次关闭原因】 批次关闭原因
123+
* MERCHANT_REVOCATION: 商户主动撤销
124+
* OVERDUE_CLOSE: 系统超时关闭
125+
*/
126+
@SerializedName("close_reason")
127+
private String closeReason;
128+
129+
/**
130+
* 【是否需要查询明细】
131+
*/
132+
@SerializedName("need_query_detail")
133+
private Boolean needQueryDetail;
134+
135+
/**
136+
* 【转账明细列表】
137+
*/
138+
@SerializedName("transfer_detail_list")
139+
private List<TransferDetail> transferDetailList;
140+
141+
/**
142+
* 转账明细
143+
*/
144+
@Data
145+
@NoArgsConstructor
146+
public static class TransferDetail implements Serializable {
147+
private static final long serialVersionUID = 1L;
148+
149+
/**
150+
* 【商户明细单号】 商户系统内部区分转账批次单下不同转账明细单的唯一标识
151+
*/
152+
@SerializedName("out_detail_no")
153+
private String outDetailNo;
154+
155+
/**
156+
* 【微信转账单号】 微信转账单号,微信商家转账系统返回的唯一标识
157+
*/
158+
@SerializedName("transfer_bill_no")
159+
private String transferBillNo;
160+
161+
/**
162+
* 【明细状态】
163+
* PROCESSING: 转账处理中
164+
* SUCCESS: 转账成功
165+
* FAIL: 转账失败
166+
*/
167+
@SerializedName("detail_state")
168+
private String detailState;
169+
}
170+
}
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
package com.github.binarywang.wxpay.bean.transfer;
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+
* 批量预约商家转账请求参数
16+
* 商户可以通过批量预约接口一次发起批量转账请求,最多可以同时向50个用户发起转账。
17+
* 文档地址:https://pay.weixin.qq.com/doc/v3/merchant/4015901167
18+
* </pre>
19+
*
20+
* @author wanggang
21+
* created on 2025/11/28
22+
*/
23+
@Data
24+
@Builder(builderMethodName = "newBuilder")
25+
@NoArgsConstructor
26+
@AllArgsConstructor
27+
public class ReservationTransferBatchRequest implements Serializable {
28+
private static final long serialVersionUID = 1L;
29+
30+
/**
31+
* 【商户AppID】 商户在微信申请公众号或移动应用成功后分配的账号ID
32+
*/
33+
@SerializedName("appid")
34+
private String appid;
35+
36+
/**
37+
* 【商户预约批次单号】 商户系统内部的商家预约批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
38+
*/
39+
@SerializedName("out_batch_no")
40+
private String outBatchNo;
41+
42+
/**
43+
* 【转账场景ID】 商户在商户平台-产品中心-商家转账中申请的转账场景ID
44+
*/
45+
@SerializedName("transfer_scene_id")
46+
private String transferSceneId;
47+
48+
/**
49+
* 【批次备注】 批次备注
50+
*/
51+
@SerializedName("batch_remark")
52+
private String batchRemark;
53+
54+
/**
55+
* 【转账总金额】 转账金额单位为"分",转账总金额必须与批次内所有转账明细金额之和保持一致,否则无法发起转账操作
56+
*/
57+
@SerializedName("total_amount")
58+
private Integer totalAmount;
59+
60+
/**
61+
* 【转账总笔数】 转账总笔数,需要与批次内所有转账明细笔数保持一致,否则无法发起转账操作
62+
*/
63+
@SerializedName("total_num")
64+
private Integer totalNum;
65+
66+
/**
67+
* 【转账明细列表】 转账明细列表,最多50条
68+
*/
69+
@SerializedName("transfer_detail_list")
70+
private List<TransferDetail> transferDetailList;
71+
72+
/**
73+
* 【异步回调地址】 异步接收微信支付结果通知的回调地址,通知url必须为公网可访问的url,必须为https,不能携带参数
74+
*/
75+
@SerializedName("notify_url")
76+
private String notifyUrl;
77+
78+
/**
79+
* 转账明细
80+
*/
81+
@Data
82+
@Builder(builderMethodName = "newBuilder")
83+
@NoArgsConstructor
84+
@AllArgsConstructor
85+
public static class TransferDetail implements Serializable {
86+
private static final long serialVersionUID = 1L;
87+
88+
/**
89+
* 【商户明细单号】 商户系统内部区分转账批次单下不同转账明细单的唯一标识,要求此参数只能由数字、大小写字母组成
90+
*/
91+
@SerializedName("out_detail_no")
92+
private String outDetailNo;
93+
94+
/**
95+
* 【转账金额】 转账金额单位为"分"
96+
*/
97+
@SerializedName("transfer_amount")
98+
private Integer transferAmount;
99+
100+
/**
101+
* 【转账备注】 单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符
102+
*/
103+
@SerializedName("transfer_remark")
104+
private String transferRemark;
105+
106+
/**
107+
* 【收款用户OpenID】 商户AppID下,某用户的OpenID
108+
*/
109+
@SerializedName("openid")
110+
private String openid;
111+
112+
/**
113+
* 【收款用户姓名】 收款方真实姓名。支持标准RSA算法和国密算法,公钥由微信侧提供
114+
*/
115+
@SpecEncrypt
116+
@SerializedName("user_name")
117+
private String userName;
118+
119+
/**
120+
* 【转账场景报备信息】
121+
*/
122+
@SerializedName("transfer_scene_report_infos")
123+
private List<TransferSceneReportInfo> transferSceneReportInfos;
124+
}
125+
126+
/**
127+
* 转账场景报备信息
128+
*/
129+
@Data
130+
@Builder(builderMethodName = "newBuilder")
131+
@NoArgsConstructor
132+
@AllArgsConstructor
133+
public static class TransferSceneReportInfo implements Serializable {
134+
private static final long serialVersionUID = 1L;
135+
136+
/**
137+
* 【信息类型】 信息类型编码
138+
*/
139+
@SerializedName("info_type")
140+
private String infoType;
141+
142+
/**
143+
* 【信息内容】 信息内容
144+
*/
145+
@SerializedName("info_content")
146+
private String infoContent;
147+
}
148+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.github.binarywang.wxpay.bean.transfer;
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+
* <pre>
11+
* 批量预约商家转账响应结果
12+
* 文档地址:https://pay.weixin.qq.com/doc/v3/merchant/4015901167
13+
* </pre>
14+
*
15+
* @author wanggang
16+
* created on 2025/11/28
17+
*/
18+
@Data
19+
@NoArgsConstructor
20+
public class ReservationTransferBatchResult implements Serializable {
21+
private static final long serialVersionUID = 1L;
22+
23+
/**
24+
* 【商户预约批次单号】 商户系统内部的商家预约批次单号
25+
*/
26+
@SerializedName("out_batch_no")
27+
private String outBatchNo;
28+
29+
/**
30+
* 【微信预约批次单号】 微信预约批次单号,微信商家转账系统返回的唯一标识
31+
*/
32+
@SerializedName("reservation_batch_no")
33+
private String reservationBatchNo;
34+
35+
/**
36+
* 【批次创建时间】 批次受理成功时返回
37+
* 遵循rfc3339标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE
38+
*/
39+
@SerializedName("create_time")
40+
private String createTime;
41+
42+
/**
43+
* 【批次状态】
44+
* ACCEPTED: 批次已受理
45+
* PROCESSING: 批次处理中
46+
* FINISHED: 批次处理完成
47+
* CLOSED: 批次已关闭
48+
*/
49+
@SerializedName("batch_state")
50+
private String batchState;
51+
}

0 commit comments

Comments
 (0)