Skip to content

Commit 547cbd6

Browse files
author
郑灶生
committed
微信V3商家转账到零钱相关API 案例
1 parent fdb7fcd commit 547cbd6

File tree

1 file changed

+137
-1
lines changed

1 file changed

+137
-1
lines changed

pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java

+137-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
import java.io.ByteArrayOutputStream;
66
import java.io.IOException;
77
import java.math.BigDecimal;
8+
import java.util.Collections;
89
import java.util.HashMap;
910
import java.util.Map;
1011
import java.util.UUID;
1112

12-
import javax.annotation.PostConstruct;
1313
import javax.imageio.ImageIO;
1414
import javax.servlet.http.HttpServletRequest;
1515

@@ -27,8 +27,12 @@
2727
import com.egzosn.pay.wx.v3.api.WxPayConfigStorage;
2828
import com.egzosn.pay.wx.v3.api.WxPayService;
2929
import com.egzosn.pay.wx.v3.bean.WxTransactionType;
30+
import com.egzosn.pay.wx.v3.bean.WxTransferType;
3031
import com.egzosn.pay.wx.v3.bean.order.H5Info;
3132
import com.egzosn.pay.wx.v3.bean.order.SceneInfo;
33+
import com.egzosn.pay.wx.v3.bean.transfer.TransferDetail;
34+
import com.egzosn.pay.wx.v3.bean.transfer.WxTransferOrder;
35+
import com.egzosn.pay.wx.v3.bean.transfer.WxTransferQueryOrder;
3236
import com.egzosn.pay.wx.v3.utils.WxConst;
3337

