From ad4531418ecd1e9d51581b158b054ffb4e016df7 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Wed, 3 Dec 2025 16:46:09 +0800 Subject: [PATCH] =?UTF-8?q?12=E6=9C=883=E6=97=A5=E9=93=B6=E8=A1=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3stripe=E6=95=88=E7=8E=87=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/cash/BankController.java | 4 ++-- .../java/com/example/demo/domain/DTO/BankDTO.java | 7 ++++++ .../demo/serviceImpl/cash/BankServiceImpl.java | 26 +++++++++++++--------- .../resources/cashMapper/CashCollectionMapper.xml | 4 ++-- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/example/demo/controller/cash/BankController.java b/src/main/java/com/example/demo/controller/cash/BankController.java index 6397d56..7610ce7 100644 --- a/src/main/java/com/example/demo/controller/cash/BankController.java +++ b/src/main/java/com/example/demo/controller/cash/BankController.java @@ -71,8 +71,8 @@ public class BankController { @PostMapping("/getStripe") public Result getStripe(@RequestBody BankDTO bankDTO) { try { - if (bankDTO.getTime().isEmpty() || bankDTO.getOrderNo().isEmpty()) { - return Result.error("时间或订单号为空"); + if (bankDTO.getOrderNo().isEmpty()) { + return Result.error("订单号为空"); } return bankService.getStripe(bankDTO); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/domain/DTO/BankDTO.java b/src/main/java/com/example/demo/domain/DTO/BankDTO.java index be717db..b9e49a3 100644 --- a/src/main/java/com/example/demo/domain/DTO/BankDTO.java +++ b/src/main/java/com/example/demo/domain/DTO/BankDTO.java @@ -23,4 +23,11 @@ public class BankDTO { private String orderNo = ""; //交易ID private String transactionId = ""; + //最大条数 + private int sum; + //开始时间 + private String startTime = ""; + //结束时间 + private String endTime = ""; + } \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java index 7081af4..af486e2 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/BankServiceImpl.java @@ -30,6 +30,9 @@ import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -386,14 +389,14 @@ public class BankServiceImpl implements BankService { // 方式一:通过订单号查找最近数据 String orderNo = bankDTO.getOrderNo(); - if (orderNo == null || orderNo.isEmpty()) { - return Result.error("订单号为空"); + if(bankDTO.getSum() <= 0){ + return Result.error("最大条数不能小于等于0"); } // 从Stripe获取最近的收费记录(最多200条) List allCharges = new ArrayList<>(); String startingAfter = null; - int totalLimit = 200; // 目标获取条数 + int totalLimit = bankDTO.getSum(); // 目标获取条数 int pageSize = 100; // 单次最大获取条数 do { @@ -402,15 +405,17 @@ public class BankServiceImpl implements BankService { if (currentPageSize <= 0) { break; // 已获取足够条数,停止 } - - // 构建分页参数 + Long startTime = LocalDate.parse(bankDTO.getStartTime(), DateTimeFormatter.ofPattern("yyyyMMdd")).atStartOfDay(ZoneId.of("Asia/Shanghai")).toEpochSecond(); + Long endTime = LocalDate.parse(bankDTO.getEndTime(), DateTimeFormatter.ofPattern("yyyyMMdd")).atStartOfDay(ZoneId.of("Asia/Shanghai")).toEpochSecond(); + ChargeListParams.Created createdCondition = ChargeListParams.Created.builder() + .setGte(startTime) // 大于等于开始时间 + .setLt(endTime) // 小于结束时间 + .build(); ChargeListParams params = ChargeListParams.builder() .setLimit((long) currentPageSize) .setStartingAfter(startingAfter) - .setCreated(1764738449L) + .setCreated(createdCondition) // 加入时间筛选 .build(); - // 加时间过滤:大于等于2024-12-04 00:00:00的时间戳 - try { // 执行分页查询 @@ -431,6 +436,7 @@ public class BankServiceImpl implements BankService { // 在获取的所有记录中查找匹配订单号的记录 Charge matchedCharge = null; + System.out.println(allCharges); for (Charge charge : allCharges) { // 从metadata中获取订单号进行匹配 if (charge.getMetadata() != null) { @@ -460,9 +466,9 @@ public class BankServiceImpl implements BankService { // 设置余额交易ID stripeDTO.setBalanceTransaction(matchedCharge.getBalanceTransaction()); - // 设置付款币种和金额(来自charge) + // 设置付款币种和金额(来自charge和来自balanceTransaction) stripeDTO.setCurrency(matchedCharge.getCurrency().toUpperCase()); - stripeDTO.setAmount(String.valueOf(matchedCharge.getAmount())); + stripeDTO.setAmount(String.valueOf(balanceTransaction.getAmount())); // 设置收款币种(来自charge) stripeDTO.setChargeCurrency(matchedCharge.getCurrency().toUpperCase()); diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index ef3548f..a1a1ebe 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -320,8 +320,8 @@ update cash_record_collection SET received_time=#{availableOn}, - payment_currency=#{chargeCurrency}, - received_currency=#{currency}, + payment_currency='2', + received_currency='2', payment_amount=#{amount}, received_amount=#{net}, handling_charge=#{fee},