import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import com.huifu.bspay.sdk.opps.client.BasePayClient; import com.huifu.bspay.sdk.opps.core.BasePay; import com.huifu.bspay.sdk.opps.core.config.MerConfig; import com.huifu.bspay.sdk.opps.core.request.V2MerchantBasicdataSettlementQueryRequest; import java.nio.file.Files; import java.nio.file.Path; import java.time.LocalDate; import java.time.format.DateTimeFormatter; /** * 查询斗拱的结算记录(只读),用于后台「结算记录」页。 * *

用法:java -cp "target/classes;<deps>;<tools>" SettlementRecordProbe <huifu_id> [beginDate] [endDate] */ public class SettlementRecordProbe { public static void main(String[] args) throws Exception { String huifuId = args.length > 0 ? args[0] : "6666000226048687"; String end = args.length > 1 ? args[1] : LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); String begin = args.length > 2 ? args[2] : LocalDate.now().minusDays(30).format(DateTimeFormatter.BASIC_ISO_DATE); JsonNode huifu = new YAMLMapper().readTree(Files.newInputStream( Path.of("src", "main", "resources", "application.yml"))) .path("app").path("payment").path("huifu"); BasePay.debug = false; BasePay.prodMode = "prod".equalsIgnoreCase(text(huifu, "environment", "prod")) ? BasePay.MODE_PROD : BasePay.MODE_TEST; MerConfig config = new MerConfig(); config.setSysId(text(huifu, "system-id", "").trim()); config.setProductId(text(huifu, "product-id", "").trim()); config.setRsaPrivateKey(text(huifu, "private-key", "").trim()); config.setRsaPublicKey(text(huifu, "platform-public-key", "").trim()); BasePay.initWithMerConfig(config); V2MerchantBasicdataSettlementQueryRequest request = new V2MerchantBasicdataSettlementQueryRequest(); request.setReqDate(LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE)); request.setReqSeqId("SQ" + System.currentTimeMillis()); request.setHuifuId(huifuId); request.setBeginDate(begin); request.setEndDate(end); request.setPageSize("20"); System.out.println("== 查询区间 " + begin + " ~ " + end + " =="); System.out.println("================ 结算记录原始回执 ================"); try { System.out.println(JSON.toJSONString(BasePayClient.request(request, false), true)); } catch (Exception exception) { System.out.println("!! 调用失败: " + exception.getClass().getSimpleName() + " : " + exception.getMessage()); } System.out.println("================================================"); } private static String text(JsonNode node, String field, String fallback) { String value = node.path(field).asText(""); if (value.isBlank()) return fallback; if (value.startsWith("${") && value.endsWith("}")) { String inner = value.substring(2, value.length() - 1); int separator = inner.indexOf(':'); value = separator >= 0 ? inner.substring(separator + 1) : ""; } return value.isBlank() ? fallback : value; } }