1
0
mirror of synced 2025-12-26 20:48:00 +08:00

🆕 #2443【微信支付】增加服务商微工卡相关功能接口以及微信批量转账到零钱的服务商接口实现

Co-authored-by: xiaoqiang <dengmingqiang@youmengbang.com>
This commit is contained in:
xiaoguaiYJ
2021-12-14 12:41:48 +08:00
committed by GitHub
parent 6f35b985b1
commit c1d0b68d32
36 changed files with 5099 additions and 1 deletions

View File

@@ -0,0 +1,139 @@
package com.github.binarywang.wxpay.service.impl;
import com.github.binarywang.wxpay.bean.ecommerce.FundBalanceResult;
import com.github.binarywang.wxpay.bean.ecommerce.enums.SpAccountTypeEnum;
import com.github.binarywang.wxpay.bean.marketing.transfer.*;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.testbase.ApiTestModule;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import javax.crypto.BadPaddingException;
import java.io.InputStream;
/**
* 批量转账到零钱(服务商)
*
* @author xiaoqiang
* @date 2021/12/9
*/
@Slf4j
@Test
@Guice(modules = ApiTestModule.class)
public class PartnerTransferServiceImplTest {
@Inject
private WxPayService wxPayService;
private static final Gson GSON = new GsonBuilder().create();
@Test
public void batchTransfer() throws WxPayException {
String requestParamStr = "{\"sub_mchid\":\"1608*****1\",\"authorization_type\":\"FUND_AUTHORIZATION_TYPE\",\"out_batch_no\":\"202108241345*****4618387\",\"batch_name\":\"用户提现批次单2021-12-13_13_45_50\",\"batch_remark\":\"用户>提现\",\"total_amount\":30,\"total_num\":1,\"transfer_detail_list\":[{\"out_detail_no\":\"DN202112131345506240631640467671\",\"transfer_amount\":30,\"transfer_remark\":\"钱包提现\",\"openid\":\"oUaIE6PdSuBpsHAOtvf_jsgtqu5I\",\"user_name\":\"Q2FoOMuf1Ulsab+j0nObLjkIZAUZan8Z7RaEU5qOjv1RUq5ImuqqAqoQZ4f/zD5CMxuLD7lM1TIdGIvrvO8pe2YOwoUdRxiRzDX+Z0Rsy5Y9QqEiuHHK1JTR7vC18eKp0a4PlY7K4jUl49jG0QE+6gOG83Cqj3Z9dupPor94fPRUM/ZIzF293ONgSJW1iuHkd6g7EHTpizHZ/r5XcT+qh*************************kqjtVkT3GiuDXmMA8d/hO85uY50ItNNa5Ov8kmJbLCgFreoS49LUEwj/yuDap6F4g\\u003d\\u003d\"}],\"sp_appid\":\"wx6aa************ef\",\"transfer_purpose\":\"OTHERS\"}";
PartnerTransferRequest request = GSON.fromJson(requestParamStr, PartnerTransferRequest.class);
PartnerTransferResult partnerTransferResult = wxPayService.getPartnerTransferService().batchTransfer(request);
log.info(partnerTransferResult.toString());
}
@Test
public void queryBatchByBatchId() throws WxPayException {
BatchNumberRequest request = new BatchNumberRequest();
request.setBatchId("1030000071100999991182020050700019480001");
request.setNeedQueryDetail(true);
request.setDetailStatus("ALL");
BatchNumberResult batchResult = wxPayService.getPartnerTransferService().queryBatchByBatchId(request);
log.info(batchResult.toString());
}
@Test
public void queryBatchDetailByWeChat() throws WxPayException, BadPaddingException {
String batchId = "1030000071100999991182020050700019480001";
String detailId = "1040000071100999991182020050700019500100";
BatchDetailsResult batchResult = wxPayService.getPartnerTransferService().queryBatchDetailByWeChat(batchId, detailId);
log.info(batchResult.toString());
}
@Test
public void queryBatchByOutBatchNo() throws WxPayException {
MerchantBatchRequest request = new MerchantBatchRequest();
request.setOutBatchNo("10300000************0019480001");
request.setDetailStatus("ALL");
request.setNeedQueryDetail(true);
BatchNumberResult batchResult = wxPayService.getPartnerTransferService().queryBatchByOutBatchNo(request);
log.info(batchResult.toString());
}
@Test
public void queryBatchDetailByMch() throws WxPayException, BadPaddingException {
String outBatchNo = "10300000************0019480001";
String outDetailNo = "10***********0019480001";
BatchDetailsResult batchResult = wxPayService.getPartnerTransferService().queryBatchDetailByMch(outBatchNo, outDetailNo);
log.info(batchResult.toString());
}
@Test
public void receiptBill() throws WxPayException {
ReceiptBillRequest request = new ReceiptBillRequest();
request.setOutBatchNo("10300000************0019480001");
BillReceiptResult batchResult = wxPayService.getPartnerTransferService().receiptBill(request);
log.info(batchResult.toString());
}
@Test
public void queryBillReceipt() throws WxPayException {
String outBatchNo = "10300000************0019480001";
BillReceiptResult batchResult = wxPayService.getPartnerTransferService().queryBillReceipt(outBatchNo);
log.info(batchResult.toString());
}
@Test
public void transferElectronic() throws WxPayException {
ElectronicReceiptsRequest request = new ElectronicReceiptsRequest();
request.setAcceptType("BATCH_TRANSFER");
request.setOutBatchNo("GD2021011610162610BBdkkIwcu3");
request.setOutDetailNo("mx0911231610162610v4CNkO4HAf");
ElectronicReceiptsResult batchResult = wxPayService.getPartnerTransferService().transferElectronic(request);
log.info(batchResult.toString());
}
@Test
public void queryTransferElectronicResult() throws WxPayException {
ElectronicReceiptsRequest request = new ElectronicReceiptsRequest();
request.setAcceptType("BATCH_TRANSFER");
request.setOutBatchNo("GD2021011610162610BBdkkIwcu3");
request.setOutDetailNo("mx0911231610162610v4CNkO4HAf");
ElectronicReceiptsResult batchResult = wxPayService.getPartnerTransferService().queryTransferElectronicResult(request);
log.info(batchResult.toString());
}
@Test
public void transferDownload() throws WxPayException {
String url = "https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx";
InputStream batchResult = wxPayService.getPartnerTransferService().transferDownload(url);
log.info(batchResult.toString());
}
@Test
public void fundBalance() throws WxPayException {
FundBalanceResult batchResult = wxPayService.getPartnerTransferService().fundBalance(SpAccountTypeEnum.BASIC);
log.info(batchResult.toString());
}
@Test
public void spDayEndBalance() {
String date = "2020-09-11";
FundBalanceResult batchResult = wxPayService.getPartnerTransferService().spDayEndBalance(SpAccountTypeEnum.BASIC, date);
log.info(batchResult.toString());
}
}

