一个 xml 测试

This commit is contained in:
cheney 2026-05-18 17:15:00 +08:00
parent 8de764c731
commit e8a62c1d4a
2 changed files with 131 additions and 0 deletions

6
config.json Normal file
View File

@ -0,0 +1,6 @@
{
"ip1": "172.1.41.3",
"ip2": "172.1.41.139",
"port": 8889,
"dn": "C=cn,O=CFCA OCA1 SM2,OU=Local RA OCA1,OU=Units,CN=041@N91330108762038374D@杭州信雅达科技有限公司@00000002"
}

View File

@ -0,0 +1,125 @@
package com.sample;
import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.sunyard.SydApiException;
import racal.sunyard.main.SydApi4j;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Test {
private static final String odata = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType name=\"银行账号转账\" authLevel=\"0\">BankAcctTransfer</TradeType><Timestamp>1710469760912</Timestamp><Fields><AcctType>INNERDEBIT</AcctType><PayerSubAcSeq></PayerSubAcSeq><PayerBankAcType>96</PayerBankAcType><PayerAcNo>6229539600100010640</PayerAcNo><PayerAcName>王二类</PayerAcName><PayerCurrency>156</PayerCurrency><PayeeAcNo name=\"收款人账号:\">6217788308301020599</PayeeAcNo><PayeeAcName name=\"收款人名称:\">王二类</PayeeAcName><Amount name=\"转账金额:\">1</Amount><PayeeBankCode>402/402361018886</PayeeBankCode><PayeeBankName>安徽农金</PayeeBankName><ProvinceCode></ProvinceCode><ProvinceName></ProvinceName><CityCode></CityCode><CityName></CityName><UnionDeptId></UnionDeptId><UnionDeptName></UnionDeptName><TransType>0</TransType><Remark></Remark><Fee>0.00</Fee><CRFlag>1</CRFlag><TransTypeFlag>0</TransTypeFlag><TrsRouteType>0</TrsRouteType><AddPayeeBookFlag>1</AddPayeeBookFlag></Fields></SignData>";
private static String ip1 = null;
private static String ip2 = null;
private static int port = 0;
private static String dn = null;
private static int success = 0;
private static int error = 0;
private static void printInfo(){
System.out.println(String.format("调用总数=%d\t成功总数=%d\t失败总数=%d", success+error, success, error));
}
private static void checkOK(){
success += 1;
printInfo();
}
private static void checkError(){
error += 1;
printInfo();
}
public static void case1(){
SydApi4j.SYD_Set_Parameter_HA(ip1, ip2, port, 3000);
SydApi4j api = (SydApi4j) new SydApi4j();
try {
// 获取签名证书
String cert1 = api.getCertByDn(dn,0);
// 获取加密证书
String cert2 = api.getCertByDn(dn,0);
String odata = "<?xml version=\"1.0\" encoding=\"utf-8\"?><SignData><TradeType name=\"银行账号转账\" authLevel=\"0\">BankAcctTransfer</TradeType><Timestamp>1710469760912</Timestamp><Fields><AcctType>INNERDEBIT</AcctType><PayerSubAcSeq></PayerSubAcSeq><PayerBankAcType>96</PayerBankAcType><PayerAcNo>6229539600100010640</PayerAcNo><PayerAcName>王二类</PayerAcName><PayerCurrency>156</PayerCurrency><PayeeAcNo name=\"收款人账号:\">6217788308301020599</PayeeAcNo><PayeeAcName name=\"收款人名称:\">王二类</PayeeAcName><Amount name=\"转账金额:\">1</Amount><PayeeBankCode>402/402361018886</PayeeBankCode><PayeeBankName>安徽农金</PayeeBankName><ProvinceCode></ProvinceCode><ProvinceName></ProvinceName><CityCode></CityCode><CityName></CityName><UnionDeptId></UnionDeptId><UnionDeptName></UnionDeptName><TransType>0</TransType><Remark></Remark><Fee>0.00</Fee><CRFlag>1</CRFlag><TransTypeFlag>0</TransTypeFlag><TrsRouteType>0</TrsRouteType><AddPayeeBookFlag>1</AddPayeeBookFlag></Fields></SignData>";
byte[] nakedSign = api.SYD_NakedSign(dn, odata.getBytes(), null);
boolean nakedVerify2 = api.SYD_NakedVerifyAll4NX(cert1,4, odata.getBytes(), nakedSign, dn);
api.importCert(cert1.getBytes(), null);
api.importCert(cert2.getBytes(), null);
System.out.println("验签结果:" + nakedVerify2 );
} catch (SydApiException e) {
throw e;
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
} finally {
api.disconnect();
}
}
public static void case2(){
SydApi4j.SYD_Set_Parameter_HA(ip1, ip2, port, 3000);
SydApi4j api = (SydApi4j) new SydApi4j();
try {
String sde = api.detachedSignAll(4, odata.getBytes(), dn);
System.out.println("SM2detach签名"+sde);
boolean bde = api.detachedVerifyAll(4, odata.getBytes(), sde);
System.out.println("SM2detach验签"+bde);
} finally {
api.disconnect();
}
}
public static void main(String[] args) {
System.out.println("载入配置文件 ./config.json");
String workDir = System.getProperty("user.dir");
Path filePath = Paths.get(workDir,"config.json");
String configStr = FileUtil.readString(filePath.toFile(), StandardCharsets.UTF_8);
JSONObject config = JSONUtil.parseObj(configStr);
ip1 = config.getStr("ip1");
ip2 = config.getStr("ip2");
port = config.getInt("port");
dn = config.getStr("dn");
System.out.println("ip1=" + ip1);
System.out.println("ip2=" + ip2);
System.out.println("port=" + port);
System.out.println("dn=" + dn);
System.out.println("载入配置完成");
System.out.println("开始持续交易, HA 模式,短链接模式");
while (true) {
try {
case1();
checkOK();
Thread.sleep(3000);
// case2();
// checkOK();
// Thread.sleep(3000);
} catch (Exception e) {
System.err.println("发生错误");
e.printStackTrace();
checkError();
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
throw new RuntimeException(ex);
}
}
}
}
}