3438
/**
@@ -233,5 +237,137 @@ public Object downloadBill(QueryOrder order) {
233237
return service.downloadBill(order.getBillDate(), order.getBillType());
234238
}
235239

240+
/**
241+
* 转账到余额
242+
*
243+
*
244+
* @return 对应的转账结果
245+
*/
246+
@RequestMapping("transfer")
247+
public Map<String, Object> transfer() {
248+
249+
WxTransferOrder order = new WxTransferOrder();
250+
order.setOutBatchNo("商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一");
251+
order.setBatchName("该笔批量转账的名称");
252+
order.setBatchRemark("转账说明,UTF8编码,最多允许32个字符");
253+
// 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作
254+
order.setTotalAmount(100);
255+
//一个转账批次单最多发起一千笔转账。转账总笔数必须与批次内所有明细之和保持一致,否则无法发起转账操作
256+
order.setTotalNum(1);
257+
TransferDetail transferDetail = new TransferDetail();
258+
transferDetail.setOutDetailNo("商户系统内部区分转账批次单下不同转账明细单的唯一标识,要求此参数只能由数字、大小写字母组成");
259+
// 转账金额单位为“分”。转账总金额必须与批次内所有明细转账金额之和保持一致,否则无法发起转账操作
260+
transferDetail.setTransferAmount(100);
261+
transferDetail.setTransferRemark("单条转账备注(微信用户会收到该备注),UTF8编码,最多允许32个字符");
262+
transferDetail.setOpenid("商户appid下,某用户的openid");
263+
transferDetail.setUserName("收款方真实姓名: 张三");
264+
transferDetail.setUserIdCard("当填入收款方身份证号时,姓名字段必须填入。");
265+
order.setTransferDetailList(Collections.singletonList(transferDetail));
266+
//发起商家转账,转账到零钱
267+
order.setTransferType(WxTransferType.TRANSFER_BATCHES);
268+
order.setTransferSceneId("必填,指定该笔转账使用的转账场景ID");
269+
return service.transfer(order);
270+
}
271+
/**
272+
* 转账账单电子回单申请受理接口
273+
*
274+
*
275+
* @return 转账账单电子回单申请受理接口结果
276+
*/
277+
@RequestMapping("billReceipt")
278+
public Map<String, Object> billReceipt() {
279+
WxTransferOrder order = new WxTransferOrder();
280+
order.setOutBatchNo("商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一");
281+
//转账账单电子回单申请受理接口
282+
order.setTransferType(WxTransferType.TRANSFER_BILL_RECEIPT);
283+
return service.transfer(order);
284+
}
285+
286+
287+
/**
288+
* 通过微信批次单号查询批次单
289+
*
290+
* <p>
291+
* <a href="https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/get-transfer-batch-by-no.html">通过微信批次单号查询批次单</a>
292+
* </p>
293+
* @return 对应的转账订单
294+
*/
295+
@RequestMapping("getTransferBatchByNo")
296+
public Map<String, Object> getTransferBatchByNo() {
297+
WxTransferQueryOrder queryOrder = new WxTransferQueryOrder();
298+
queryOrder.setBatchId("1030000071100999991182020050700019480001");
299+
queryOrder.setNeedQueryDetail(true);
300+
queryOrder.setOffset(0);
301+
queryOrder.setLimit(20);
302+
queryOrder.setDetailStatus("FAIL");
303+
queryOrder.setTransactionType(WxTransferType.QUERY_BATCH_BY_BATCH_ID);
304+
return service.transferQuery(queryOrder);
305+
}
306+
/**
307+
* 通过微信批次单号查询批次单
308+
*
309+
* <p>
310+
* <a href="https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/get-transfer-batch-by-out-no.html">通过商家批次单号查询批次单</a>
311+
* </p>
312+
* @return 对应的转账订单
313+
*/
314+
@RequestMapping("getTransferBatchByOutNo")
315+
public Map<String, Object> getTransferBatchByOutNo() {
316+
WxTransferQueryOrder queryOrder = new WxTransferQueryOrder();
317+
queryOrder.setOutBatchNo("1030000071100999991182020050700019480001");
318+
queryOrder.setNeedQueryDetail(true);
319+
queryOrder.setOffset(0);
320+
queryOrder.setLimit(20);
321+
queryOrder.setDetailStatus("FAIL");
322+
queryOrder.setTransactionType(WxTransferType.QUERY_BATCH_BY_OUT_BATCH_NO);
323+
return service.transferQuery(queryOrder);
324+
}
325+
/**
326+
* 通过微信明细单号查询明细单
327+
*
328+
* <p>
329+
* <a href="https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-detail/get-transfer-detail-by-no.html">通过微信明细单号查询明细单</a>
330+
* </p>
331+
* @return 对应的转账订单
332+
*/
333+
@RequestMapping("getTransferDetailByNo")
334+
public Map<String, Object> getTransferDetailByNo() {
335+
WxTransferQueryOrder queryOrder = new WxTransferQueryOrder();
336+
queryOrder.setBatchId("1030000071100999991182020050700019480001");
337+
queryOrder.setDetailId("1040000071100999991182020050700019500100");
338+
queryOrder.setTransactionType(WxTransferType.QUERY_BATCH_DETAIL_BY_BATCH_ID);
339+
return service.transferQuery(queryOrder);
340+
}
341+
/**
342+
* 通过商家明细单号查询明细单
343+
*
344+
* <p>
345+
* <a href="https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-detail/get-transfer-detail-by-out-no.html">通过商家明细单号查询明细单</a>
346+
* </p>
347+
* @return 对应的转账订单
348+
*/
349+
@RequestMapping("getTransferDetailByOutNo")
350+
public Map<String, Object> getTransferDetailByOutNo() {
351+
WxTransferQueryOrder queryOrder = new WxTransferQueryOrder();
352+
queryOrder.setOutDetailNo("x23zy545Bd5436");
353+
queryOrder.setOutBatchNo("plfk2020042013");
354+
queryOrder.setTransactionType(WxTransferType.QUERY_BATCH_DETAIL_BY_OUT_BATCH_NO);
355+
return service.transferQuery(queryOrder);
356+
}
357+
/**
358+
* 查询转账账单电子回单接口
359+
*
360+
* <p>
361+
* <a href="https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-detail/get-transfer-detail-by-out-no.html">查询转账账单电子回单接口</a>
362+
* </p>
363+
* @return 对应的转账订单
364+
*/
365+
@RequestMapping("getElectronicSignatureByOutNo")
366+
public Map<String, Object> getElectronicSignatureByOutNo() {
367+
WxTransferQueryOrder queryOrder = new WxTransferQueryOrder();
368+
queryOrder.setOutBatchNo("plfk2020042013");
369+
queryOrder.setTransactionType(WxTransferType.QUERY_TRANSFER_BILL_RECEIPT);
370+
return service.transferQuery(queryOrder);
371+
}
236372

237373
}

0 commit comments

Comments
 (0)