package com.ruoyi.order.util.payment.wechat;
|
|
import com.wechat.pay.java.core.Config;
|
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
|
import com.wechat.pay.java.service.transferbatch.TransferBatchService;
|
import com.wechat.pay.java.service.transferbatch.model.*;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 微信支付工具类
|
* @author zhibing.pu
|
* @Date 2025/1/3 11:25
|
*/
|
public class TransferUtil {
|
|
|
|
public static TransferBatchService service;
|
|
|
/**
|
* 初始化转账服务
|
*/
|
public static void init(){
|
// 初始化商户配置
|
Config config = new RSAAutoCertificateConfig.Builder()
|
.merchantId(WechatProperty.merchantId)
|
// 使用 com.wechat.pay.java.core.util
|
// 中的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名
|
.privateKeyFromPath(WechatProperty.privateKeyPath)
|
.merchantSerialNumber(WechatProperty.merchantSerialNumber)
|
.apiV3Key(WechatProperty.apiV3Key)
|
.build();
|
|
// 初始化服务
|
service = new TransferBatchService.Builder().config(config).build();
|
}
|
|
|
/**
|
* 通过微信批次单号查询批次单
|
* @return
|
*/
|
public static TransferBatchEntity getTransferBatchByNo() {
|
if(null == service){
|
init();
|
}
|
GetTransferBatchByNoRequest request = new GetTransferBatchByNoRequest();
|
|
return service.getTransferBatchByNo(request);
|
}
|
|
/** 通过商家批次单号查询批次单 */
|
public static TransferBatchEntity getTransferBatchByOutNo() {
|
GetTransferBatchByOutNoRequest request = new GetTransferBatchByOutNoRequest();
|
return service.getTransferBatchByOutNo(request);
|
}
|
|
/**
|
* 发起商家转账
|
* @param outBatchNo
|
* @param batchName
|
* @param batchRemark
|
* @param totalAmount
|
* @param totalNum
|
* @param notifyUrl
|
* @param out_detail_no
|
* @param transfer_amount
|
* @param transferRemark
|
* @param openid
|
* @return
|
*/
|
public static InitiateBatchTransferResponse initiateBatchTransfer(String outBatchNo, String batchName, String batchRemark, Long totalAmount,
|
Integer totalNum, String notifyUrl, String out_detail_no, Long transfer_amount,
|
String transferRemark, String openid) {
|
InitiateBatchTransferRequest request = new InitiateBatchTransferRequest();
|
request.setAppid(WechatProperty.appid);
|
request.setOutBatchNo(outBatchNo);
|
request.setBatchName(batchName);
|
request.setBatchRemark(batchRemark);
|
request.setTotalAmount(totalAmount);
|
request.setTotalNum(totalNum);
|
|
List<TransferDetailInput> transferDetailList = new ArrayList<>();
|
TransferDetailInput transferDetailInput = new TransferDetailInput();
|
transferDetailInput.setOutDetailNo(out_detail_no);
|
transferDetailInput.setTransferAmount(transfer_amount);
|
transferDetailInput.setTransferRemark(transferRemark);
|
transferDetailInput.setOpenid(openid);
|
transferDetailList.add(transferDetailInput);
|
request.setTransferDetailList(transferDetailList);
|
request.setNotifyUrl(notifyUrl);
|
return service.initiateBatchTransfer(request);
|
}
|
|
/**
|
* 通过微信明细单号查询明细单
|
* @return
|
*/
|
public static TransferDetailEntity getTransferDetailByNo() {
|
GetTransferDetailByNoRequest request = new GetTransferDetailByNoRequest();
|
return service.getTransferDetailByNo(request);
|
}
|
|
/**
|
* 通过商家明细单号查询明细单
|
* @return
|
*/
|
public static TransferDetailEntity getTransferDetailByOutNo() {
|
GetTransferDetailByOutNoRequest request = new GetTransferDetailByOutNoRequest();
|
return service.getTransferDetailByOutNo(request);
|
}
|
|
|
|
|
}
|