|
@@ -0,0 +1,330 @@
|
|
|
+package com.ruoyi.fadada;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.fadada.sdk.base.client.FddBaseClient;
|
|
|
+import com.fadada.sdk.base.model.req.*;
|
|
|
+import com.fadada.sdk.verify.client.FddVerifyClient;
|
|
|
+import com.fadada.sdk.verify.model.req.*;
|
|
|
+import com.ruoyi.common.utils.DateUtils;
|
|
|
+import org.apache.commons.codec.binary.Base64;
|
|
|
+import org.junit.After;
|
|
|
+import org.junit.Before;
|
|
|
+import org.junit.Test;
|
|
|
+import org.springframework.util.Assert;
|
|
|
+
|
|
|
+import java.io.*;
|
|
|
+import java.net.URLDecoder;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 法大大SDK测试用例
|
|
|
+ * @author ChengPan
|
|
|
+ * @date 2022-9-26
|
|
|
+ */
|
|
|
+public class FadadaTest {
|
|
|
+ private static String APPID = "402839";
|
|
|
+ private static String APPKEY = "spiGK8efKjeFoyXjm0ht7O9S";
|
|
|
+ private static String V = "2.0";
|
|
|
+ private static String HOST = "https://testapi.fadada.com:8443/api/";
|
|
|
+
|
|
|
+ public static final String openId = "UUID12345612313"; // openId
|
|
|
+
|
|
|
+ private String customerId = "6D26DB37066243C2C9FA90DE7236738B"; // 客户编号
|
|
|
+ private String transactionNo = "544b4922688b4042953c4bac65b8a633"; // 交易号(需要保存,用于证书申请和实名认证查询)
|
|
|
+ // 公司信息
|
|
|
+ private String companyName = ""; // 公司名称
|
|
|
+ private String creditNo = ""; // 统一社会信用代码
|
|
|
+ // 法人信息
|
|
|
+ private String legalName = ""; // 法人姓名
|
|
|
+ private String legalId = ""; // 法人证件号
|
|
|
+ private String legalMobile = ""; // 法人手机号(仅支持国内运营商)
|
|
|
+ private String legalBankCardNo = ""; // 法人银行卡号
|
|
|
+ //代理人信息
|
|
|
+ private String agentName = ""; // 代理人姓名
|
|
|
+ private String agentId = ""; // 代理人证件号
|
|
|
+ private String agentMobile = ""; // 代理人手机号(仅支持国内运营商)
|
|
|
+ private String agentBankCardNo = ""; // 代理人银行卡号
|
|
|
+ private StringBuffer response = new StringBuffer("==================Welcome ^_^ ==================");
|
|
|
+ private String timeStamp = DateUtils.dateTimeNow("yyyyMMddHHmmssSSS");
|
|
|
+
|
|
|
+ @Before
|
|
|
+ public void before() {
|
|
|
+ response.append("\n").append("平台方自定义唯一标识:").append(openId);
|
|
|
+ response.append("\n").append("客户编号:").append(customerId);
|
|
|
+ response.append("\n").append("交易号:").append(transactionNo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void applyAuthCompanyLegal() {
|
|
|
+ regAccount(); // 1、注册账号
|
|
|
+ getAuthCompanyUrl(); // 2 获取企业实名认证地址
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void applyCertTest() {
|
|
|
+ applyCert(); // 3、实名证书申请
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void addSignatureTest() {
|
|
|
+ addSignature(); // 4 印章上传
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void uploadTemplateTest() {
|
|
|
+ uploadTemplate(); // 5 模板上传
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void generateContractTest() {
|
|
|
+ generateContract(); // 6 模板填充
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void extsignTest() {
|
|
|
+ extsign(); // 7 手动签署
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.1 注册账号
|
|
|
+ */
|
|
|
+ public void regAccount() {
|
|
|
+ response.append("\n").append("【4.1 注册账号】");
|
|
|
+ FddBaseClient baseClient = new FddBaseClient(APPID, APPKEY, V, HOST);
|
|
|
+ RegisterAccountParams params = new RegisterAccountParams();
|
|
|
+ params.setAccountType("2"); //账号类型1个人 2企业
|
|
|
+ params.setOpenId(openId); //平台方自定义唯一标识
|
|
|
+ String result = baseClient.invokeRegisterAccount(params);
|
|
|
+ response.append("\n--").append(result);
|
|
|
+ if (1 == JSON.parseObject(result).getInteger("code")) {
|
|
|
+ customerId = JSON.parseObject(result).getString("data");
|
|
|
+ response.append("\n").append("----获取customerId:").append(customerId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.2 获取企业实名认证地址
|
|
|
+ */
|
|
|
+ public void getAuthCompanyUrl() {
|
|
|
+ response.append("\n").append("【4.3 获取企业实名认证地址】");
|
|
|
+ FddVerifyClient client = new FddVerifyClient(APPID, APPKEY, V, HOST);
|
|
|
+ CompanyVerifyUrlParams params = new CompanyVerifyUrlParams();
|
|
|
+ Assert.hasText(customerId, "填入注册企业账户时返回的客户编号");
|
|
|
+ params.setCustomerId(customerId);
|
|
|
+ params.setPageModify("1");//1允许 2不允许 默认为1//以下是非必填参数
|
|
|
+ params.setVerifiedWay("");//实名认证套餐类型: 0:标准方案(对公打款+纸质审核+法人身份+法人授权);1:对公打款;2:纸质审核;3:法人身份(授权)认证
|
|
|
+ params.setMVerifiedWay("");//管理员认证套餐类型: 0:三要素标准方案; 1:三要素补充方案; 2:四要素标准方案; 3:四要素补充方案; 4:纯三要素方案; 5:纯四要素方案;
|
|
|
+ params.setLegalAllowCompanyVerifyWay("");//指定管理员为"法人"身份下,允许的认证方式∶1.法人身份认证; 2.对公打款认证; 3.纸质材料认证;
|
|
|
+ params.setAgentAllowCompanyVerifyWay("");//指定管理员为"代理人"身份下,允许的认证方式∶1.法人授权认证; 2.对公打款认证; 3.纸质材料认证;可同时传入多个值,如"1,2“,表示代理身份下,只允许"法人授权认证"及"对公打款认证"方式,页面隐藏纸质材料认证"方式;传入空值时,表示允许所有认证方式;
|
|
|
+ params.setIdPhotoOptional("");//0-只需要头像面 1-头像面与国徽面都需要 2-都不需要 默认为0
|
|
|
+ //公司信息
|
|
|
+ CompanyVerifyUrlParams.CompanyInfo companyInfo = new CompanyVerifyUrlParams.CompanyInfo();
|
|
|
+ companyInfo.setCompanyName(companyName);
|
|
|
+ companyInfo.setCreditNo(creditNo);
|
|
|
+ companyInfo.setCreditImagePath("");
|
|
|
+ params.setCompanyInfo(null);
|
|
|
+ params.setCompanyPrincipalType("");//1.法人,2代理人
|
|
|
+ //法人信息
|
|
|
+ CompanyVerifyUrlParams.LegalInfo legalInfo = new CompanyVerifyUrlParams.LegalInfo();
|
|
|
+ legalInfo.setLegalName(legalName);
|
|
|
+ legalInfo.setLegalId(legalId);
|
|
|
+ legalInfo.setLegalMobile(legalMobile);
|
|
|
+ legalInfo.setLegalIdFrontPath("");
|
|
|
+ legalInfo.setLegalIdBackPath("");
|
|
|
+ legalInfo.setBankCardNo(legalBankCardNo);
|
|
|
+ params.setLegalInfo(null);
|
|
|
+ params.setLegalIdFrontImg(null);
|
|
|
+ //代理人信息
|
|
|
+ CompanyVerifyUrlParams.AgentInfo agentInfo = new CompanyVerifyUrlParams.AgentInfo();
|
|
|
+ agentInfo.setAgentName(agentName);
|
|
|
+ agentInfo.setAgentId(agentId);
|
|
|
+ agentInfo.setAgentMobile(agentMobile);
|
|
|
+ agentInfo.setAgentIdFrontPath("");
|
|
|
+ agentInfo.setAgentIdBackPath("");
|
|
|
+ agentInfo.setBankCardNo(agentBankCardNo);
|
|
|
+ params.setAgentInfo(null);
|
|
|
+ params.setAgentIdFrontImg(null);
|
|
|
+ params.setCreditImage(null);
|
|
|
+ //银行卡信息
|
|
|
+ CompanyVerifyUrlParams.BankInfo bankInfo = new CompanyVerifyUrlParams.BankInfo();
|
|
|
+ bankInfo.setBankName("招商银行");
|
|
|
+ bankInfo.setBankId("");
|
|
|
+ bankInfo.setSubbranchName("");
|
|
|
+ params.setBankInfo(null);
|
|
|
+ params.setBankProvinceName("");
|
|
|
+ params.setBankCityName("");
|
|
|
+ params.setCertFlag("1");//是否认证成功后自动申请实名证书 参数值为“0”:不申请,参数值为“1”:自动申请
|
|
|
+ params.setOption("");//add(新增)modify(修改)不传默认add
|
|
|
+ params.setVerifiedSerialNo("");//管理员认证流水号
|
|
|
+ params.setAuthorizationFile(null);//企业注册申请表
|
|
|
+ params.setLegalName("");//法人姓名(代理人认证想要传法人姓名可用此参数)
|
|
|
+ params.setMobile("");//法人/代理人/个人手机号
|
|
|
+ params.setLegalAuthorizedMobile("");//法人授权手机号,当接口中传入了“法人授权手机号”字段时,页面中选择法人授权认证时,会将传入的手机号展示出来
|
|
|
+ params.setLang("");//zh:中文,en:英文默认:中文
|
|
|
+ params.setOrganization_type("");//0:企业;1:政府/事业单位;2:其他组织;3:个体工商户
|
|
|
+ params.setReturnUrl("");
|
|
|
+ params.setNotifyUrl("");
|
|
|
+ String result = client.invokeCompanyVerifyUrl(params);
|
|
|
+ response.append("\n--").append(result);
|
|
|
+ Integer code = JSON.parseObject(result).getInteger("code");
|
|
|
+ if (1 == code) {
|
|
|
+ transactionNo = JSON.parseObject(result).getJSONObject("data").getString("transactionNo"); // 交易号
|
|
|
+ response.append("\n").append("----获取交易号transactionNo:").append(transactionNo);
|
|
|
+ String url = JSON.parseObject(result).getJSONObject("data").getString("url"); // 地址(需要保存,遇到中途退出认证或页面过期等情况可重新访问)
|
|
|
+ String sginUrl = decode(url);
|
|
|
+ response.append("\n").append("----获取授权地址:").append(sginUrl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.4 实名证书申请
|
|
|
+ */
|
|
|
+ public void applyCert() {
|
|
|
+ response.append("\n").append("【4.4 实名证书申请】");
|
|
|
+ FddVerifyClient client = new FddVerifyClient(APPID, APPKEY, V, HOST);
|
|
|
+ ApplyCertParams params = new ApplyCertParams();
|
|
|
+ Assert.hasText(customerId, "客户编号不能为空");
|
|
|
+ params.setCustomerId(customerId); //客户编号
|
|
|
+ Assert.hasText(transactionNo, "实名认证序列号不能为空");
|
|
|
+ params.setVerifiedSerialNo(transactionNo); // verified_serialno认证序列号就是获取实名认证地址返回的交易号transactionNo
|
|
|
+ String result = client.invokeApplyCert(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.5 印章上传
|
|
|
+ */
|
|
|
+ public void addSignature() {
|
|
|
+ response.append("\n").append("【4.5 印章上传】");
|
|
|
+ FddBaseClient baseClient = new FddBaseClient(APPID, APPKEY, V, HOST);
|
|
|
+ AddSignatureParams params = new AddSignatureParams();
|
|
|
+ params.setCustomerId(customerId); //客户编号
|
|
|
+ //下面章图片base64、签章图片、图片公网地址三选一
|
|
|
+ //params.setSignatureImgBase64(""); //签章图片base64
|
|
|
+ params.setFile(new File("E:/optData/image/signature.png")); //签章图片
|
|
|
+ //params.setImgUrl(""); //签章图片公网地址
|
|
|
+ String result = baseClient.invokeAddSignature(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.8 模板上传
|
|
|
+ */
|
|
|
+ public void uploadTemplate() {
|
|
|
+ response.append("\n").append("【4.8 模板上传】");
|
|
|
+ FddBaseClient baseClient = new FddBaseClient(APPID, APPKEY, V, HOST);
|
|
|
+ UploadTemplateParams params = new UploadTemplateParams();
|
|
|
+ params.setTemplateId("UUID" + timeStamp); // 平台自定义唯一模板编号
|
|
|
+ //下列PDF模板和文档地址二选一
|
|
|
+ params.setFile(new File("E:/optData/template/掌览天下测试.pdf")); // PDF模板
|
|
|
+ //params.setDocUrl(""); // 文档地址
|
|
|
+ String result = baseClient.invokeUploadTemplate(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.9 模板填充
|
|
|
+ */
|
|
|
+ public void generateContract() {
|
|
|
+ response.append("\n").append("【4.9 模板填充】");
|
|
|
+ //模板编号
|
|
|
+ String TEMPLATEID = "UUID20220926173659117";
|
|
|
+ FddBaseClient baseClient = new FddBaseClient(APPID, APPKEY, V, HOST);
|
|
|
+ GenerateContractParams params = new GenerateContractParams();
|
|
|
+ params.setTemplateId(TEMPLATEID); //模板编号
|
|
|
+ params.setContractId("HTBH001"); //合同编号
|
|
|
+ //以下是非必填参数
|
|
|
+ params.setDocTitle(""); // 文档标题
|
|
|
+ params.setFontSize(""); //字体大小
|
|
|
+ params.setFontType(""); //字体类型
|
|
|
+ params.setParameterMap(getparamter()); //填充内容,json字符串
|
|
|
+ // 在版本号设置为 2.1 时,实现了对填充内容和动态表单进行3DES加密
|
|
|
+ baseClient.setVersion("2.1");
|
|
|
+ String result = baseClient.invokeGenerateContract(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构造填充内容ParameterMap示例
|
|
|
+ private String getparamter() {
|
|
|
+ JSONObject paramter = new JSONObject();
|
|
|
+ paramter.put("policyNo", "POLICYNO_0001");
|
|
|
+ paramter.put("tendereeNm", "DBR001");
|
|
|
+ paramter.put("projectNm", "PJ_NM001");
|
|
|
+ paramter.put("companyNm", "CP_0001");
|
|
|
+ paramter.put("loanAmt", "壹万叁仟");
|
|
|
+ paramter.put("year", "2022");
|
|
|
+ paramter.put("month", "09");
|
|
|
+ paramter.put("day", "26");
|
|
|
+ return paramter.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.11 手动签署
|
|
|
+ */
|
|
|
+ public void extsign() {
|
|
|
+ response.append("\n").append("【4.11 手动签署】");
|
|
|
+ FddBaseClient client = new FddBaseClient(APPID, APPKEY, V, HOST);
|
|
|
+ ExtSignParams params = new ExtSignParams();
|
|
|
+ params.setTransactionId("544b4922688b4042953c4bac65b8a633");//平台自定义唯一交易号
|
|
|
+ params.setContractId("HTBH001");//此处传入调用上传或填充合同接口成功时定义的合同编号
|
|
|
+ params.setCustomerId(customerId);//此处传入认证成功后成功申请证书的客户编号
|
|
|
+ params.setDocTitle("保函证书");
|
|
|
+ /*params.setPositionType("0");//0-关键字(默认)1-坐标
|
|
|
+ params.setSignKeyword("法定代表人");
|
|
|
+ params.setKeywordStrategy("2");//0-所有关键字签章 (默认) 1-第一个关键字签章 2-最后一个关键字签章*/
|
|
|
+ String result = client.invokeExtSign(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 4.16 查询企业实名认证信息
|
|
|
+ */
|
|
|
+ public void findCompanyCertInfo() {
|
|
|
+ response.append("\n").append("【4.16 查询企业实名认证信息】");
|
|
|
+ FddVerifyClient client = new FddVerifyClient(APPID, APPKEY, V, HOST);
|
|
|
+ FindCompanyCertParams params = new FindCompanyCertParams();
|
|
|
+ params.setVerifiedSerialNo(transactionNo);//此处填获取企业实名认证地址返回的交易号
|
|
|
+ String result = client.invokeFindCompanyCert(params);
|
|
|
+ response.append("\n").append(result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @After
|
|
|
+ public void after() {
|
|
|
+ System.out.println(response);
|
|
|
+ writeStringToText(response.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Base64解密
|
|
|
+ * @param bizContent
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String decode(String bizContent) {
|
|
|
+ try {
|
|
|
+ bizContent = URLDecoder.decode(bizContent, "utf-8");
|
|
|
+ bizContent = new String(Base64.decodeBase64(bizContent.getBytes()));
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return bizContent;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将请求结果写入文件中,方便后期查看
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ */
|
|
|
+ public void writeStringToText(String context) {
|
|
|
+ String filePath = "E:/optData/logs/" + timeStamp + ".txt";
|
|
|
+ try {
|
|
|
+ PrintWriter pw = new PrintWriter(new FileWriter(filePath));
|
|
|
+ pw.println(context);
|
|
|
+ pw.close();
|
|
|
+ } catch (IOException e) {
|
|
|
+ System.err.println("writeStringToText ERROR :" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|