完成一键登录和支付功能

This commit was merged in pull request #43.
This commit is contained in:
future
2026-06-28 14:47:42 +08:00
parent 35e7532f1b
commit fc48db071e
77 changed files with 4816 additions and 686 deletions
@@ -0,0 +1,77 @@
import com.huifu.bspay.sdk.opps.core.request.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class ListAllQueryApis {
public static void main(String[] args) {
System.out.println("=== 查找所有查询相关的请求类及字段 ===\n");
List<Class<?>> queryClasses = new ArrayList<>();
try {
Package pkg = V2TradePaymentScanpayQueryRequest.class.getPackage();
String pkgName = pkg.getName();
System.out.println("Package: " + pkgName);
} catch (Exception e) {
e.printStackTrace();
}
Class<?>[] classes = {
V2TradePaymentScanpayQueryRequest.class,
V2TradeCheckFilequeryRequest.class,
V2TradeTransstatQueryRequest.class,
V2TradeSettleCollectionDetailQueryRequest.class,
V2TradeBatchtranslogQueryRequest.class,
};
for (Class<?> clazz : classes) {
System.out.println("\n=== " + clazz.getSimpleName() + " ===");
System.out.println("functionCode: " + getFunctionCode(clazz));
System.out.println("所有setter方法:");
listSetters(clazz);
}
}
private static String getFunctionCode(Class<?> clazz) {
try {
Object instance = clazz.getDeclaredConstructor().newInstance();
Field functionCodeField = clazz.getSuperclass().getDeclaredField("functionCode");
functionCodeField.setAccessible(true);
return String.valueOf(functionCodeField.get(instance));
} catch (Exception e) {
try {
Field functionCodeField = clazz.getDeclaredField("functionCode");
functionCodeField.setAccessible(true);
Object instance = clazz.getDeclaredConstructor().newInstance();
return String.valueOf(functionCodeField.get(instance));
} catch (Exception e2) {
return "unknown";
}
}
}
private static void listSetters(Class<?> clazz) {
Method[] methods = clazz.getMethods();
List<String> setters = new ArrayList<>();
for (Method m : methods) {
if (m.getName().startsWith("set") && !m.getName().equals("setClass")) {
StringBuilder sb = new StringBuilder(" ");
sb.append(m.getName());
sb.append("(");
Class<?>[] params = m.getParameterTypes();
for (int i = 0; i < params.length; i++) {
if (i > 0) sb.append(", ");
sb.append(params[i].getSimpleName());
}
sb.append(")");
setters.add(sb.toString());
}
}
java.util.Collections.sort(setters);
for (String s : setters) {
System.out.println(s);
}
}
}
@@ -0,0 +1,71 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.Set;
public class TestBatchtranslogQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== V2TradeBatchtranslogQuery 批量交易日志查询测试 ==========");
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String weekAgo = java.time.LocalDate.now().minusDays(7).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate(weekAgo);
request.setEndDate(today);
System.out.println("请求参数: " + JSON.toJSONString(request));
System.out.println();
Map<String, Object> response = BasePayClient.request(request, false);
System.out.println("响应: " + JSON.toJSONString(response, true));
System.out.println();
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
System.out.println("resp_code: " + respCode);
System.out.println("resp_desc: " + response.getOrDefault("resp_desc", ""));
System.out.println();
System.out.println("所有字段:");
Set<String> keys = response.keySet();
for (String key : keys) {
System.out.println(" " + key);
}
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,87 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.Set;
public class TestBatchtranslogQuery2 {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== V2TradeBatchtranslogQuery 批量交易日志查询测试 ==========");
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String daysAgo30 = java.time.LocalDate.now().minusDays(30).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String daysAgo7 = java.time.LocalDate.now().minusDays(7).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String daysAgo5 = java.time.LocalDate.now().minusDays(5).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println("测试1: 近30天");
testQuery(huifuId, daysAgo30, today);
System.out.println();
System.out.println("测试2: 近7天");
testQuery(huifuId, daysAgo7, today);
System.out.println();
System.out.println("测试3: 近5天");
testQuery(huifuId, daysAgo5, today);
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void testQuery(String huifuId, String beginDate, String endDate) {
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate(beginDate);
request.setEndDate(endDate);
System.out.println(" beginDate=" + beginDate + ", endDate=" + endDate);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println(" resp_code: " + respCode);
System.out.println(" resp_desc: " + respDesc);
System.out.println(" result_count: " + response.get("result_count"));
System.out.println(" page_num: " + response.get("page_num"));
System.out.println(" page_size: " + response.get("page_size"));
if ("00000000".equals(respCode)) {
System.out.println(" *** 查询成功! ***");
Object transList = response.get("trans_log_result_list");
if (transList != null) {
System.out.println(" 交易列表: " + JSON.toJSONString(transList, true));
}
}
} catch (Exception e) {
System.out.println(" 调用失败: " + e.getMessage());
}
}
}
@@ -0,0 +1,78 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestBatchtranslogQuery3 {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== V2TradeBatchtranslogQuery 测试 ==========");
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String daysAgo90 = java.time.LocalDate.now().minusDays(90).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String daysAgo30 = java.time.LocalDate.now().minusDays(30).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println("测试1: 近90天 (跨度90天)");
testQuery(huifuId, daysAgo90, today);
System.out.println();
System.out.println("测试2: 近30天 (跨度30天)");
testQuery(huifuId, daysAgo30, today);
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
private static void testQuery(String huifuId, String beginDate, String endDate) {
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate(beginDate);
request.setEndDate(endDate);
System.out.println(" beginDate=" + beginDate + ", endDate=" + endDate);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println(" resp_code: " + respCode);
System.out.println(" resp_desc: " + respDesc);
System.out.println(" result_count: " + response.get("result_count"));
if ("00000000".equals(respCode)) {
System.out.println(" *** 查询成功! ***");
Object transList = response.get("trans_log_result_list");
if (transList != null) {
System.out.println(" 交易列表: " + JSON.toJSONString(transList, true));
}
}
} catch (Exception e) {
System.out.println(" 调用失败: " + e.getMessage());
}
}
}
@@ -0,0 +1,123 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradeSettleCollectionDetailQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
public class TestChannelQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCNUdQE59I4bV1dIgLs2IRN3Wl8KI2yS4KpTUQWrvvlUcBTztB8rIeN5lr6Yv4VsZ1TG0FAb0D80JjxEQ1+0HizYNOQ1h2935v2r8h7rx3VTLbMOkmsg8Lb8LQRTbPaJOZfsIZMzBytYiRzWunHaMlCr800EA3q5NMj9VjHQuamxKqyzyHqfkIjA/sZ8q9atVjn8ahUjPKdrGA8b79HexHhCgOSLdK+fWw0eMCsWWYP2qECLsvZ+tjfvqSBXx1kg7womwT1VBCf+0Dx+jJPKR3mxQfz2szoucJYuXRo55kA6yCwoeNsjanLDRkPBSy3NHdKrffP6YODhRHG6KHyayyNAgMBAAECggEATIR69TEETVNCEzRgOxe9A2AYRoa6ukhSdhMFA/c5IuCR747yqh7MwtNwfVRuWRazpZUDTr0uhfT4asad9QUx5YZO54RX1EAn9XkWZ4nY8G46J/iDfapWLrp09U2KTVpfdn5hKWH3QRX7wI4AON2O49HGnSL4NjAx9q1YpYOe2bqevxmB4uD9vR/FHMjZ2qWzPaL7pId98x4DCJCiZctBQqb7gxR8EseD1Ddn2HbH5DEUjoxz2umtL+zrcGKDFBy4kM3r+10FP5jFG4fJfZFQwrzMTEkXJriau9DMRTQ83rWHzNvhdTNUuyqah74ez5V1piVEOXCPudzFsMttD2DyzQKBgQDokQH3WtcQqwFTUo+uWVVup4NoQzNZpEGIHK17afRsf9YnkoJVqjhywq1dhQT+yuyW9geJJKWpHQIAS4gGudhNK+j6d//bbvvbkOmtsdWyZ6Z2EmY8JrPkHdHAcadNJX7vrIc1xPeyci4AHhErDHc3hhD5njuSLx3DUp4iODNxKwKBgQCbjyHvP90YGjh49DWklh2NJgR2+OR6Fd0afdmwtGKeCUP5l2To6rfLBbcSRIWCON4iLME5wLLdHcm5wAQukC4dsUB5iZffp21+7hrrwUw/G0MUzFudfhZkjsDU5i+FwnVMqmsLJPUsjJTOfKsJdA2DjnwfMcgxw9FeClGveSFNJwKBgQDCpjuDECDY7oeZeYyQXGzIxKOTbEtaR8Qha/83QCM3fHd9f35evK2qP45iq6bWqnkCkMEV4/pTZNf77zvWhU2oqYvBtxYKTwW1a8BphGJbg60rPZMb3TjLQLoB3B4uz6dCaqBwPH8kd7RQnNm5siFF84vZoLozTAQZKtj3wxorKQKBgQCGKnEONHqwaw0B5T7O8VoTfxKiug/07B6C1sCGk03rF/q0rkquSKK0S/2Vl9u+cOXFe+w7r2OVKjfuKRpyPpBHs7T0HiQLFhBuRVaat2DXnN/CdG8f6rvNhwHxnYanSwx4TxN7zShYf/doEEZEJP/y01ViYkFUCpvtC+FgAo0iSQKBgFrkJGxPo6T7i5ZF7VoZWdARnypfbOl4gF9GMrXykk0fnKBDTof9Bg34a8OX54cf4yEH1ifZzVtNyzPTH9FxV88TksWRouqi1Uo6///kJI6gXROspE91TpNtNGHPgLhebA83WlFtS/H7i5G6RO+6KO0uflSImfy3Owp/ChyFUGmn";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7PYy64gcO1Y44ntGFRdHzDJy6KnNoMLB6H5ZyCvqB2m2Bvzx18TMCjwevt5A4XF0ke9HfXRvZOL8TOaHdeiSbXWVBEpNsbQr0612U41cN688uHk4ShtoYuvSAbT0SuQULPh90BthzBrxrIuduex7qISk4d4mKvfM+tMTBQPWJc2au2yfTpisZPlKS5jg5xUCxG4UIze/xC4I92rVyVfziMm19Tzh1EXq4Hm1nXmRejgE2o2Hi/wu8Et6hj5UjZzPu3DPvzDN4AP372DP6EREYrVGYiD9qDqxx63jDqlGsdKmENXPp27gUqXX4vGD5xn0lOSXMHUQ5NUcXzdGbpWBBwIDAQAB";
String sysId = "6666000207573586";
String productId = "XLSISV";
String huifuId = "6666000207573586";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 渠道商ID查询测试 ==========");
System.out.println("渠道商huifuId: " + huifuId);
System.out.println();
String[] dates = {"20260620", "20260621", "20260622", "20260623", "20260624", "20260625", "20260626"};
String[] billTypes = {"TRADE_BILL", "MERGE_BILL"};
System.out.println("========== 1. 对账文件查询 ==========");
for (String date : dates) {
for (String billType : billTypes) {
try {
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(date);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
boolean hasData = response.containsKey("file_details") || response.containsKey("file_list")
|| response.containsKey("download_url") || response.containsKey("bill_list");
if (hasData || !"00000000".equals(respCode)) {
System.out.println("date=" + date + ", billType=" + billType + ": resp_code=" + respCode + ", resp_desc=" + respDesc + ", hasData=" + hasData);
if (hasData) {
System.out.println(" 完整响应: " + JSON.toJSONString(response, true));
}
}
} catch (Exception e) {
System.out.println("date=" + date + ", billType=" + billType + ": 失败 - " + e.getMessage());
}
}
}
System.out.println();
System.out.println("========== 2. 批量交易日志查询 ==========");
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate("20260620");
request.setEndDate("20260626");
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
String resultCount = String.valueOf(response.getOrDefault("result_count", ""));
System.out.println("resp_code=" + respCode + ", resp_desc=" + respDesc + ", result_count=" + resultCount);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 3. 结算汇总明细查询 ==========");
try {
V2TradeSettleCollectionDetailQueryRequest request = new V2TradeSettleCollectionDetailQueryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setBeginDate("20260620");
request.setEndDate("20260626");
request.setInHuifuId(huifuId);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
String totalCount = String.valueOf(response.getOrDefault("total_count", ""));
System.out.println("resp_code=" + respCode + ", resp_desc=" + respDesc + ", total_count=" + totalCount);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,73 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
public class TestCheckFileQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 对账单查询测试 ==========");
System.out.println("商户号: " + huifuId);
System.out.println();
String[] billTypes = {"TRADE_BILL", "MERGE_BILL"};
String[] dates = {"20260624", "20260625", "20260626"};
for (String date : dates) {
for (String billType : billTypes) {
try {
System.out.println("--- 查询: date=" + date + ", billType=" + billType + " ---");
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(date);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
System.out.println();
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
}
}
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,13 @@
import com.huifu.dg.lightning.models.payment.TradePaymentCreateRequest;
public class TestCreateRequest {
public static void main(String[] args) {
System.out.println("=== TradePaymentCreateRequest 方法列表 ===");
java.lang.reflect.Method[] methods = TradePaymentCreateRequest.class.getMethods();
for (java.lang.reflect.Method m : methods) {
if (m.getName().startsWith("set") || m.getName().startsWith("get")) {
System.out.println(" " + m.getName());
}
}
}
}
@@ -0,0 +1,14 @@
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestCreateResponse {
public static void main(String[] args) {
String sampleResponse = "{\"resp_code\":\"00000000\",\"resp_desc\":\"成功\",\"pay_url\":\"https://qr.alipay.com/bax06073aogec1i3hnxm25ca\",\"hf_seq_id\":\"002900TOP1B260626063214P375ac139c1e00000\",\"party_order_id\":\"03212606262353456318391\",\"trans_amt\":\"0.01\",\"goods_desc\":\"测试商品\"}";
Map<String, Object> response = JSON.parseObject(sampleResponse, Map.class);
System.out.println("=== 汇付创建支付响应字段 ===");
for (Map.Entry<String, Object> entry : response.entrySet()) {
System.out.println(" " + entry.getKey() + ": " + entry.getValue());
}
}
}
@@ -0,0 +1,101 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestMerchantOrderQuery {
public static void main(String[] args) {
try {
String merchantPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String merchantPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String merchantSysId = "6666000207581039";
String merchantHuifuId = "6666000207581039";
String productId = "XLSISV";
String skillSource = "hfps/1.3.0";
String merchantOrderId = "20260626063214992n7xcukl8mp4cbx";
String hfSeqId = "002900TOP1B260626063214P375ac139c1e00000";
String channelHuifuId = "6666000207573586";
String queryDate = "20260626";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(merchantSysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(merchantPrivateKey);
merConfig.setRsaPublicKey(merchantPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 1. 使用商户ID + org_req_seq_id 查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(merchantHuifuId);
request.setOrgReqSeqId(merchantOrderId);
request.setOrgReqDate(queryDate);
System.out.println("请求参数: huifuId=" + merchantHuifuId + ", orgReqSeqId=" + merchantOrderId + ", orgReqDate=" + queryDate);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println("\n========== 2. 使用商户ID + org_hf_seq_id 查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(merchantHuifuId);
request.setOrgHfSeqId(hfSeqId);
request.setOrgReqDate(queryDate);
System.out.println("请求参数: huifuId=" + merchantHuifuId + ", orgHfSeqId=" + hfSeqId + ", orgReqDate=" + queryDate);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println("\n========== 3. 使用渠道商ID + org_req_seq_id 查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(channelHuifuId);
request.setOrgReqSeqId(merchantOrderId);
request.setOrgReqDate(queryDate);
System.out.println("请求参数: huifuId=" + channelHuifuId + ", orgReqSeqId=" + merchantOrderId + ", orgReqDate=" + queryDate);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,100 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
public class TestMoreDates {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 测试更早日期的对账文件查询 ==========");
String[] dates = {"20260620", "20260621", "20260622", "20260623", "20260624"};
String[] billTypes = {"TRADE_BILL", "MERGE_BILL"};
for (String date : dates) {
for (String billType : billTypes) {
try {
System.out.println("--- 查询: date=" + date + ", billType=" + billType + " ---");
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(date);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println(" 响应码: " + respCode + ", 描述: " + respDesc);
if ("00000000".equals(respCode)) {
boolean hasData = false;
String[] keys = {"file_details", "file_list", "task_details", "bill_list", "download_url", "file_name"};
for (String key : keys) {
Object val = response.get(key);
if (val != null && !"null".equals(String.valueOf(val)) && !String.valueOf(val).isEmpty()) {
System.out.println(" " + key + ": " + JSON.toJSONString(val));
hasData = true;
}
}
if (!hasData) {
System.out.println(" (无明细数据)");
}
}
System.out.println();
} catch (Exception e) {
System.out.println(" 调用失败: " + e.getMessage());
}
}
}
System.out.println();
System.out.println("========== 测试批量交易日志查询 (更早日期范围) ==========");
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate("20260601");
request.setEndDate("20260626");
Map<String, Object> response = BasePayClient.request(request, false);
System.out.println("响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,88 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradeSettleCollectionDetailQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestOtherQueryApis {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
String today = DateTools.getCurrentDateYYYYMMDD();
String yesterday = "20260625";
System.out.println("========== 1. 批量交易日志查询 (V2TradeBatchtranslogQueryRequest) ==========");
try {
V2TradeBatchtranslogQueryRequest request = new V2TradeBatchtranslogQueryRequest();
request.setHuifuId(huifuId);
request.setBeginDate(yesterday);
request.setEndDate(today);
System.out.println("请求参数: " + JSON.toJSONString(request));
System.out.println();
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 2. 结算汇总明细查询 (V2TradeSettleCollectionDetailQueryRequest) ==========");
try {
V2TradeSettleCollectionDetailQueryRequest request = new V2TradeSettleCollectionDetailQueryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setBeginDate(yesterday);
request.setEndDate(today);
request.setInHuifuId(huifuId);
System.out.println("请求参数: " + JSON.toJSONString(request));
System.out.println();
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,22 @@
import com.huifu.dg.lightning.models.payment.TradePaymentScanpayQueryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
public class TestQueryRequest {
public static void main(String[] args) {
System.out.println("=== V4 TradePaymentScanpayQueryRequest 方法列表 ===");
java.lang.reflect.Method[] methods4 = TradePaymentScanpayQueryRequest.class.getMethods();
for (java.lang.reflect.Method m : methods4) {
if (m.getName().startsWith("set") || m.getName().startsWith("get")) {
System.out.println(" " + m.getName());
}
}
System.out.println("\n=== V2 V2TradePaymentScanpayQueryRequest 方法列表 ===");
java.lang.reflect.Method[] methods2 = V2TradePaymentScanpayQueryRequest.class.getMethods();
for (java.lang.reflect.Method m : methods2) {
if (m.getName().startsWith("set") || m.getName().startsWith("get")) {
System.out.println(" " + m.getName());
}
}
}
}
@@ -0,0 +1,86 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestQueryWithOrgFields {
public static void main(String[] args) {
try {
String merchantPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String merchantPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String merchantSysId = "6666000207581039";
String merchantHuifuId = "6666000207581039";
String productId = "XLSISV";
String skillSource = "hfps/1.3.0";
String outOrdId = "20260626063214992n7xcukl8mp4cbx";
String hfSeqId = "002900TOP1B260626063214P375ac139c1e00000";
System.out.println("========== 测试单笔交易查询(使用org字段)==========");
System.out.println("商户订单号: " + outOrdId);
System.out.println("汇付流水号: " + hfSeqId);
System.out.println();
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(merchantSysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(merchantPrivateKey);
merConfig.setRsaPublicKey(merchantPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 1. 使用 org_hf_seq_id 查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(merchantHuifuId);
request.setOrgHfSeqId(hfSeqId);
request.setOrgReqDate("20260626");
System.out.println("请求参数: huifuId=" + merchantHuifuId + ", orgHfSeqId=" + hfSeqId + ", orgReqDate=20260626");
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 2. 使用 org_req_seq_id + org_req_date 查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(merchantHuifuId);
request.setOrgReqSeqId(outOrdId);
request.setOrgReqDate("20260626");
System.out.println("请求参数: huifuId=" + merchantHuifuId + ", orgReqSeqId=" + outOrdId + ", orgReqDate=20260626");
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,77 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradePaymentScanpayQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestQueryWithRealOrder {
public static void main(String[] args) {
try {
String merchantPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String merchantPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String merchantSysId = "6666000207581039";
String merchantHuifuId = "6666000207581039";
String productId = "XLSISV";
String skillSource = "hfps/1.3.0";
String outOrdId = "20260626063214992n7xcukl8mp4cbx";
String hfSeqId = "002900TOP1B260626063214P375ac139c1e00000";
System.out.println("========== 测试单笔交易查询 ==========");
System.out.println("商户订单号: " + outOrdId);
System.out.println("汇付流水号: " + hfSeqId);
System.out.println();
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(merchantSysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(merchantPrivateKey);
merConfig.setRsaPublicKey(merchantPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 1. V2 扫码支付查询 - 按商户订单号查询 ==========");
try {
V2TradePaymentScanpayQueryRequest request = new V2TradePaymentScanpayQueryRequest();
request.setHuifuId(merchantHuifuId);
request.setOutOrdId(outOrdId);
System.out.println("请求参数: huifuId=" + merchantHuifuId + ", outOrdId=" + outOrdId);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 2. V2TradePaymentScanpayQueryRequest 所有方法 ==========");
try {
java.lang.reflect.Method[] methods = V2TradePaymentScanpayQueryRequest.class.getMethods();
for (java.lang.reflect.Method m : methods) {
if (m.getName().startsWith("set") || m.getName().startsWith("get")) {
System.out.println(" " + m.getName());
}
}
} catch (Exception e) {
System.out.println("获取方法失败: " + e.getMessage());
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,101 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
public class TestReconciliationDetail {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 斗拱对账单查询 - 详细响应分析 ==========");
System.out.println();
String yesterday = java.time.LocalDate.now().minusDays(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println("测试日期: " + yesterday);
System.out.println();
String[] billTypes = {"TRADE_BILL", "MERGE_BILL", "FEE_BILL", "REFUND_BILL"};
for (String billType : billTypes) {
System.out.println("--------------------------------------------------");
System.out.println("账单类型: " + billType);
System.out.println("--------------------------------------------------");
try {
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(yesterday);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("resp_code: " + respCode);
System.out.println("resp_desc: " + respDesc);
System.out.println();
System.out.println("所有响应字段:");
Set<String> keys = response.keySet();
for (String key : keys) {
Object value = response.get(key);
String valueStr = value != null ? value.toString() : "null";
if (valueStr.length() > 100) {
valueStr = valueStr.substring(0, 100) + "...";
}
System.out.println(" " + key + " = " + valueStr);
}
System.out.println();
if ("00000000".equals(respCode)) {
Object fileDetails = response.get("file_details");
if (fileDetails != null) {
System.out.println("*** 找到 file_details ***");
System.out.println("file_details 类型: " + fileDetails.getClass().getName());
System.out.println("file_details 内容: " + JSON.toJSONString(fileDetails, true));
return;
}
Object taskDetails = response.get("task_details");
if (taskDetails != null) {
System.out.println("*** 找到 task_details ***");
System.out.println("task_details 内容: " + JSON.toJSONString(taskDetails, true));
}
}
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
}
System.out.println();
}
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,91 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
public class TestReconciliationProd {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 斗拱官方交易对账单查询测试(生产环境)==========");
System.out.println("环境: 生产环境");
System.out.println("商户号: " + huifuId);
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String yesterday = java.time.LocalDate.now().minusDays(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String dayBeforeYesterday = java.time.LocalDate.now().minusDays(2).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String[] testDates = {today, yesterday, dayBeforeYesterday};
String[] billTypes = {"TRADE_BILL", "MERGE_BILL"};
for (String testDate : testDates) {
for (String billType : billTypes) {
System.out.println("--------------------------------------------------");
System.out.println("测试日期: " + testDate + ", 账单类型: " + billType);
System.out.println("--------------------------------------------------");
try {
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(testDate);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
System.out.println("请求参数: " + JSON.toJSONString(request));
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
if ("00000000".equals(respCode)) {
System.out.println("*** 查询成功! ***");
Object fileDetails = response.get("file_details");
if (fileDetails != null && !"null".equals(String.valueOf(fileDetails))) {
System.out.println("*** 找到对账单文件! ***");
return;
}
}
System.out.println();
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
}
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,58 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeSettleCollectionDetailQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestSettlementQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 测试结算汇总明细查询(生产环境)==========");
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String weekAgo = java.time.LocalDate.now().minusDays(7).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println("----- 结算汇总明细查询 -----");
try {
V2TradeSettleCollectionDetailQueryRequest request = new V2TradeSettleCollectionDetailQueryRequest();
request.setReqDate(today);
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setBeginDate(weekAgo);
request.setEndDate(today);
request.setInHuifuId(huifuId);
System.out.println("请求参数: " + JSON.toJSONString(request));
Map<String, Object> response = BasePayClient.request(request, false);
System.out.println("响应: " + JSON.toJSONString(response, true));
} catch (Exception e) {
System.out.println("查询失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,48 @@
import com.huifu.dg.lightning.factory.Factory;
import com.huifu.dg.lightning.biz.client.CommonPayClient;
import com.huifu.dg.lightning.models.payment.TradePaymentScanpayQueryRequest;
import com.huifu.dg.lightning.utils.BasePay;
import com.huifu.dg.lightning.biz.config.MerConfig;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestSingleQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
MerConfig merConfig = new MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
BasePay.prodMode = BasePay.MODE_PROD;
BasePay.initWithMerConfig(merConfig);
System.out.println("========== V4 单笔交易查询测试 ==========");
CommonPayClient client = Factory.Payment.Common();
TradePaymentScanpayQueryRequest queryRequest = new TradePaymentScanpayQueryRequest();
queryRequest.setReqDate("20260626");
queryRequest.setReqSeqId(com.huifu.dg.lightning.utils.SequenceTools.getReqSeqId32());
queryRequest.setHuifuId(huifuId);
queryRequest.setOutOrdId("20260626063214982n7cuxk8mp4cbbx");
Map<String, Object> response = client.query(queryRequest);
System.out.println("查询响应:");
System.out.println(JSON.toJSONString(response, true));
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,71 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeTransstatQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestTransstat {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 交易状态查询测试 ==========");
System.out.println("商户号: " + huifuId);
System.out.println();
try {
V2TradeTransstatQueryRequest request = new V2TradeTransstatQueryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setHuifuId(huifuId);
request.setPageNo("1");
request.setPageSize("20");
System.out.println("请求参数: " + JSON.toJSONString(request));
System.out.println();
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
if ("00000000".equals(respCode)) {
System.out.println();
System.out.println("*** 查询成功! ***");
Object transDetails = response.get("trans_details");
if (transDetails != null) {
System.out.println("trans_details: " + transDetails);
}
}
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,66 @@
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeTransstatQueryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestTransstatQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_PROD;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 斗拱官方交易状态查询测试(生产环境)==========");
System.out.println("环境: 生产环境");
System.out.println("商户号: " + huifuId);
System.out.println();
try {
V2TradeTransstatQueryRequest request = new V2TradeTransstatQueryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setHuifuId(huifuId);
request.setPageNo("1");
request.setPageSize("10");
System.out.println("请求参数: " + JSON.toJSONString(request));
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
System.out.println("完整响应: " + JSON.toJSONString(response, true));
if ("00000000".equals(respCode)) {
System.out.println("*** 查询成功! ***");
}
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,74 @@
import com.huifu.dg.lightning.factory.Factory;
import com.huifu.dg.lightning.biz.client.CommonPayClient;
import com.huifu.dg.lightning.models.payment.TradePaymentScanpayQueryRequest;
import com.huifu.dg.lightning.utils.BasePay;
import com.huifu.dg.lightning.biz.config.MerConfig;
import com.alibaba.fastjson.JSON;
import java.util.Map;
public class TestV4SingleQuery {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
MerConfig merConfig = new MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
BasePay.prodMode = BasePay.MODE_PROD;
BasePay.initWithMerConfig(merConfig);
System.out.println("========== V4 闪电支付单笔查询测试(生产环境)==========");
System.out.println();
try {
CommonPayClient client = Factory.Payment.Common();
TradePaymentScanpayQueryRequest queryRequest = new TradePaymentScanpayQueryRequest();
queryRequest.setReqDate("20260626");
queryRequest.setReqSeqId(com.huifu.dg.lightning.utils.SequenceTools.getReqSeqId32());
queryRequest.setHuifuId(huifuId);
queryRequest.setOutOrdId("PAY20260626110000test001");
System.out.println("查询请求: outOrdId=PAY20260626110000test001");
System.out.println();
Map<String, Object> response = client.query(queryRequest);
System.out.println("查询响应:");
System.out.println(JSON.toJSONString(response, true));
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
System.out.println();
System.out.println("resp_code: " + respCode);
System.out.println("resp_desc: " + response.getOrDefault("resp_desc", ""));
if ("00000000".equals(respCode)) {
System.out.println("*** 查询成功! ***");
} else if ("00000100".equals(respCode)) {
System.out.println("*** 交易处理中 ***");
} else {
System.out.println("*** 查询失败或交易不存在 ***");
}
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,50 @@
package cn.novalon.gym.manage.payment;
import com.huifu.bspay.sdk.opps.core.request.V2TradeTransstatQueryRequest;
import com.huifu.bspay.sdk.opps.core.request.V2TradeBatchtranslogQueryRequest;
import com.alibaba.fastjson.JSON;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class CheckTransstatFields {
public static void main(String[] args) {
System.out.println("========== V2TradeTransstatQueryRequest 字段 ==========");
Field[] fields = V2TradeTransstatQueryRequest.class.getDeclaredFields();
for (Field f : fields) {
System.out.println(" " + f.getName() + " : " + f.getType().getSimpleName());
}
System.out.println("\n========== V2TradeTransstatQueryRequest 方法 ==========");
Method[] methods = V2TradeTransstatQueryRequest.class.getDeclaredMethods();
for (Method m : methods) {
if (m.getName().startsWith("set") || m.getName().startsWith("get")) {
System.out.println(" " + m.getName() + " : " + m.getReturnType().getSimpleName());
}
}
System.out.println("\n========== V2TradeTransstatQueryRequest 父类字段 ==========");
Field[] superFields = V2TradeTransstatQueryRequest.class.getSuperclass().getDeclaredFields();
for (Field f : superFields) {
System.out.println(" " + f.getName() + " : " + f.getType().getSimpleName());
}
System.out.println("\n========== V2TradeBatchtranslogQueryRequest 字段 ==========");
Field[] fields2 = V2TradeBatchtranslogQueryRequest.class.getDeclaredFields();
for (Field f : fields2) {
System.out.println(" " + f.getName() + " : " + f.getType().getSimpleName());
}
System.out.println("\n========== 测试构造 V2TradeTransstatQueryRequest ==========");
V2TradeTransstatQueryRequest req = new V2TradeTransstatQueryRequest();
req.setReqDate("20260626");
req.setHuifuId("6666000207581039");
req.setPageNo("1");
req.setPageSize("50");
java.util.Map<String, Object> extendInfo = new java.util.HashMap<>();
extendInfo.put("begin_date", "20260625");
extendInfo.put("end_date", "20260626");
extendInfo.put("trade_type", "A_NATIVE");
req.setExtendInfo(extendInfo);
System.out.println(JSON.toJSONString(req, true));
}
}
@@ -0,0 +1,101 @@
package cn.novalon.gym.manage.payment;
import com.huifu.bspay.sdk.opps.client.BasePayClient;
import com.huifu.bspay.sdk.opps.core.request.V2TradeCheckFilequeryRequest;
import com.huifu.bspay.sdk.opps.core.utils.DateTools;
import com.huifu.bspay.sdk.opps.core.utils.SequenceTools;
import com.alibaba.fastjson.JSON;
import java.util.Map;
import java.util.HashMap;
public class TestReconciliation {
public static void main(String[] args) {
try {
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcxAwrhZF+izz1gxQKOr4jnC05obIBHbl0DzHOcd4CaaDV7Kv1NRJKi33JhdDsW4JGgu16e5Rtzq1VzU5VWz5EKgGL46maOFwCkngJUTP/LC3JVf/wtJmYCm8xNE8C7GNNIqKzYEvUOEfXqagpVvVrGsQ9FpzFp2rP9hBmHY3yizVyPX/uT9S+af5TRxiaItj3SSJGgloaEMrnKOpb/EH7JwPSS0liAyT/NxPfOyyZHc22AvaAIOE5y+0PMUCKPuIdfpOrej3LVpO1Arc2hSgmdB+YIPSiBVYPXa6AuAmil9mpbtSikQJ7Uu7lX4JyTW4QxQ06rPFKnFWVKkzivAElAgMBAAECggEAJd0AJ37iTlMpDQ90xqe7hvRQxAu256gbQ9nrqLY97g0/KIw6WEZSPakFX6gvdvb/NzKmUyAIEKGLoh6tXdZk6qfOqc/6BeK47nIcBfwT9/zerjNUVvn34w4aHyNINieMMHQ+Id8PUZmqWH+Euz9ilVTosuyEPwUZulLvUQqwXzU5VnwVghURbUhDd+ecBJACWgemRun6d5241PQXNYAdH1k7cETd8GfIi3qclhhJrxi7tu5tq4YGCXQIoz7HCLim7GIvT0M+FRgSw2EOrHnAQNFeQ/vQbP71ttLoTxehL6Se9dfWrV5OI+Y/T7vR2F84Qt0iNbaxyJGir7siKDFIwQKBgQDXDzinx3/TasplM78pR/0CtuuKr1Ch02LOPrTosJ1qf1OohxQThowhOTxMsBlgYSKu9s1QRffUUXEqYXxd2B6lzDKfggwO6U2XxIcxWeNow0xoFfqcXYSg7Ga2sCr9uhdwxIdFQNF7SNBpT8ht4fJrRX6mWY1nHybpyTDQ4xoQNQKBgQC6m+yiOoi5JD3zVSSJq/iq5DJPA5B4aoP+t5u9lp2Q7iVO0QI5ilBlEKGE4VOU0glnXlDTfuqEYooMY85ekl4WGb3AOT0PhLL2i+gO2nlWBzf4HPzB/hibjfyPyniRM03cHkG3HXucL7Sne6FwERcfjEqjUd2cdP1l89PNrq4rMQKBgQCMmjABSWYh8/y1I5rEQ4OAJdVjC3GdC1Xa35ZpVybjvLEWSpHunhW5lvD8dllw8LC7UTI0XDpGPqTM/4VO2YBYB2PFc0Gs8g0/v0ZgFpOeJ6kpl80MM/wFNemFYTIKRoMSv/psZY9PmfBgGcBBTuquBXZjDcNr+yr2yAm5V/DvTQKBgHqRi94KoF8q5N39IKCkqhJlDH5FkxDktYoKw2rFkPzuzuZz9gghRyj6wXxsG9/2DWMt2dzw0czehFoa/CO188KEadPmRKr6uCmkP2nyKhxNZX+8WnB5G2Sg4DD6BjMpBYz8+qDx5ozx8LDJTYI0V4HLPgMD9JGdbgsXGhlREOkhAoGALr6IQOXnviWNAhCdc7rrsaMLMPbLZ1wqzWtQUG1JxDobbpzEP4CW/mvW5pMn58mSBg5qbXhyDI4fFP0CPb98QIz2tGnIzYyFzdKmF5Z1N7X1OF9O+tsSqASoBZzTqB4fr/o4mz0s9JCeriBR2LWjsbsDU13DTLsfQpWbtOnIy70=";
String huifuPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuqolFneAH66z3/3gaIYIaRZOIk/UYzdsXIm0RyawYBYAOu/NJ7ul8CRIrRlt5vd98HodW2yPrXA4+VHF3AS9UE4WTDpo9qV5brhqQSr/lAuZtEwMZwUWwgdnGFMkUFd9RvyGXAqY0bsQrcQgQ6zGjZHzlMljogDR3iblG0ak5ssD2TSC2W+1cxu+id+FP6onZXlXizuClTyIRh17m7CbS6rl0P3M96MlTdCzTeBw/Y54CiegBJI2wOrm2Qa6Dg6KRc+YkaJWjuRJVJkwjk8JhSyALno9oEzuDKaAXlsQlxeIhmAy4esRrZGrMV8SG0gwUZIP8lduPjQE95lCqqJ0gQIDAQAB";
String sysId = "6666000207581039";
String productId = "XLSISV";
String huifuId = "6666000207581039";
String skillSource = "hfps/1.3.0";
com.huifu.bspay.sdk.opps.core.config.MerConfig merConfig = new com.huifu.bspay.sdk.opps.core.config.MerConfig();
merConfig.setSysId(sysId);
merConfig.setProductId(productId);
merConfig.setRsaPrivateKey(privateKey);
merConfig.setRsaPublicKey(huifuPublicKey);
merConfig.setSkillSource(skillSource);
com.huifu.bspay.sdk.opps.core.BasePay.prodMode = com.huifu.bspay.sdk.opps.core.BasePay.MODE_TEST;
com.huifu.bspay.sdk.opps.core.BasePay.initWithMerConfig(merConfig);
System.out.println("========== 斗拱官方交易对账单查询测试 ==========");
System.out.println("环境: 测试环境");
System.out.println("商户号: " + huifuId);
System.out.println();
String today = DateTools.getCurrentDateYYYYMMDD();
String yesterday = java.time.LocalDate.now().minusDays(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String dayBeforeYesterday = java.time.LocalDate.now().minusDays(2).format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
String[] testDates = {today, yesterday, dayBeforeYesterday};
String[] billTypes = {"TRADE_BILL", "MERGE_BILL"};
for (String testDate : testDates) {
for (String billType : billTypes) {
System.out.println("--------------------------------------------------");
System.out.println("测试日期: " + testDate + ", 账单类型: " + billType);
System.out.println("--------------------------------------------------");
try {
V2TradeCheckFilequeryRequest request = new V2TradeCheckFilequeryRequest();
request.setReqDate(DateTools.getCurrentDateYYYYMMDD());
request.setReqSeqId(SequenceTools.getReqSeqId32());
request.setHuifuId(huifuId);
request.setFileDate(testDate);
Map<String, Object> extendInfoMap = new HashMap<>();
extendInfoMap.put("bill_type", billType);
request.setExtendInfo(extendInfoMap);
System.out.println("请求参数: " + JSON.toJSONString(request));
Map<String, Object> response = BasePayClient.request(request, false);
String respCode = String.valueOf(response.getOrDefault("resp_code", ""));
String respDesc = String.valueOf(response.getOrDefault("resp_desc", ""));
Object fileDetails = response.get("file_details");
Object taskDetails = response.get("task_details");
System.out.println("响应码: " + respCode);
System.out.println("响应描述: " + respDesc);
if (fileDetails != null) {
System.out.println("文件明细: " + JSON.toJSONString(fileDetails, true));
}
if (taskDetails != null) {
System.out.println("任务明细: " + JSON.toJSONString(taskDetails, true));
}
if ("00000000".equals(respCode)) {
System.out.println("*** 查询成功! ***");
if (fileDetails != null && !"null".equals(String.valueOf(fileDetails))) {
System.out.println("*** 找到对账单文件! ***");
System.out.println("完整响应: " + JSON.toJSONString(response, true));
return;
}
}
System.out.println();
} catch (Exception e) {
System.out.println("调用失败: " + e.getMessage());
e.printStackTrace();
}
}
}
System.out.println();
System.out.println("========== 测试结束 ==========");
} catch (Exception e) {
e.printStackTrace();
}
}
}