循环进行转账操作方法

This commit is contained in:
Guoqs
2025-09-27 13:37:53 +08:00
parent ca43f42727
commit 79e057703f

View File

@@ -557,13 +557,51 @@ public class PaymentTestController {
}
/**
* 提取余额到自己账户
* 由于限制单笔转账1万转账方法改为循环创建
* @throws BaseAdaPayException
*/
@Test
public void cycleCreateBalancePayment() throws BaseAdaPayException {
BigDecimal totalAmount = new BigDecimal("156821.00"); // TODO 需要转账的总金额
String outMemberId = "AM84864234"; // TODO 出账memberId
String inMemberId = "0"; // 入账memberId
String title = "提取余额到自己账户"; // 标题
String desc = "2025年9月27日10点26分售后需求客户重新添加结算账户, 原账户余额无法提取, 由现下打款给客户"; // 描述
String wechatAppId = wechatAppId1; // 万车充id
// 计算转账次数
BigDecimal singleLimit = new BigDecimal("10000.00"); // 单笔限额
int count = totalAmount.divide(singleLimit, 0, BigDecimal.ROUND_UP).intValue();
// 计算每次转账金额
BigDecimal remainingAmount = totalAmount;
List<BigDecimal> transferAmounts = new ArrayList<>();
while (remainingAmount.compareTo(BigDecimal.ZERO) > 0) {
// 计算当前转账金额(取剩余金额和单笔最大金额中的较小值)
BigDecimal currentAmount = remainingAmount.min(singleLimit);
transferAmounts.add(currentAmount);
// 减去已转账金额
remainingAmount = remainingAmount.subtract(currentAmount);
}
logger.info("计算转账次数:{}", count);
logger.info("转账金额:{}", transferAmounts);
// 循环创建转账
for (int i = 0; i < count; i++) {
String transAmt = transferAmounts.get(i).toString(); // 金额
adapayService.createBalancePaymentRequest(outMemberId, inMemberId, transAmt, title, desc, wechatAppId);
}
}
/**
* 提取余额到自己账户, 转账超过1万使用循环创建{@link PaymentTestController#cycleCreateBalancePayment()}
*/
@Test
public void createBalancePaymentRequestTest() {
String outMemberId = "AM46804136"; // 出账memberId
String outMemberId = "AM84864234"; // 出账memberId
String inMemberId = "0"; // 入账memberId
String transAmt = "23831.81"; // 金额
String transAmt = "10000.00"; // 金额
String title = "提取余额到自己账户"; // 标题
String desc = "2025年9月27日10点26分售后需求客户重新添加结算账户, 原账户余额无法提取, 由现下打款给客户"; // 描述
String wechatAppId = wechatAppId1; // 万车充id