Преглед изворни кода

添加法大大SDK测试用例

chengpan пре 2 година
родитељ
комит
963af9a84f
2 измењених фајлова са 347 додато и 0 уклоњено
  1. 17 0
      ruoyi-system/pom.xml
  2. 330 0
      ruoyi-system/src/test/java/com/ruoyi/fadada/FadadaTest.java

+ 17 - 0
ruoyi-system/pom.xml

@@ -33,6 +33,23 @@
             <version>3.0.5</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.junit.vintage</groupId>
+                    <artifactId>junit-vintage-engine</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 330 - 0
ruoyi-system/src/test/java/com/ruoyi/fadada/FadadaTest.java

@@ -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());
+        }
+
+    }
+}