调用CFCA安心签相关接口,很详细

文章详细介绍了调用CFCA安心签接口的流程,包括获取对接资料、添加IP白名单、查询接口文档、导入jar包、测试接口调用以及下载合同接口的特殊处理。此外,还提供了接口枚举类、配置类和返回结果码枚举类的定义,以及调用接口的工具类代码示例。

一、获取CFCA安心签对接资料

先找CFCA安心签对接人员要相关资料,包括接口文档
在这里插入图片描述

案例代码如下:
在这里插入图片描述
以及测试需要的相关文件,一般会一起给。

二、调用接口

1、找安心签的对接人加上ip白名单

这里提一嘴,安心签加白名单的速度比较慢,起码要一天,并且不能加ip网段,如果ip不是固定的,测试起来会比较难受,如果要调安心签的请记得一定要先让他们加好白名单。

2、查询接口文档

比如我要调用txCode为3001(个人开户接口)
在这里插入图片描述
查看如何传参

3、查看对应的测试案例

在安心签对接人员给的Demo中找到对应的测试案例
在这里插入图片描述

具体如下:

package cfca.trustsign.demo.test;

import cfca.sadk.algorithm.common.PKIException;
import cfca.trustsign.common.vo.cs.HeadVO;
import cfca.trustsign.common.vo.cs.PersonVO;
import cfca.trustsign.common.vo.request.tx3.Tx3001ReqVO;
import cfca.trustsign.demo.connector.HttpConnector;
import cfca.trustsign.demo.constant.Request;
import cfca.trustsign.demo.converter.JsonObjectMapper;
import cfca.trustsign.demo.util.SecurityUtil;
import cfca.trustsign.demo.util.TimeUtil;

public class Test3001 {
   
   
    public static void main(String[] args) throws PKIException {
   
   
        HttpConnector httpConnector = new HttpConnector();
        httpConnector.init();

        PersonVO person = PersonVO.builder().personName("刘三十jiu").identTypeCode("1").identNo("110102200001071156").mobilePhone("95010117774")
                .email("liu@cfca.com.cn").authenticationMode("公安部").build();
        // 监管平台注意:用户首次开户时会签发五年有效期证书,五年后如果证书过期会导致用户签名时交易失败,所以平台要注意证书的有效期。
        // 若五年到期后交易失败,平台可再次对用户进行实名认证并调用此接口完成证书更新操作。
        // 平台亦可自行记录开户时间,五年到期前90天内(安心签默认到期前90天内可更新证书),平台可再次对用户进行实名认证并调用此接口提前完成证书的展期操作,避免用户签章操作的不连续。
        person.setAuthenticationTime(TimeUtil.getCurrentTime(TimeUtil.FORMAT_14));

        Tx3001ReqVO tx3001ReqVO = new Tx3001ReqVO();
        tx3001ReqVO.setHead(HeadVO.builder().txTime(TimeUtil.getCurrentTime(TimeUtil.FORMAT_14)).build());
        tx3001ReqVO.setPerson(person);

        String req = new JsonObjectMapper().writeValueAsString(tx3001ReqVO);
        System.out.println("req:" + req);

        String txCode = "3001", signature = SecurityUtil.p7SignMessageDetach(HttpConnector.JKS_PATH, HttpConnector.JKS_PWD, HttpConnector.ALIAS, req);
        // String txCode = "3001", signature = SecurityUtil.p7SignMessageDetachSm2(HttpConnector.SCER_PATH, HttpConnector.SCER_PASS, HttpConnector.ALIAS, req);
        String res = httpConnector.post("platId/" + Request.PLAT_ID + "/txCode/" + txCode + "/transaction", req, signature);
        System.out.println("res:" + res);
    }
}

4、导入安心签相关jar包

安心签没有对应的maven依赖,需要将示例中的Demo中的jar包中添加到项目中,如果找对接人员要了多次Demo,则导入最新的jar包,因为旧的jar包可能缺少一些东西。

这是Demo中的jar包,不需要全部都导入,只需要导入调用接口用到的就可以了
在这里插入图片描述

主要是用到这个

5、测试调用接口

public void testTxCode3001() throws Exception {
   
   
    AnxinqianConfig anxinqianConfig = new AnxinqianConfig();
    anxinqianConfig.setJKS_PATH("你的JKS通讯证书文件绝对路径");
    anxinqianConfig.setJKS_PWD("你的通讯证书密码");
    anxinqianConfig.setALIAS("你制作通讯证书时的设置");
    anxinqianConfig.setPLAT_ID("你的安心签平台id");
    anxinqianConfig.setUrl("https://安心签ip:443/FEP/");

    anxinqianConfig.setTxCode(InterfCodeEnum.CODE_3001.getCode());

    Tx3001ReqVO tx3001ReqVO = new Tx3001ReqVO();

    HeadVO headVO = new HeadVO();
    headVO.setTxTime(DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_PATTERN));  //格式为yyyyMMddHHmmss

    PersonVO personVO = new PersonVO();
    personVO.setPersonName("你的名字");  //个人名称
    personVO.setIdentNo("你的身份证号码");  //证件号码
    personVO.setMobilePhone("你的手机号码");  //手机号码
    personVO.setAuthenticationMode("居民身份证");  //认证方式
    personVO.setIsOpenSM2(0); //是否开通国密证书,0:不开通;1:开通;默认为0

    tx3001ReqVO.setHead(headVO);
    tx3001ReqVO.setPerson(personVO);

    JSONObject responseJSONObject = AnxinqianUtil.sendRequest(anxinqianConfig, tx3001ReqVO);

    log.info("测试3001接口,返回结果:{}", responseJSONObject);
}

解释:

Tx3001ReqVO 类的全限类名cfca.trustsign.common.vo.request.tx3.Tx3001ReqVO
HeadVO类的全限类名cfca.trustsign.common.vo.cs.HeadVO
PersonVO类的全限类名cfca.trustsign.common.vo.cs.PersonVO
时间相关的类来自hutool工具包

调用成功后控制台打印是这样的:
在这里插入图片描述

返回结果格式化后是这样的:
在这里插入图片描述

如果没有白名单,调用接口会报超时的错误:
在这里插入图片描述
调用任何应该接口都会报这个错。

6、调用下载合同接口(这个特殊)

下载合同接口与其他txCode开头的接口不太一样,这个接口只返回一个byte数组,这里单独拿出来说,也写了专门下载合同的方法,下面是测试代码:

public void testDownload() throws Exception {
   
   
    AnxinqianConfig anxinqianConfig = new AnxinqianConfig();
    anxinqianConfig.setJKS_PATH("你的JKS通讯证书文件绝对路径"
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值