View File

@@ -0,0 +1,128 @@
package com.github.binarywang.wxpay.service.impl;
import com.github.binarywang.wxpay.bean.marketing.payroll.*;
import com.github.binarywang.wxpay.bean.marketing.transfer.PartnerTransferRequest;
import com.github.binarywang.wxpay.bean.marketing.transfer.PartnerTransferResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.github.binarywang.wxpay.testbase.ApiTestModule;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
/**
* 微工卡(服务商)
*
* @author xiaoqiang
* @date 2021/12/9
*/
@Slf4j
@Test
@Guice(modules = ApiTestModule.class)
public class PayrollServiceImplTest {
@Inject
private WxPayService wxPayService;
private static final Gson GSON = new GsonBuilder().create();
@Test
public void payrollCardTokens() throws WxPayException {
TokensRequest request = new TokensRequest();
request.setOpenid("onqOjjmo8wmTOOtSKwXtGjg9Gb58");
request.setAppid("wxa1111111");
request.setSubMchid("1111111");
request.setSubAppid("wxa1111111");
request.setUserName("LP7bT4hQXUsOZCEvK2YrSiqFsnP0oRMfeoLN0vBg");
request.setIdCardNumber("7FzH5XksJG3a8HLLsaaUV6K54y1OnPMY5");
request.setEmploymentType("LONG_TERM_EMPLOYMENT");
TokensResult tokensResult = wxPayService.getPayrollService().payrollCardTokens(request);
log.info(tokensResult.toString());
}
@Test
public void payrollCardRelations() throws WxPayException {
RelationsRequest request = new RelationsRequest();
request.setOpenid("onqOjjmo8wmTOOtSKwXtGjg9Gb58");
request.setSubMchid("1111111");
request.setAppid("wxa1111111");
request.setSubAppid("wxa1111111");
RelationsResult relationsResult = wxPayService.getPayrollService().payrollCardRelations(request);
log.info(relationsResult.toString());
}
@Test
public void payrollCardPreOrder() throws WxPayException {
PreOrderRequest request = new PreOrderRequest();
request.setOpenid("onqOjjmo8wmTOOtSKwXtGjg9Gb58");
request.setSubMchid("1111111");
request.setAppid("wxa1111111");
request.setSubAppid("wxa1111111");
request.setAuthenticateNumber("mcdhehfgisdhfjghed39384564i83");
request.setProjectName("某项目");
request.setEmployerName("某单位名称");
PreOrderResult preOrderResult = wxPayService.getPayrollService().payrollCardPreOrder(request);
log.info(preOrderResult.toString());
}
@Test
public void payrollCardAuthenticationsNumber() throws WxPayException {
String subMchid = "1111111";
String authenticateNumber = "mcdhehfgisdhfjghed39384564i83";
AuthenticationsResult authenticationsResult = wxPayService.getPayrollService().payrollCardAuthenticationsNumber(subMchid, authenticateNumber);
log.info(authenticationsResult.toString());
}
@Test
public void payrollCardAuthentications() throws WxPayException {
AuthRecordRequest request = new AuthRecordRequest();
request.setOpenid("onqOjjmo8wmTOOtSKwXtGjg9Gb58");
request.setSubMchid("1111111");
request.setAppid("wxa1111111");
request.setSubAppid("wxa1111111");
request.setAuthenticateDate("2020-12-25");
request.setAuthenticateState("AUTHENTICATE_SUCCESS");
request.setOffset(0);
request.setLimit(10);
AuthRecordResult authRecordResult = wxPayService.getPayrollService().payrollCardAuthentications(request);
log.info(authRecordResult.toString());
}
@Test
public void payrollCardPreOrderWithAuth() throws WxPayException {
PreOrderWithAuthRequest request = new PreOrderWithAuthRequest();
request.setOpenid("onqOjjmo8wmTOOtSKwXtGjg9Gb58");
request.setSubMchid("1111111");
request.setAppid("wxa1111111");
request.setSubAppid("wxa1111111");
request.setAuthenticateNumber("mcdhehfgisdhfjghed39384564i83");
request.setEmployerName("某用工企业");
request.setEmploymentType("LONG_TERM_EMPLOYMENT");
request.setIdCardNumber("7FzH5XksJG3a8HLLsaaUV6K54y1OnPMY5");
request.setProjectName("某项目");
request.setUserName("LP7bT4hQXUsOZCEvK2YrSiqFsnP0oRMfeoLN0vBg");
PreOrderWithAuthResult preOrderWithAuthResult = wxPayService.getPayrollService().payrollCardPreOrderWithAuth(request);
log.info(preOrderWithAuthResult.toString());
}
@Test
public void merchantFundWithdrawBillType() throws WxPayException {
String billType = "NO_SUCC";
String billDate = "2019-08-17";
PreOrderWithAuthResult preOrderWithAuthResult = wxPayService.getPayrollService().merchantFundWithdrawBillType(billType, billDate);
log.info(preOrderWithAuthResult.toString());
}
}