开放平台

            手机端图

            开放平台

            帮助开发者快速了解天威诚信服务流程和调用规则

            业务文档

            实名服务接口说明

            1. 概述

            前提条件:第三方应用在天威诚信电子认证云服务平台(简称天威云)进行应用注册,获得应用标识和应用密钥。 异常相应结果参数及格式如下: status:状态码,1表示成功; 0表示失败; message:对调用失败原因的描述;

            2. 前提条件

            第三方应用在天威诚信电子认证云服务平台进行应用注册,获得应用标识和应用密钥。

            3. 通用约束

            ● 所有请求内容类型默认使用application/x-www-form-urlencoded; ● 所有涉及到编码的环节一律采用UTF-8(例如URLEncoding、String转byte[]等); ● 当接口参数为二进制字节数组时,一律Base64编码后再传递; ● 所有图片数据限制在2M以内;

            4 安全性设计

            通讯安全 采用SSL安全连接,防止信息篡改、中间人窃听和重放攻击; ● 访问安全 请求中请求方必须带Content-Signature签名值,签名的内容为请求参数,签名密钥为应用密钥,确保信息的不被篡改。

            代码示例:

                org.eclipse.jetty.client.api.Request request = jettyhttpclient.POST(url)

                .header("Content-Signature", "HMAC-SHA1 " + signature)

                .content(new BytesContentProvider(byterequest), "application/json;charset=UTF-8");

                    

            HttpUtil类文件下载

             

            5. 服务接口定义

            5.1 个人实名认证

            个人实名失败特殊事项说明:

            一、传入的身份证号有误,或者有空格等;

            二、个人实名次数一天内超过10次(为保护个人信息,限制24小时同一个用户只能实名10次,防止试探用户身份信息)

            三、如核实身份号传入没问题,可能的原因有 (1)做过户口迁移,新迁入的户籍信息,系统数据尚未更新; (2)现役军人, 系统没有存储军人信息; (3)刚退役的军人,新办理的户口及身份证还未更新到系统; (4)刚上大学或者刚毕业的大学生,迁移了户口,信息还未更新。 (5)身份证过期未办理,或新办理的身份证数据库还未更新。 (6)不实的身份证信息

            身份证信息更新滞后是由于各个地方公安同步数据的时间问题,一直没有更新到中心,因为同步的环节较多,是县---->市---->省---->部里--→中心

            关于港澳台同胞身份的认证建议灵活处理,比如如果在内地有办理手机号,那么可以采用手机三要素;有办理内地银行卡可以采用银行卡四要素等

            5.1.1 个人实名综合申请接口

            名称

            内容

            接口说明

            个人实名身份认证,根据认证方式分配一个服务编码(serviceCode)

            详见不同认证方式传参要求

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            selfUrl

            String

            可选

            人像照片网络地址

            selfImg

            String

            可选

            人像照片base64编码串

            bankcard

            String

            必选

            银行卡号

            mobile

            String

            必选

            手机号

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ;1:是,将留存照片 ; 0:否

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            备注:



            1.selfUrl与selfImg必须二选一,当它们同时存在时,优先使用selfImg。

            2.当验证手机号三要素时,手机号必选;

            3.当验证银行三四要素时,银行卡号必选。

             

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            confidence

            Float

            可信度,最大为1(仅限身份证人像核验返回)

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            x

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 个人实名认证综合接口

                public static void idenAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = null;

                    String bankcard = "null;

                    String mobile = "null;

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("bankcard", bankcard);

                    params.put("mobile", mobile);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1

                            .getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

             

                public static void main(String[] args) throws Exception {

                    idenAuth();//个人实名认证综合接口

                }

            }            

            正常返回示例:

             

            xxxxxxxxxx

            {

                "message": "二要素比对成功。",

                "status": "1",

                "orderNumber": "YYCSidc201810291455302175022"

            }          

            5.1.1.1 身份证简项

            名称

            内容

            接口说明

            提交姓名、身份证号,与公安身份证信息比对。

            接口说明

            统一调用个人实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 个人实名认证综合接口——身份证简项认证方式

                public static void idenAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = null;

                    String bankcard = null;

                    String mobile = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1

                            .getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

            }            

            正常返回示例:

             

            xxxxxxxxxx

            {

                "message": "二要素比对成功。",

                "status": "1",

                "orderNumber": "YYCSidc201810291455302175022",

            }          

            错误返回示例:

            xxxxxxxxxx

            {

                "status": 100002,

                "message": "提交的参数不完整或格式不正确"

            }          

             

            5.1.1.2 身份证人像核验

            名称

            内容

            接口说明

            提交姓名、身份证号、人像照片,与公安身份证信息以及预留人像比对。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            selfUrl

            String

            可选

            人像照片网络地址

            selfImg

            String

            可选

            人像照片base64编码串(图片大小限制2M以内)

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ,1:是 , 0:否

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            confidence

            String

            可信度,最大为100%

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test { // 个人实名认证综合接口——身份证人像核验方式

                public static void portraitAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = "/9j/4AAQSkZJRgABAQEASABIA******";

                    String bankcard = null;

                    String mobile = null;

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("selfImg", selfImg);

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1

                            .getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

            }                           

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "confidence":93.0%,

                "message":"人像比对成功",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":103013,

                "confidence":3.0%,

                "message": "相似度比对未通过",

                "orderNumber": " idc2020011414265759110**"

            }

            5.1.1.3 银行卡三要素

            名称

            内容

            认证说明

            提交姓名、身份证号、银行卡号,与在银行开户时预留的信息比对。

            接口说明

            统一调用个人实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            bankcard

            String

            必选

            银行卡号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                //  个人实名认证综合接口——银行卡三要素认证方式

                public static void bankAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = null;

                    String bankcard = "6227******";

                    String mobile = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("bankcard", bankcard);

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

            }            

                              

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"银行卡比对成功",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message": "提交的参数不完整或格式不正确"

            }

            5.1.1.4 银行卡四要素

            名称

            内容

            认证说明

            提交姓名、身份证号、银行卡号、手机号,与在银行开户时预留的信息比对。

            接口说明

            统一调用个人实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            bankcard

            String

            必选

            银行卡号

            mobile

            String

            必选

            手机号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                //  个人实名认证综合接口——银行卡四要素认证方式

                public static void banksAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = null;

                    String bankcard = "6227******";

                    String mobile = "1531******";

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("bankcard", bankcard);

                    params.put("mobile", mobile);

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

            }            

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"银行卡比对成功",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message":"提交的参数不完整或格式不正确"

            }

            5.1.1.5银行卡五要素

            名称

            内容

            认证说明

            提交姓名、身份证号、银行卡号、手机号、账户类型,与在银行开户时预留的信息比对。

            接口说明

            本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/bankCardFiveElements

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/bankCardFiveElements...

            请求方法

            GET/POST

            应答格式

            JSON

            请求头参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            bankcard

            String

            必选

            银行卡号

            mobile

            String

            必选

            手机号

            accountType

            String

            必选

            账户类型:固定值1

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            请求参数:

            名称

            类型

            约束

            描述

            key

            String

            必选

            密钥

            realname

            String

            必选

            姓名

            idcard

            String

            必选

            身份证号

            bankcard

            String

            必选

            银行卡号

            mobile

            String

            必选

            手机号

            accountType

            String

            必选

            账户类型,取值[1,2,3];1类账户,2类账户,3类账户(目前只支持1类)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                //银行卡五要素认证

                public static void bankCardFiveAuth() throws Exception {

             

                    String appId = APP_ID;

                    //产品编码

                    String serviceCode = "idc0009";

                    //姓名

                    String name = "李**";

                    //身份证号

                    String idCard = "411503********8739";

                    //银行卡号

                    String bankcard = "622588****098754";

                    //手机号

                    String mobile = "153****2145";

                    //账户类型

                    String accountType = "1";

             

                    Map<String, Object> params = new HashMap<String, Object>(8);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("idCard", idCard);

                    params.put("name", name);

                    params.put("accountType", accountType);

                    params.put("bankcard", bankcard);

                    params.put("mobile", mobile);

             

                    Map<String, String> headers = new HashMap<>(8);

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonBankCardFiveAuth(params), SECRET_KEY)));

             

                    String response = HttpUtil.doPost(URL + "/person/bankCardFiveElements", params, headers);

                    System.out.println(response);

                }

             

                //必须按照以下顺序依次获取map键所对应的值

                private static String getPersonBankCardFiveAuth(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode") + params.get("name") + params.get("idCard") + params.get("bankcard") + params.get("mobile") + params.get("accountType");

                    System.out.println(ss);

                    return ss;

                }

            }  

             

            正确返回示例:

             

            xxxxxxxxxx

            {

                "orderNumber":"idc202104231941283113028",

                "message":"不匹配",

                "status":106010

            }

             

            5.1.1.6手机号三要素

            名称

            内容

            认证说明

            提交姓名、身份证号、手机号,与在运营商开户留的信息比对。

            接口说明

            统一调用个人实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            mobile

            String

            必选

            手机号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

                 import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

             

                //  个人实名认证综合接口——手机号三要素认证方式

                public static void idenAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String selfUrl = null;

                    String selfImg = null;

                    String bankcard = null;

                    String mobile = "138******";

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("mobile", mobile);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idCard + selfUrl + selfImg + bankcard + mobile, SECRET_KEY)));

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/person/authIden", params, headers);

                    System.out.println(response);

                }

            }      

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"手机三要素比对成功",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message": "提交的参数不完整或格式不正确"

            }

             

            5.1.1.7银行卡四要素(境外)

            名称

            内容

            认证说明

            通过传递姓名+身份证号码+手机号+银行卡卡号+证件类型,校验信息是否一致

            接口说明

            更具用户提供信息,校验信息是否一致

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/bankCardFourElementsOverseas

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/bankCardFourElementsOverseas

            请求方法

            POST /JSON

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            mobile

            String

            必选

            手机号

            idtype

            String

            必选

            证件类型 (01-身份证/ 02-护照 /03-港澳证 04-台胞证 /11-回乡证)

            bankcard

            String

            必选

            银行卡号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

             

                public static void idenAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String name = "张三";

                    String idCard = "2******";

                    String bankcard = 62 ***1;

                    String mobile = "138******";

                    String idtype = "01";

             

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("mobile", mobile);

                    params.put("idtype", idtype);

                    String jsonBody = JSON.toJSONString(params);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("appId", appId);

                    headers.put("serviceCode", serviceCode);

             

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(jsonBody, SECRET_KEY + serviceCode)));

                    String response = HttpUtil.doPostJson("http://******:**/apigate/authapi" + "/person/bankCardFourElementsOverseas", jsonBody, headers);

                    System.out.println(response);

                }

            }        

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"银行卡四要素(境外)比对成功",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "orderNumber": "idc202111291732133298236",

                "message": "认证信息不匹配,与银行卡预留信息不一致",

                "status": 108010

            }

            5.1.2 H5数读活体人脸验证接口

            名称

            内容

            接口说明

            分两步调用:

            1、获取验证数读活体检测时所需要读的数字

            2、根据录制上传的视频进行活体人脸比对(视频录制时长:2~5s)

            请求地址

            生产环境: 【H5获取唇语数字】https://open.itruscloud.com/apigate/authapi/h5/getlips

            测试环境: 【H5获取唇语数字】https://demo-open.itruscloud.com/apigate/authapi/h5/getlips


            生产环境: 【H5活体人脸验证】https://open.itruscloud.com/apigate/authapi/h5/bodyFaceCheck

            测试环境: 【H5活体人脸验证】https://demo-open.itruscloud.com/apigate/authapi/h5/bodyFaceCheck

            请求方法

            GET/POST

            应答格式

            JSON

            【H5获取唇语数字】

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idnumber

            String

            必选

            身份证号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ;1:是,将留存照片 ; 0:否

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            lips

            String

            需要读的数字

            orderNo

            String

            获取唇语数字单号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

             

                //H5获取唇语

                public static void h5Auth() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc2008";

                    String name = "晶";

                    String idnumber = "612429199001121316";

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idnumber", idnumber);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idnumber, SECRET_KEY)));

                    String response = HttpUtil.doPost(URL + "/h5/getlips", params, headers);

             

                    System.out.println(response);

                }

            }   

            正常返回示例:

             

            xxxxxxxxxx

            {

                "status": 1,

                "message": "成功",

                "lips": "3520",

                "orderNo": "idc2019032810453803858**"

            }        

                                

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status": 100005,

                "message": "服务密钥错误"

            }        

                                

             

            【H5活体人脸验证】

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            name

            String

            必选

            姓名

            idnumber

            String

            必选

            身份证号

            orderNo

            String

            必选

            获取唇语数字单号

            saveFlag

            String

            可选

            是否保存图片标识 ,1:是 , 0:否

            videoFile

            String

            必选

            录制的视频(需传base64)视频大小限制:3M以内

            备注:



            当活体人脸比对是数读时,serviceCode字段填写获取唇语接口中的此字段;orderNo字段是在获取唇语时返回的。

            返回值:

            名称

            类型

            描述

            status

            int

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            confidence

            Float

            相似度比对结果(75以上为通过)

            orderNo

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

             

                //H5活体校验

                public static void h5portraitAuth() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc2009";

                    String name = "兴";

                    String idnumber = "131024198801150912";

                    String orderNo = "";

                    String videoFile = Img2Base64Util.getImgStr("d:\\a93cf6abdb2387bbeeafe05886909560.mp4");

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idnumber", idnumber);

                    params.put("orderNo", orderNo);

                    params.put("videoFile", videoFile);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idnumber + orderNo + videoFile, SECRET_KEY)));

                    String response = HttpUtil.doPost(URL + "/h5/bodyFaceCheck", params, headers);

                    System.out.println(response);

                }

            }   

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"校验成功",

                "confidence":"75.0",

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":2,

                "message":"相似度太低",

                "confidence":"0.0",

                "orderNumber":"idc2020011510035834260**"

            }

            5.1.3 H5静默/活体人脸验证接口

            名称

            内容

            接口说明

            根据录制上传的视频进行活体人脸比对(视频录制时长:3~5s)

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/h5/bodyFaceCheck

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/h5/bodyFaceCheck

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            name

            String

            必选

            姓名

            idnumber

            String

            必选

            身份证号

            videoFile

            String

            必选

            录制的视频(需传base64)视频大小限制:3M以内

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ;1:是,将留存照片 ; 0:否

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            confidence

            Float

            相似度比对结果(75以上为通过)

            orderNo

            String

            业务流水号

            faceImage

            String

            通过时返回 base64编码人脸裁剪图片

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                //H5活体校验  

                public static void h5portraitAuth() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc2009";

                    String name = "兴";

                    String idnumber = "131024198801150912";

                    String orderNo = "";

                    String videoFile = Img2Base64Util.getImgStr("d:\\a93cf6abdb2387bbeeafe05886909560.mp4");

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idnumber", idnumber);

                    params.put("orderNo", orderNo);

                    params.put("videoFile", videoFile);

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + name + idnumber + orderNo + videoFile, SECRET_KEY)));

                    String response = HttpUtil.doPost(URL + "/h5/bodyFaceCheck", params, headers);

                    System.out.println(response);

                }

            }

            正常返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"校验成功",

                "confidence":"75.0",

                "orderNo":"idc2020011414265759110**",

                "faceImage":"base64编码图片"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":2,

                "message":"相似度太低",

                "confidence":"0.0",

                "orderNo":"idc2020011414265759110**"

            }

            5.1.4身份证OCR-API

            名称

            内容

            接口说明

            根据上传身份证正面、反面照片获取身份证具体信息。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/image/ocrCheck

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/image/ocrCheck

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            base64File

            String

            必选

            图片的base64格式字符串 (图片限制大小3M以内)

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权,1:是 , 0:否

            返回值:

            名称

            类型

            描述

            status

            int

            1:成功 2:身份证OCR验证失败,其他:详见“错误码”的描述

            message

            String

            接口执行结果信息

            info

            String

            获具体信息【JSON格式字符串】见下

            orderNo

            String

            业务流水号

            【JSON格式字符串】

            info具体返回信息格式

             

            xxxxxxxxxx

            身份证正面:

            {

               "number":"身份证号",

               "address":"地址",

               "gender":"性别",

               "month":"出生月",

               "nation":"民族",

               "year":"出生年",

               "name":"姓名",

               "day":"出生日"

            }

            身份证反面:

            {

               "authority":"签发机关",

               "timelimit":"身份证有效期"

            }

            正常调用示例:

             

            xxxxxxxxxx

            public class OcrTest {

             

                private static final String URL = "http://open.itruscloud.com/apigate";

                private static final String APP_ID = "488**********41";

                private static final String SECRET_KEY = "e1fa6e*******************20214f9";

             

                //身份证ocr验证--正面

                public static void idCardFort() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc1004";

                    String base64File = Img2Base64Util.getImgStr("D:\\img\\wxh.png");

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("base64File", base64File);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

             

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/authapi/image/ocrCheck", params, headers);

             

                    System.out.println(response);

                }

             

                //身份证ocr验证--反面

                public static void idCardBank() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc1004";

                    String base64File = Img2Base64Util.getImgStr("D:\\img\\yt1.jpg");

             

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("base64File", base64File);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

             

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/authapi/image/ocrCheck", params, headers);

             

                    System.out.println(response);

                }

            }

            正常返回示例:

             

            xxxxxxxxxx

            身份证正面:

            {

              "orderNo":"idc201907171019104122154",

              "message":"身份证OCR验证成功",

              "status":1,

              "info":"{"number":"36233***********3094","address":"江西省上饶市鄱阳县谢家滩镇陈七村009号","gender":"男","month":"6","nation":"汉","year":"1996","name":"陈**","day":"5"}"

            }

            身份证反面:

            {

              "orderNo":"idc201907171021433926475",

              "message":"身份证OCR验证成功",

              "status":1,

              "info":"{"authority":"上海市公安局闵行分局","timelimit":"20060307-20260307"}"

            }

            5.1.5银行卡OCR-API

            名称

            内容

            接口说明

            根据上传身份证正面、反面照片获取身份证具体信息。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/image/bankcardCheck

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/image/bankcardCheck

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            base64File

            String

            必选

            图片的base64格式字符串 (图片限制大小3M以内)

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权,1:是 , 0:否

            返回值:

            名称

            类型

            描述

            status

            int

            1:成功 2:银行卡OCR验证失败,其他:详见“错误码”的描述

            message

            String

            接口执行结果信息

            info

            String

            获具体信息(JSON格式字符串)见下

            orderNo

            String

            业务流水号

            【JSON格式字符串】

            info具体返回信息格式

             

            xxxxxxxxxx

            {

                "bank_identification_number": "发卡行标识代码",

                "card_number": "银行卡号",

                "bank_name": "发卡行名称",

                "card_name": "卡片名称",

                "card_type": "卡片类型(注:支持借记卡,贷记卡,准贷记卡及预付费卡类型的 识别)"

            }

            正常调用示例:

             

            xxxxxxxxxx

            public class OcrTest {

                private static final String URL = "http://open.itruscloud.com/apigate";

                private static final String APP_ID = "488**********41";

                private static final String SECRET_KEY = "e1fa6e*******************20214f9";

             

                //银行卡ocr验证

                public static void bankCard() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc1005";

                    String base64File = Img2Base64Util.getImgStr("D:\\img\\gs.jpg");

             

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("base64File", base64File);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

             

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/authapi/image/bankcardCheck", params, headers);

                    System.out.println(response);

             

                }

            }                  

            正常返回示例:

             

            xxxxxxxxxx

            {

                "orderNo": "idc201907171022497041720",

                "message": "银行卡OCR验证成功",

                "status": 1,

                "info": "{"bank_identification_number":"01030000","card_number":"9559980210373015416","bank_name":"农业银行","card_name":"借记卡(银联卡)","card_type":"借记卡"}"

            }

                                        

            5.1.6人脸比对-API

            名称

            内容

            认证说明

            提交两张通过接口上传的人脸照片进行比对,通过相似度判断是否为同一个人

            接口说明

            人脸比对接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/image/personFace

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/image/personFace

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            selfieImgUrl

            String

            可选

            人像照片网络地址1

            selfieImg

            String

            可选

            人像照片base64编码串1

            faceImgUrl

            String

            可选

            人像照片网络地址2

            faceImg

            String

            可选

            人像照片base64编码串2

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权,1:是 , 0:否

            备注:



            selfieUrl与selfieImg必须二选一,当它们同时存在时,优先使用selfieImg;faceImgUrl与faceImg必须二选一,当它们同时存在时,优先使用faceImg。

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            confidence

            String

            可信度,最大为100.00%

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            public class FaceTest {

                private static final String URL = "http://open.itruscloud.com/apigate";

                private static final String APP_ID = "a929c*******e46";

                private static final String SECRET_KEY = "7d837a8f7b1********02cc94815b6db";

             

                //人脸比对

                public static void PersonFaceVerification() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc3001";

                    String selfieImgUrl = null;

                    String faceImgUrl = null;

                    String selfieImg = Img2Base64Util.getImgStr("D:\\天威工作\\picture\\test01.jpg");

                    String faceImg = Img2Base64Util.getImgStr("D:\\天威工作\\picture\\test01.jpg");

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    // params.put("selfieImgUrl", selfieImgUrl);

                    // params.put("faceImgUrl", faceImgUrl);

                    params.put("selfieImg", selfieImg);

                    params.put("faceImg", faceImg);

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/authapi/image/personFace", params, headers);

                    System.out.println(response);

                }

             

                // 必须按照以下顺序依次获取map键所对应的值

                private static String getPersonSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode") + params.get("faceImgUrl") + params.get("faceImg") + params.get("selfieImgUrl") + params.get("selfieImg");

                    System.out.println(ss);

                    return ss;

                }

             

                public static void main(String[] args) throws Exception {

                    PersonFaceVerification();

                }

            }                

            正常返回示例:

             

            xxxxxxxxxx

            {

                "orderNumber": "idc201908281827056117848",

                "confidence": "80.00%",

                "message": "人脸比对成功 ",

                "status": 1

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "orderNo": "idc202006231637542474228",

                "confidence": "60.2%",

                "message": "相似度太低",

                "status": 103013

            }        

            5.1.7驾驶证OCR-API

            名称

            内容

            接口说明

            根据上传驾驶证正面、反页照片获取驾驶证具体信息。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/image/drivingLicenceOcr

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/image/drivingLicenceOcr

            请求方法

            POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            base64File

            String

            必选

            图片的base64格式字符串 (图片限制大小1M以内)

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权,1:是 , 0:否

            返回值:

            名称

            类型

            描述

            status

            int

            1:成功 其他失败:详见“错误码”的描述

            message

            String

            接口执行结果信息

            info_Positive

            Object

            扫描驾驶证正页信息【JSON】见下

            info_negative

            Object

            扫描驾驶证反页信息【JSON】见下

            orderNo

            String

            业务流水号

            具体返回信息格式

            名称

            类型

            说明

            info_Positive

            string

            正页识别信息

            idcard

            string

            驾驶证号

            name

            string

            姓名

            sex

            string

            性别

            nationality

            string

            国籍

            address

            string

            住址

            birthday

            string

            生日

            firstGetDocDate

            string

            初次领证日期

            type

            string

            准驾车型

            begin_date

            string

            有效起始日期

            end_date

            string

            有效截止日期

            info_negative

            string

            副页识别信息

            file_number

            string

            档案编号

            record

            string

            记录

            barcode

            string

            条形码编号

             

            xxxxxxxxxx

            {

                "info_negative": {

                    "file_number": "",   //

                    "record": "",

                    "idcard": "",

                    "name": "",

                    "barcode": ""

                },

                "orderNo": "idc202101041825339297404",

                "info_Positive": {

                    "birthday": "1992-06-03",

                    "end_date": "2021-07-26",

                    "address": "广东省河源市源城区红星路69号",

                    "nationality": "中国",

                    "firstGetDocDate": "2015-07-26",

                    "sex": "男",

                    "begin_date": "2015-07-26",

                    "idcard": "4115031992xxxxxxxx",

                    "name": "xxx",

                    "type": "C1"

                },

                "message": "驾驶证扫描成功",

                "status": 1

            }

             

            正常调用示例:

             

            xxxxxxxxxx

            public class OcrTest {

             

                private static final String URL = "http://open.itruscloud.com/apigate";

                private static final String APP_ID = "488**********41";

                private static final String SECRET_KEY = "e1fa6e*******************20214f9";

             

                /**

                 * 驾驶证OCR

                 *

                 * @throws Exception 异常

                 */

                public static void drivingLicence() throws Exception {

                    String appId = APP_ID;

                    //产品编码

                    String serviceCode = "ocr0001";

                    //图片base64

                    String base64File = Img2Base64Util.getImgStr("G:\\images\\微信图片_20201225172324.jpg");

             

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("base64File", base64File);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

             

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/image/drivingLicenceOcr", params, headers);

             

                    System.out.println(response);

                }

             

                //必须按照以下顺序依次获取map键所对应的值

                private static String getPersonSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode") + params.get("base64File");

                    System.out.println(ss);

                    return ss;

                }

            }    

             

            5.1.8驾驶证三要素

            名称

            内容

            认证说明

            提交姓名、身份证号、驾驶证档案号,进行驾驶证核验,成功后返回扣分情况。

            接口说明

            本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/drivingLicenceVerify

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/drivingLicenceVerify

            请求方法

            POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            name

            String

            必选

            姓名

            idCard

            String

            必选

            身份证号

            recordId

            String

            必选

            驾驶证档案号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            code

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            score

            String

            驾驶证扣分情况

            正常调用示例:

             

            xxxxxxxxxx

                // 驾驶证三要素认证

                public static void drivingLicenceVerify() {

             

                    String appId = APP_ID;

                    //产品编码

                    String serviceCode = "idc0007";

                    //姓名

                    String name = "xxx";

                    //身份证号

                    String idCard = "411503xxxxxxxxxxxx";

                    //手机号

                    String recordId = "4416xxxx9305";

                    Map<String, Object> params = new HashMap<String, Object>();

             

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idCard", idCard);

                    params.put("recordId", recordId);

                    try {

                        Map<String, String> headers = new HashMap<>();

                        headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getDrivingSign(params), SECRET_KEY)));

                        System.out.println(new Base64().encodeToString(HMACSHA1.getHmacSHA1(getPersonSign(params), SECRET_KEY)));

                        String response = HttpUtil.doPost(URL + "/person/drivingLicenceVerify", params, headers);

                        System.out.println(response);

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

             

                }

                //必须按照以下顺序依次获取map键所对应的值

                private static String getDrivingSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode") + params.get("name") + params.get("idCard")

                            + params.get("recordId");

                    System.out.println(ss);

                    return ss;

                }

             

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"驾驶证三要素核验成功",

                "score":"0"

                "orderNumber":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message": "提交的参数不完整或格式不正确"

            }

            5.1.9 H5眨眼活体验证接口

            提示:未完成认证或认证结果已过期的可能原因

            1.验证次数过多超限后被风控,风控后的订单为无效,查询结果为未完成认证或认证结果已过期 2.用户中途退出刷脸,没有完成人脸验证的流程,没有比对,查询结果为未完成认证或认证结果已过期 3.操作超时,请退出重试 ,验证时间须在5分钟内完成,失效后无法进入刷脸流程,查询结果为未完成认证或认证结果已过期 4.视频格式或大小不合法 文件或视频不合法,无法进行比对,查询结果为未完成认证或认证结果已过期 5.上传的视频非实时录制,被时间戳校验拦截,查询结果为未完成认证或认证结果已过期 6.查询超过3天的订单返回未完成认证或认证结果已过期 7.app调用H5眨眼需要参考下面做下兼容配置:https://cloud.tencent.com/document/product/1007/61076 

            1. 如有IP白名单设置,需要放开地址:kyc.qcloud.com、miniprogram-kyc.tencentcloudapi.com、www.itruscloud.comwww.webank.com

            名称

            内容

            接口说明

            获取启用H5眨眼视频录制链接(返回的链接有效期为5分钟)

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/h5/blink

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/h5/blink

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            name

            String

            必选

            姓名

            idnumber

            String

            必选

            身份证号

            blinkUrl

            String

            必选

            H5 人脸核身完成后回调的第三方 URL,需要第三方提供完整 URL 且做 URL Encode

            完整 URL Encode 示例:原 URL 为https://cloud.tencent.comEncode 后为https%3a%2f%2fcloud.tencent.com

            fromType

            String

            必选

            browser:表示在浏览器启动刷脸

            App:表示在 App 里启动刷脸

            successLocation

            String

            可选

            认证成功跳转页面

            failLocation

            String

            可选

            认证失败跳转页面

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ;1:是,将留存照片 ; 0:否

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            loginUrl

            String

            认证链接

            orderNo

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

               //H5眨眼活体校验

                public static void h5BlinkAuth() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idc2009";

                    String name = "兴";

                    String idnumber = "131024198801150912";

                    String orderNo = "";

                    String blinkUrl = "http://localhost:8084/authweb/public/blink/callBack";

                    String fromType = "browser";

                    String successLocation = "http://www.baidu.com";

                    String failLocation = "http://www.baidu.com";

             

             

                    Map<String, Object> params = new HashMap<>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("idnumber", idnumber);

                    params.put("orderNo", orderNo);

                    params.put("blinkUrl", URLEncoder.encode(blinkUrl,"UTF-8"));

                    params.put("fromType", fromType);

                    params.put("successLocation", successLocation);

                    params.put("failLocation", failLocation);

                    Map<String,String> headers=new HashMap<>(4);

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(getH5BlinkSign(params), SECRET_KEY)));

                    String response=HttpUtil.doPost(URL+"/h5/blink", params, headers);

                    System.out.println(response);

                }

                //H5眨眼认证秘钥计算规则

                private static String getH5BlinkSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode")

                             + params.get("name") + params.get("idnumber")

                             + params.get("blinkUrl") + params.get("fromType")

                             + params.get("successLocation") + params.get("failLocation");

                    System.out.println(ss);

                    return ss;

                }

             

            正常返回示例:

             

            xxxxxxxxxx

            {

                "orderNo": "idc202103261045253536353",

                "loginUrl": "https://ida.webank.com/api/web/login?&orderNo=idc202103261045253536353&sign=3374d804464c62ca2bbb6448347c6ec327b046f0&from=null&webankAppId=TIDAm7wi&userId=tianwei0002&version=1.0.0&nonce=1c5aff0104b74b5c83a458955e38c217&h5faceId=d34c080a3296d7a462a42b71c8042d1b&url=http%3A%2F%2F192.168.101.35%3A8080",

                "message": "获取启用H5认证链接成功",

                "status": 1

            }

             

            错误返回示例:

             

            xxxxxxxxxx

            {

                "message": "姓名或身份证不合法",

                "status": 100002

            }

            5.1.10 回调用户接口说明

            名称

            内容

            接口说明

            用户眨眼认证完成之后将结果通知到用户

            请求地址

            用户在5.1.9参数中传入的blinkUrl

            请求方法

            POST

            应答格式

            JSON

            请求头

            Content-Signature:用户可以使用该参数对请求数据进行验签,保证数据不被篡改。值为“HMAC-SHA1 ”+ HmacSHA1算法签名值的base64,签名数据为整个body,使用的密钥为appId对应的secretKey。

            请求参数:

            名称

            类型

            描述

            status

            Long

            1:成功 其他:失败,详见“错误码”的描述

            message

            String

            结果信息

            confidence

            Float

            眨眼活体检测分数

            orderNo

            String

            业务流水号

            返回值:

            名称

            类型

            描述

            code

            Long

            1:成功 ;其他失败(成功不再回调,失败重新回调3次,每次间隔一秒)

            message

            String

            接口执行结果信息

            正常调用示例:

             

            xxxxxxxxxx

               //H5眨眼活体校验

                public static void h5BlinkAuth() throws Exception {

                  

                    HashMap<String, Object> param = new HashMap<>();

                    param.put("status", 1);

                    param.put("message", "认证成功");

                    param.put("confidence", 90f);

                    param.put("orderNo", "idc202103261045253536353");

                    

                    String response= HttpUtil.doPostJson(blinkUrl, JSON.toJSONString(param));

                    System.out.println(response);

                }

             

            正常返回示例:

             

            xxxxxxxxxx

            {

              

                "message": "认证成功",

                "code": 1

            }

            5.1.11 汽车违章信息查询

            名称

            内容

            接口说明

            根据用户输入车辆信息,查询违章信息,返回结果

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/traffic

            [测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/traffic]

            请求方法

            POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            carNumber

            String

            必选

            车牌号

            carType

            String

            必选

            号牌种类(01:大型汽车;02:小型汽车;51:新能源大车;52:新能源小车)

            carCode

            String

            必选

            车架号(完整17位)

            carEngine

            String

            必选

            发动机号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 ;其他失败

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            trafficInfo

            Object

            违章信息(status字段返回1时有此字段信息)

            times

            String

            违章条数

            fineTotal

            String

            违章罚款合计

            integralTotal

            String

            违章积分合计

            info

            List

            违章详细信息

            status

            String

            违章记录状态(1:未处理-未缴费;2:已处理-未缴费;3:已处理-已缴费(只有部分情况返回,由于无法统计,以实际返回为准))

            time

            String

            违章时间

            location

            String

            违章地址

            fines

            String

            违章罚款金额,单位:元

            penaltyPoint

            String

            违章扣分

            reason

            String

            违章原因

            city

            String

            违章所在城市名称

            number

            String

            违章代码

            正常调用示例:

             

            xxxxxxxxxx

                // 汽车违章信息查询

                public static void trafic() {

             

                    Map<String, Object> params = new HashMap<String, Object>(8);

                    String serviceCode = "idc0010";

             

                    params.put("appId", APP_ID);

                    params.put("serviceCode", serviceCode);

                    params.put("carNumber", "冀RG**22");

                    params.put("carType", "02");

                    params.put("carCode", "LFV3A23C*****9997");

                    params.put("carEngine", "C4**50");

             

                    try {

                        Map<String, String> headers = new HashMap<>(4);

                        headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getTrafficSign(params), SECRET_KEY)));

                        String response = HttpUtil.doPost(URL + "/person/traffic", params, headers);

             

                        System.out.println(response);

                    } catch (Exception e) {

                        e.printStackTrace();

                    }

             

                }

                //必须按照以下顺序依次获取map键所对应的值

                private static String getTrafficSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode")

                        + params.get("carNumber") + params.get("carType")

                        + params.get("carCode")+ params.get("carEngine");

                    return ss;

                }

             

            正常返回示例:

             

            xxxxxxxxxx

            {

                "orderNumber":"idc202106011753394399490",

                "status":1,

                "trafficInfo":{

                    "fineTotal":"200",

                    "times":"1",

                    "info":[

                        {

                            "penaltyPoint":"3",

                            "number":"12356",

                            "reason":"机动车违反禁止标线指示的",

                            "city":"江苏南京",

                            "fines":"100",

                            "location":"幸福路111",

                            "time":"2019-01-01 00:00:00",

                            "status":"0"

                        }

                    ],

                    "integralTotal":"3"

                }

             

            }

            5.1.12 商汤数字签名验证接口

            名称

            内容

            接口说明

            验证用户在服务端接收到的来自移动端(活体SDK)的图片和数字签名的完整性

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/person/dataSignatureVerification

            [测试环境: https://demo-open.itruscloud.com/apigate/authapi/person/dataSignatureVerification]

            请求方法

            POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            dataDigest

            String

            必选

            图片或protobuf的SHA256的Base64

            signature

            String

            必选

            图片或protobuf对应的数字签名

            trustSource

            String

            必选

            商汤信任源,目前使用OCR

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 ;其他失败

            message

            String

            接口执行结果信息

            passed

            String

            验证是否通过:true通过,false不通过

            requestId

            String

            请求id

            timestamp

            String

            请求时间戳

            正常调用示例:

             

            xxxxxxxxxx

            {

                "requestId":"e1b14e08395fb78cc896dbe362d4a34c",

                "passed":true,

                "message":"验证通过",

                "status":200,

                "timestamp":"1628049216783"

            }

            正常返回示例:

             

            xxxxxxxxxx

            {

                "requestId":"576f235fc333b6b0eff28755a5e850f1",

                "passed":false,

                "message":"验证不通过",

                "status":400,

                "timestamp":"1628056931402"

            }

            ##

            5.2企业实名认证

            企业实名失败特殊事项说明:

            一、同一企业24h内打款次数超过2次(为防止触发银行的反洗钱机制,防止用户往同一账户打款次数过多);

            二、预演环境企业实名认证相关接口中,如果涉及到法人信息认证的情况时,法人姓名带有"测试"字样时,会导致实名认证失败。

            名称

            内容

            接口说明

            企业实名身份认证,根据认证方式分配一个服务编码(serviceCode),支持多种认证方式组合(企业基础信息核验、法定代表人身份证简项、代理人身份证简项),确定参数必填字段,详见不同认证方式传参要求。

            请求地址

            生产环境:https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境:https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码

            legalName

            String

            可选

            法定代表人姓名

            legalId

            String

            可选

            法定代表人身份证号

            legalUrl

            String

            可选

            法定代表人人像照片网络地址

            legalImg

            String

            可选

            法定代表人人像照片base64编码串

            agentName

            String

            必选

            代理人姓名

            agentId

            String

            必选

            代理人身份证号

            agentUrl

            String

            可选

            代理人人像照片网络地址

            agentImg

            String

            可选

            代理人人像照片base64编码串

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ;1:是,将留存图片 ; 0:否

            备注:



            1.当legalUrl与legalImg同时存在时,优先使用legalImg

            2.当agentUrl与agentImg同时存在时,优先使用agentImg

            企业工商信息:

            1.当type为ET_PE和ET_SE时,idCode必填,orgCode非必填;

            2.当type为ET_OU,工商不支持

             

            企业登记信息:

            1.当type为ET_PE和ET_SE时,idCode必填,orgCod非必填;

            2.当type为ET_OU时,idCode和orgCod二选一 必填,填写组织机构代码/社会统一信用代码

            返回值:

            名称

            类型

            描述



            status

            Long

            1:成功,其他:失败



            message

            String

            接口执行结果信息



            orderNumber

            String

            业务流水号



            enterpriseInfo

            Map

            Name

            String

            公司名称



            No

            String

            注册号



            BelongOrg

            String

            登记机关



            OperName

            String

            法定代表人



            StartDate

            String

            成立日期



            EndDate

            String

            注销/吊销日期(正常企业返回,异常企业返回)



            Status

            Long

            登记状态(存续、在业、注销等)



            CreditCode

            String

            统一社会信用代码



            RegistCapi

            String

            注册资本



            EconKind

            String

            类型



            Address

            String

            住所



            Scope

            String

            经营范围



            TermStart

            Long

            营业期限自



            TermEnd

            String

            营业期限至



            CheckDate

            Long

            核准日期

            enterpriseInfo1

            Map

            Name

            String

            组织机构名称



            Code

            String

            组织机构代码



            CreditCode

            String

            统一信用代码



            LegalPerson

            String

            组织机构法人



            Address

            String

            组织机构地址



            StartAvaDate

            Long

            颁发日期



            EndEvaDate

            Long

            失效日期

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 企业实名认证综合接口

                public static void licenseAuth() throws Exception {

                    String SECRET_KEY = "158e******";

             

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = null;

                    String legalName = "赵**";

                    String legalId = "3307211*******56916";

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = "王**";

                    String agentId = " 1407234*******09732 ";

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

                    params.put("legalName", legalName);

                    params.put("legalId", legalId);

                    params.put("agentName", agentName);

                    params.put("agentId", agentId);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

            }        

            正常返回示例:

             

            xxxxxxxxxx

            //营业执照+法定代表人+代理人组合认证方式

            {

                "enterpriseInfo": {

                    "OperName": "徐海柱",

                    "TeamEnd": "长期",

                    "No": "440105000057604",

                    "Name": "广东方向盘牛品牌策划设计有限公司",

                    "Status": "在营(开业)",

                    "EndDate": null,

                    "CreditCode": "91440101661810975F",

                    "StartDate": 1177344000000,

                    "Address": "广州市海珠区广州大道南51号201室(仅限办公用途)",

                    "RegistCapi": "(万人民币元)1001.000000",

                    "BelongOrg": "广州市海珠区工商行政管理局",

                    "EconKind": "有限责任公司(自然人投资或控股)",

                    "CheckDate": 1473782400000,

                    "TermStart": 1177344000000,

                    "Scope": ""

                },

                "message": "企业基本信息比对成功。企业法人四要素比对成功。二要素比对成功。",

                "status": "1",

                "orderNumber": "yycsidb201811281458037749629"

            }        

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message":"提交参数信息不完整或参数格式不正确",

            }

             

            5.2.1.1 企业工商信息核验

            名称

            内容

            认证说明

            提交营业执照信息,与工商注册信息注册信息进行比对,确定企业是否真实存在,并核验营业状态以及营业期限。

            接口说明

            统一调用企业实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            备注:



            1.当type为ET_PE和ET_SE时,idCode必填,orgCode非必填;

            2.当type为ET_OU,工商不支持

            返回值:

            名称

            类型

            描述



            status

            Long

            1:成功,其他:失败



            message

            String

            接口执行结果信息



            orderNumber

            String

            业务流水号



            enterpriseInfo

            Map

            Name

            String

            公司名称



            No

            String

            注册号



            BelongOrg

            String

            登记机关



            OperName

            String

            法定代表人



            StartDate

            String

            成立日期



            EndDate

            String

            注销/吊销日期



            Status

            Long

            登记状态(存续、在业、注销等)



            CreditCode

            String

            统一社会信用代码



            RegistCapi

            String

            注册资本



            EconKind

            String

            类型



            Address

            String

            住所



            Scope

            String

            经营范围



            TermStart

            Long

            营业期限自



            TermEnd

            String

            营业期限至



            CheckDate

            Long

            核准日期

            正常调用示例:

             

            xxxxxxxxxx

                public static void licenseAuth() throws Exception {

             

                    String appId = APP_ID;

                    //产品编码

                    String serviceCode = "idb0003";

                    //企业类型

                    String type = "ET_PE";

                    //企业名称

                    String name = "北京天威诚信电子商务服务有限公司";

                    //企业社会统一信用代码

                    String idCode = "911101088020176153";

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

                  

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getEnterpriseSign(params), SECRET_KEY)));

                    System.out.println(headers.get("Content-Signature"));      

                    String body = JSON.toJSONString(params);

                    String response = HttpUtil.doPostJson(URL + "/enterprise/authIden", body, headers);

             

                    System.out.println(response);

                }

             

             private static String getEnterpriseSign(Map<String, Object> params) {

                    String ss = (String) params.get("appId") + params.get("serviceCode") + params.get("type") + params.get("name")

                            + params.get("idCode") + params.get("orgCode") + params.get("legalName") + params.get("legalId") + params.get("legalUrl")

                            + params.get("legalImg") + params.get("agentName") + params.get("agentId") + params.get("agentUrl") + params.get("agentImg");

                    System.out.println(ss);

                    return ss;

                }

            正确返回示例:

             

            xxxxxxxxxx

            {

            "status": 1,

            "message": "企业基本信息比对成功。",

            "enterpriseInfo": {

                    "Status": "在营(开业)",

                    "RegistCapi": "(万美元)4520.000000",

                    "No": "110000410144104",

                    "BelongOrg": "北京市工商行政管理局海淀分局",

                    "CreditCode": "911101088020176153",

                    "OperName": "张王李赵",

                    "EconKind": "有限责任公司(外国法人独资)",

                    "Address": "北京市某区某路某大厦666号",

                    "Name": "赵县安林小卖部。",

                    "TermStart": 948124800000,

                    "StartDate": 948124800000,

                    "TeamEnd": "1610812800000",

                    "Scope": "开发、生产计算机软件;提供相关技术咨询、技术服务、技术培训;承接计算机网络系统工程;销售自产产品、医疗器械II类;货物进出口、技术进出口、代理进出口;设计、制作、代理、发布广告;软件开发;销售第三类医疗器械。(销售第三类医疗器械以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动。)",

                    "CheckDate": 1549814400000

                },

            "orderNo":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message":"提交参数信息不完整或参数格式不正确",

            }

             

            5.2.1.1 企业登记信息核验

            名称

            内容

            认证说明

            提交营业执照/组织机构代码信息,与企业登记信息/组织机构代码注册信息进行比对,确定企业是否真实存在,并核验营业状态以及营业期限。

            接口说明

            统一调用企业实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码/社会统一信用代码/注册号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            备注



            1、当type为ET_PE和ET_SE时,idCode必填,orgCod非必填;

            2、当type为ET_OU时,idCode和orgCod二选一 必填,填写组织机构代码/社会统一信用代码

            返回值:

            名称

            类型

            描述



            status

            Long

            1:成功,其他:失败



            message

            String

            接口执行结果信息



            orderNumber

            String

            业务流水号



            enterpriseInfo

            Map

            Name

            String

            公司名称



            No

            String

            注册号



            BelongOrg

            String

            登记机关



            OperName

            String

            法定代表人



            StartDate

            String

            成立日期



            EndDate

            String

            注销/吊销日期



            Status

            Long

            登记状态(存续、在业、注销等)



            CreditCode

            String

            统一社会信用代码



            RegistCapi

            String

            注册资本



            EconKind

            String

            类型



            Address

            String

            住所



            Scope

            String

            经营范围



            TermStart

            Long

            营业期限自



            TermEnd

            String

            营业期限至



            CheckDate

            Long

            核准日期

            enterpriseInfo1

            Map

            Name

            String

            组织机构名称



            Code

            String

            组织机构代码



            CreditCode

            String

            统一信用代码



            LegalPerson

            String

            组织机构法人



            Address

            String

            组织机构地址



            StartAvaDate

            Long

            颁发日期



            EndAvaDate

            Long

            失效日期

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 企业实名认证综合接口——营业执照认证方式

                public static void licenseAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = null;

                    String legalName = null;

                    String legalId = null;

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = null;

                    String agentId = null;

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

             

                    Map<String, String> headers = new HashMap<>();

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

             

                // 企业实名认证综合接口——营业执照+组织机构代码认证方式

                public static void organizationAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = "******";

                    String legalName = null;

                    String legalId = null;

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = null;

                    String agentId = null;

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

                    params.put("orgCode", orgCode);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

            }        

            正确返回示例:

             

            xxxxxxxxxx

            {

            "status": 1,

            "message": "企业基本信息比对成功。",

            "enterpriseInfo": {

                    "Status": "在营(开业)",

                    "RegistCapi": "(万美元)4520.000000",

                    "No": "110000410144104",

                    "BelongOrg": "北京市工商行政管理局海淀分局",

                    "OperName": "张王李赵",

                    "EconKind": "有限责任公司(外国法人独资)",

                    "Address": "北京市某区某路某大厦666号",

                    "Name": "赵县安林小卖部。",

                    "TermStart": 948124800000,

                    "StartDate": 948124800000,

                    "TeamEnd": 1610812800000,

                    "Scope": "开发、生产计算机软件;提供相关技术咨询、技术服务、技术培训;承接计算机网络系统工程;销售自产产品、医疗器械II类;货物进出口、技术进出口、代理进出口;设计、制作、代理、发布广告;软件开发;销售第三类医疗器械。(销售第三类医疗器械以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动。)",

                    "CheckDate": 1549814400000

                },

            "orderNo":"idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message":"提交参数信息不完整或参数格式不正确",

            }

            5.2.1.2 法定代表人身份证简项

            名称

            内容

            认证说明

            提交企业名称、企业信用代码(或营业执照注册号)或组织机构代码号、法定代表人的姓名、身份证号,核验企业的法定代表人身份真实性。

            接口说明

            统一调用企业实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码

            legalName

            String

            必选

            法定代表人姓名

            legalId

            String

            必选

            法定代表人身份证号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            备注



            1、当type为ET_PE和ET_SE时,idCode必填,orgCod非必填;

            2、当type为ET_OU时,idCode和orgCod二选一 必填,填写组织机构代码/社会统一信用代码

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功,其他:失败

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 企业实名认证综合接口——法定代表人身份证简项认证方式

                public static void legalPersonAuth() throws Exception {

             

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = null;

                    String legalName = "张三";

                    String legalId = "2******";

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = null;

                    String agentId = null;

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

                    params.put("legalName", legalName);

                    params.put("legalId", legalId);

             

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

            }            

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"法人校验成功",

                "orderNumber":"idc2020011317505097877**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status": 100002,

                "message": "提交的参数不完整或格式不正确"

            }

            5.2.1.3 代理人身份证简项

            名称

            内容

            认证说明

            提交代理人姓名、身份证号,与公安身份证信息比对,要配合企业基础信息核验使用。

            接口说明

            统一调用企业实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码

            agentName

            String

            必选

            代理人姓名

            agentId

            String

            必选

            代理人身份证号

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功,其他:失败

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            {

                "enterpriseInfo": {

                    "OperName": "张勇",

                    "TeamEnd": 2230646400000,

                    "No": "330100400015575",

                    "Name": "北京网联信通科技有限公司",

                    "Status": "存续",

                    "EndDate": null,

                    "CreditCode": "91330100716105852F",

                    "StartDate": 936806400000,

                    "Address": "杭州市滨江区网商路699号",

                    "RegistCapi": "59690万美元",

                    "BelongOrg": "杭州市高新区(滨江)市场监督管理局",

                    "EconKind": "有限责任公司(台港澳法人独资)",

                    "CheckDate": 1497542400000,

                    "TermStart": 936806400000,

                    "Scope": "开发、销售计算机网络应用软件;设计、制作、加工计算机网络产品并提供相关技术服务和咨询服务;服务:自有物业租赁,翻译,成年人的非证书劳动职业技能培训,成年人的非文化教育培训(涉及许可证的除外)。"

                },

                "message": "企业验证成功,二要素比对成功",

                "status": "1",

                "orderNumber": "YYCSidb201810291516419468349"

            }            

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status":1,

                "message":"代理人校验成功",

                "orderNumber":"idc2020011317505097877**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status":100002,

                "message":"提交的参数不完整或格式不正确"

            }

            5.2.1.4 企业三要素核验

            名称

            内容

            认证说明

            提交营业执照/组织机构代码信息+法人姓名,与工商注册信息/组织机构代码注册信息进行对比,确定企业是否真实存在,并核验营业状态以及营业期限和法人姓名是否一致。

            接口说明

            统一调用企业实名认证综合接口,本认证方式传参要求如下

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/authIden

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/authIden

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            type

            String

            必选

            企业类型:企业(ET_PE)、个体工商户(ET_SE)、政府机构/事业单位(ET_OU)

            name

            String

            必选

            企业名称

            idCode

            String

            可选

            统一社会信用代码或营业执照注册号

            orgCode

            String

            可选

            组织机构代码

            legalName

            String

            必选

            法人姓名

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            备注:



            1、当type为ET_PE和ET_SE时,idCode必填,orgCod非必填;

            2、当type为ET_OU时,idCode和orgCod二选一 必填,填写组织机构代码/社会统一信用代码

            返回值:

            名称

            类型

            描述



            status

            Long

            1:成功,其他:失败



            message

            String

            接口执行结果信息



            orderNumber

            String

            业务流水号



            enterpriseInfo

            Map

            Name

            String

            公司名称



            No

            String

            注册号



            BelongOrg

            String

            登记机关



            OperName

            String

            法定代表人



            StartDate

            String

            成立日期



            EndDate

            String

            注销/吊销日期



            Status

            Long

            登记状态(存续、在业、注销等)



            CreditCode

            String

            统一社会信用代码



            RegistCapi

            String

            注册资本



            EconKind

            String

            类型



            Address

            String

            住所



            Scope

            String

            经营范围



            TermStart

            Long

            营业期限自



            TermEnd

            String

            营业期限至



            CheckDate

            Long

            核准日期

            enterpriseInfo1

            Map

            Name

            String

            组织机构名称



            Code

            String

            组织机构代码或统一信用代码



            LegalPerson

            String

            组织机构法人



            Address

            String

            组织机构地址



            StartAvaDate

            Long

            颁发日期



            EndAvaDate

            Long

            失效日期

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 企业实名认证综合接口——营业执照认证方式

                public static void licenseAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = null;

                    String legalName = null;

                    String legalId = null;

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = null;

                    String agentId = null;

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

             

                    Map<String, String> headers = new HashMap<>();

                    //注意:以下计算签名Content-Signature时,请按签名字段顺序,并且每个字段不可缺少,本认证方式不要求的字段,请定义为null

                    //注意:"HMAC-SHA1 "字符串中最后一位是一个空格

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

             

                // 企业实名认证综合接口——营业执照+组织机构代码认证方式

                public static void organizationAuth() throws Exception {

                    String SECRET_KEY = "158e******";

                    String appId = "4c17******";

                    String serviceCode = "idc****";

                    String type = "ET_PE";

                    String name = "******有限公司";

                    String idCode = "9133******";

                    String orgCode = "******";

                    String legalName = null;

                    String legalId = null;

                    String legalUrl = null;

                    String legalImg = null;

                    String agentName = null;

                    String agentId = null;

                    String agentUrl = null;

                    String agentImg = null;

             

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("name", name);

                    params.put("type", type);

                    params.put("idCode", idCode);

                    params.put("orgCode", orgCode);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + Base64.getEncoder().encodeToString(HMACSHA1.getHmacSHA1(appId + serviceCode + type + name + idCode + orgCode + legalName + legalId + legalUrl + legalImg + agentName + agentId + agentUrl + agentImg, SECRET_KEY)));

             

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/authIden", params, headers);

                    System.out.println(response);

                }

            }        

            正确返回示例:

             

            xxxxxxxxxx

            {

                "status": 1,

                "message": "企业基本信息比对成功。",

                "enterpriseInfo": {

                    "Status": "在营(开业)",

                    "RegistCapi": "(万美元)4520.000000",

                    "No": "110000410144104",

                    "BelongOrg": "北京市工商行政管理局海淀分局",

                    "OperName": "张王李赵",

                    "EconKind": "有限责任公司(外国法人独资)",

                    "Address": "北京市某区某路某大厦666号",

                    "Name": "赵县安林小卖部。",

                    "TermStart": 948124800000,

                    "StartDate": 948124800000,

                    "TeamEnd": 1610812800000,

                    "Scope": "开发、生产计算机软件;提供相关技术咨询、技术服务、技术培训;承接计算机网络系统工程;销售自产产品、医疗器械II类;货物进出口、技术进出口、代理进出口;设计、制作、代理、发布广告;软件开发;销售第三类医疗器械。(销售第三类医疗器械以及依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动。)",

                    "CheckDate": 1549814400000

                },

                "orderNo": "idc2020011414265759110**"

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

                "status": 100002,

                "message": "企业类型为ET_OU时,idCode和orgCode二选一,不能同时输入"

            }

            ##

            5.2.2营业执照OCR-API

            名称

            内容

            接口说明

            根据上传的营业执照照片获取具体信息。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/image/businessLicense

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/image/businessLicense

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            产品编码

            base64File

            String

            必选

            图片的base64格式字符串 (图片限制大小3M以内)

            crmOrderNo

            String

            可选

            crm订单号(传入crm订单号后不再从网关中获取crm订单号及天威云订单号)

            saveFlag

            String

            可选

            是否获取用户认证意愿授权 ,1:是 , 0:否

            返回值:

            名称

            类型

            描述

            status

            int

            1:成功 2:营业执照OCR验证失败,其他:详见“错误码”的描述

            message

            String

            接口执行结果信息

            info

            String

            获具体信息(JSON格式字符串)见下

            orderNo

            String

            业务流水号

            info具体返回信息格式

             

            xxxxxxxxxx

            {

                "regi": "资金",

                "date": "成立日期",

                "comp": "颁发机关",

                "pers": "负责人/法定代表人",

                "funding": "经费来源",

                "code": "统一社会信用代码",

                "num": "登记号",

                "type": "类型",

                "form": "组成形式",

                "organizer": "主管单位",

                "scope": "业务范围",

                "name": "名称",

                "time": "有效期",

                "addr": "住所",

                "date_issue": "发证日期"

            }    

            正常调用示例:

             

            xxxxxxxxxx

            public class OcrTest {

                private static final String URL = "http://open.itruscloud.com/apigate";

                private static final String APP_ID = "488**********41";

                private static final String SECRET_KEY = "e1fa6e*******************20214f9";

             

                //企业营业执照ocr验证

                public static void BusinessLicense() throws Exception {

                    String appId = APP_ID;

                    String serviceCode = "idb1001";

                    String base64File = Img2Base64Util.getImgStr("D:\\img\\yyzz.png");

             

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("appId", appId);

                    params.put("serviceCode", serviceCode);

                    params.put("base64File", base64File);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(getEnterpriseSign(params), SECRET_KEY)));

             

                    System.out.println(headers.get("Content-Signature"));

                    String response = HttpUtil.doPost(URL + "/authapi/image/businessLicense", params, headers);

                    System.out.println(response);

                }

            }                

            正常返回示例:

             

            xxxxxxxxxx

            {

                "orderNo": "idc201907171024346088878",

                "message": "营业执照OCR验证成功",

                "status": 1,

                "info": "{"regi":"6580万元","date":"2000年09月26日","comp":"","pers":"陈韶光","funding":"","code":"911101088020176135","num":"","type":"有限责任公司(自然人投资或控股)","form":"","organizer":"","scope":"因特网信息服务业务:销售商用密码产品:货物进出口、技术进住经营活动:不得从事本市产业政策禁止和限制类项日的经营活动.)","name":"北京天威诚信电子商务服务有限公司","time":"2000年09月26日至2020年09月25日","addr":"北京市海淀区上地八街7号院4号楼401A室","date_issue":""}"

            }        

             

            5.2.3 企业对公银行账户打款(银联)

            5.2.3.1打款申请接口

            名称

            内容

            接口说明

            1、根据企业名称、企业银行账号、开户总行名称、联行号登进行打款验证

            2、限制每个应用同一企业名称/银行账号24小时内只能申请两次(避免触发反洗钱规则)

            3、提交企业对公银行账户打款申请,向企业银行账户中打入随机小金额。打款受理需要一段时间,返回打款申请中,即为提交成功。需配合企业对公银行账户打款查询接口,查询打款状态;配合企业对公银行账户打款金额验证接口,进行随机金额验证。

            4、注意:前端用户页面建议不允许用户手动输入银行名称,建议只能下拉框选择(下拉框支持模糊搜索),下来框列表内容参见5.2.3.5接口

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/bankAccount/payment/verificationIdenNewPay

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/bankAccount/payment/verificationIdenNewPay

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            serviceCode

            String

            必选

            服务编码

            keyName

            String

            必选

            企业名称

            accountNo

            String

            必选

            银行账号

            accountBank

            String

            必选

            银行名称,注意:不需要精确到支行,只需要完整的总行名称即可。建议前端下拉选择银行,不允许用户手动输入,支持的列表参见5.2.3.5

            subBank

            String

            可选

            银行联行号,建议校验位数(12位),不允许空格、特殊字符等,示例402873100333,该参数传入后优先级最高

            payCallbackUrl

            String

            可选

            打款回调地址(如有请参照5.2.3.4处进行回调对接)

            返回值:

            名称

            类型

            描述

            status

            Long

            300002:付款申请中 其他:失败,详见“错误码”的描述

            2:失败,原因:银行名称为空且根据银行编码查询银行名称未查询到

            3:失败,原因:银行编码为空且根据银行名称查询银行编码未查询到

            message

            String

            接口执行结果信息

            orderNumber

            String

            业务流水号

            正常调用示例:

             

            xxxxxxxxxx

            {

                "status": 300002,

                "message": "打款申请中",

                "orderNumber": "idb2020011317505097877**"

            }

            错误调用示例:

             

            xxxxxxxxxx

            {

                "orderNumber": "idb202006231708004987341",

                "message": "失败,原因:银行编码为空且根据银行名称查询银行编码未查询到",

                "status": 2

            }

            5.2.3.2打款查询接口

            名称

            内容

            接口说明

            调用本接口查询打款状态,打款受理需要一段时间,返回打款申请受理成功,2小时左右到账(根据不同银行情况,转账时间可能需要30分钟-2个工作日)。如特殊情况(企业名称和银行账户不匹配等),企业开户银行跨行清算时校验退票,接口状态返回打款失败,需重新提交打款申请。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/payment/queryIdenNewPay

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/payment/queryIdenNewPay

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            orderNumber

            String

            必选

            业务流水号

            返回值:

            名称

            类型

            描述

            status

            Long

            1:付款申请受理成功,请以银行对账为准 300002:付款申请中 其他:失败,详见“错误码”的描述描述

            message

            String

            接口执行结果信息

            正常调用示例:

             

            xxxxxxxxxx

            import java.util.Base64;

            import java.util.HashMap;

            import java.util.Map;

             

            public class Test {

                // 企业对公银行账户打款查询

                public static void queryIden() throws Exception {

                    String orderNumber = "CXQYidb******";

                    Map<String, Object> params = new HashMap<String, Object>();

                    params.put("orderNumber", orderNumber);

                    String response = HttpUtil.doPost("http://******:**/apigate/authapi" + "/enterprise/payment/queryIdenNewPay", params);

                    System.out.println(response);

                }

            }      

            正常返回示例:

             

            xxxxxxxxxx

            {

               "message":"打款金额验证成功",

               "status":1

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

               "status":300003,

               "message":"无对应有效打款信息,请重新打款"

            }

            5.2.3.3打款验证接口

            名称

            内容

            接口说明

            验证随机金额的正确性,用以核验银行账户的所属支配权。银行打款金额验证最多允许验证三次,三次验证均失败后,需重新提交银行账号信息进行打款及金额验证。金额的验证有效期是5天。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/payment/verifyIdenNewPay

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/payment/verifyIdenNewPay

            请求方法

            GET/POST

            应答格式

            JSON

            请求参数:

            名称

            类型

            约束

            描述

            appId

            String

            必选

            应用标识

            orderNumber

            String

            必选

            业务流水号

            paymentAmount

            String

            必选

            到款金额

            返回值:

            名称

            类型

            描述

            status

            Long

            1:成功 300002:付款申请中 其他:失败,详见“错误码”的描述

            message

            String

            接口执行结果信息

            正常调用示例:

             

            xxxxxxxxxx

            {

                "message":"打款金额验证成功",

                "status":1

            }

            错误返回示例:

             

            xxxxxxxxxx

            {

              "status": 300003,

              "message": "无对应有效打款信息,请重新打款"

            }

            5.2.3.4打款回调接口

            名称

            内容

            接口说明

            1、在打款申请接口中,配置了回调接口地址,需要按照以下方式参数进行接口参数接收,按照返回格式进行结果返回

            请求方法

            GET/POST

            应答格式

            Map

            回调请求参数:

            字段

            类型


            释义

            serialnumber

            String

            必填

            流水号

            status

            Integer

            必填

            打款状态1.打款中 2.打款失败 3.打款成功

            payTime

            Date

            必填

            付款到账时间

            payFailMessage

            String

            必填

            打款失败原因

            例如:

             

            xxxxxxxxxx

                @RequestMapping("/testCallBack")

                public @ResponseBody Map<Object, Object> testCallBack(

                    @RequestParam(value = "serialnumber", required = true) String serialnumber,

                    @RequestParam(value = "status", required = true) String status,

                    @RequestParam(value = "payFailMessage", required = true) String payFailMessage,

                    @RequestParam(value = "payTime", required = true) String payTime) {

                    

                    System.out.println("测试回调的serialnumber = " + serialnumber);

                    HashMap<Object, Object> map = new HashMap<>(8);

                    map.put("code", 0);

                    map.put("message", "已收到回调")

                    return map;

                }

            收到回调返回:

            1,使用json传输code=0,表示回调成功,其他失败

            名称

            描述

            code

            0,表示回调成功,其他失败



             

            5.2.3.5 获取企业打款支持的银行列表接口

             

            名称

            内容

            接口说明

            获取企业打款(idb0041)支持的银行列表接口。

            请求地址

            [生产环境:] https://admin.itruscloud.com/webgate/authweb/mini/ent/getBankList

            [测试环境:] https://demo-admin.itruscloud.com/webgate/authweb/mini/ent/getBankList

            请求方法

            POST



            请求参数:无

             

            返回值:

            字段

            类型

            是否必须

            描述

            code

            Integer


            0-成功, 其他:失败

            data

            Object



            - id

            Long

            序列号

            - providerType

            String

            信用源

            - bankCode

            String

            银行简码

            - bankName

            String

            银行名称

            - serviceCode

            String

            产品编码

            - version

            Integer

            版本号

            - deleted

            Integer

            0-未删除,1-删除

            msg

            String


            结果信息





             

            xxxxxxxxxx

            响应示例:

            {

                "code": 0,

                "msg": "操作成功",

                "data": [

                    {

                        "id": 6,

                        "providerType": "",

                        "bankCode": "",

                        "bankName": "中国邮政储蓄银行",

                        "serviceCode": "",

                        "deleted": 0,

                        "version": 0

                    },

                    {

                        "id": 7,

                        "providerType": "",

                        "bankCode": "",

                        "bankName": "中国工商银行",

                        "serviceCode": "",

                        "deleted": 0,

                        "version": 0

                    }

                ],

                "status": 1

            }

             

            5.2.3.6 企业查询接口

            名称

            内容

            接口说明

            根据企业名称模糊查询对应企业列表信息,最多只返回20条数据。

            请求地址

            生产环境: https://open.itruscloud.com/apigate/authapi/enterprise/queryEntList

            测试环境: https://demo-open.itruscloud.com/apigate/authapi/enterprise/queryEntList

            请求方法

            POST



            请求参数:

            字段

            类型

            是否必须

            描述

            companyName

            String

            企业名称

            appId

            String

            应用标识

            serviceCode

            String

            产品编码

            返回结果:

            字段

            类型

            描述

            orderNumber

            String

            流水号

            status

            Long

            1:成功,其他:失败

            message

            String

            接口执行结果信息

            entInfos

            List

            企业列表

            |- no

            String

            注册号

            |- address

            String

            注册地址

            |- creditCode

            String

            统一社会信用代码

            |- keyNo

            String

            KeyNo

            |- name

            String

            企业名称

            |- operName

            String

            法定代表人姓名

            |- startDate

            String

            成立日期

            |- status

            String

            状态

            Java调用示例:

             

            xxxxxxxxxx

               public static void queryEntList() throws Exception {

                    String appId = "e4791a68f74a4a";//  APP_ID;

                    String secretKey = "119159bddbaf4032b66c0a6ec1ae3355"; //SECRET_KEY;

                    String serviceCode = "idb0042"; // 产品编码

                    Map<String, Object> params = new HashMap<String, Object>(4);

                    params.put("companyName", "百度");

                    params.put("appId", appId);

                    params.put("serviceCode",serviceCode);

             

                    Map<String, String> headers = new HashMap<>();

                    headers.put("appId", appId);

                    headers.put("serviceCode", serviceCode);

                    headers.put("Content-Signature", "HMAC-SHA1 " + new Base64().encodeToString(HMACSHA1.getHmacSHA1(JSON.toJSONString(params), secretKey+serviceCode)));

             

                    String response = HttpUtil.doPostJson("http://192.168.100.201:22417/apigate/authapi/enterprise/queryEntList", JSON.toJSONString(params), headers);

             

                    System.out.println(response);

                }

            正确返回示例:

             

            xxxxxxxxxx

            {

                "orderNumber": "idb202306161629102302955",

                "entInfos": [

                    {

                        "no": "110000410144104",

                        "address": "北京市海淀区上地十街10号百度大厦三层",

                        "creditCode": "91110108717743469K",

                        "keyNo": "3f603703d59a04cbe427e5825099a565",

                        "name": "百度在线网络技术(北京)有限公司",

                        "operName": "崔珊珊",

                        "startDate": "2000-01-18",

                        "status": "存续"

                    },

                    {

                        "no": "310115400176517",

                        "address": "中国(上海)自由贸易试验区纳贤路701号1#楼3层",

                        "creditCode": "91310000775785552L",

                        "keyNo": "644f2f8965a750c40892b30fdd909b19",

                        "name": "百度(中国)有限公司",

                        "operName": "沈抖",

                        "startDate": "2005-06-06",

                        "status": "存续"

                    }

                ],

                "message": "查询成功。",

                "status": 1

            }

            异常返回示例:

             

            xxxxxxxxxx

            {"status":400,"message":"系统异常,请联系管理员","requestId":"GT3gNrYtwgGx1FdQ1m7"}

             

            5.3错误码

            错误分类

            错误码

            描述

            系统错误

            100000

            无可用信任源


            100001

            信任源异常错误,请联系管理员


            100002

            提交的参数信息不完整

            企业类型为ET_OU时,idCode和orgCode二选一,不能同时输入

            未查询到银行名称列表

            银行名称不存在

            企业名称不能为空

            开户支行网点不能为空

            银行账号不能为空

            银行编码和银行名称必须二选一

            订单描述不能超过8个字


            100003

            系统异常错误


            100004

            没有此服务权限


            100005

            服务密钥错误


            100006

            Hmac验证错误


            100007

            服务计费失败


            100008

            接口调用异常


            100009

            缺少服务配置


            100010

            应用标识不存在


            100011

            应用状态已关闭


            100012

            此服务还未开始


            100013

            服务已关闭

            应用未授权,请登陆控制台,在我的应用下添加应用授权


            100015

            您的服务已过期,请重新购买服务


            100016

            数量不足,请重新购买服务


            100017

            您当前服务不可用,如有问题请联系客服


            100018

            重复太多次没有得到处理


            100019

            访问超时,请重试


            100020

            appid或signature不能为空


            100021

            计费规则加载失败


            100022

            此接口未找到


            100023

            此服务未发布


            100024

            查无此结果


            120001

            主中心接口调用异常


            120002

            从中心参数错误,cloudId,signature


            120003

            从中心签名验证失败




            个人

            101001

            姓名不正确


            101002

            身份证号不正确


            101003

            库中无此身份证号码


            101004

            姓名和身份证号码不匹配


            102001

            银行卡号不正确


            102002

            手机号不正确


            102003

            银行卡信息匹配不一致


            102004

            卡状态错误(没收卡,挂失,被窃无效卡号,未初始化等)


            102005

            访问银联接口异常


            102006

            银联预留身份证不存在


            102007

            卡验证异常(发卡方不允许操作、受限卡、验证请求频繁等异常情况)


            103001

            公安数据源服务出错


            103002

            参数非UTF-8编码


            103003

            网络地址图片获取超时


            103004

            网络地址图片获取失败


            103005

            图片不存在


            103006

            图片体积不能超过2M


            103007

            姓名和身份证号匹配,公安照片不存在


            103008

            上传的图片未检测出人脸


            103009

            公安库中的图片未检测出人脸


            103010

            文件不是图片文件或已经损坏导致无法正确识别


            103011

            图片格式不符合要求


            103012

            人脸特征提取失败


            103013

            相似度比对未通过


            104010

            手机号三要素匹配不一致


            105010

            无此驾照信息


            105011

            查询失败


            105012

            身份证核验失败


            105013

            无法验证!【中心中无此 身份证记录,军人转业,户口迁 移等】


            105014

            驾驶证号与档案编号不一致


            105015

            姓名与驾驶证号不一致


            106010

            银行卡五要素不匹配


            106011

            确定是电子账户,但无法判定是二类还是三类账户


            106012

            要素信息验证不一致


            106013

            非电子账户


            106014

            银行卡五要素参数错误


            107010

            车辆已注销


            107011

            城市未开通


            107012

            不支持该车型


            107013

            车辆信息填写不匹配


            108001

            认证失败,请稍后重试


            108002

            认证失败,发卡行不支持


            108003

            认证失败,该卡号当日连续多次认证不通过被限制校验,次日恢复


            108004

            认证失败,银行卡状态异常,详情请咨询您的发卡行


            108005

            认证失败,未开通无卡支付


            108006

            参数错误:银行卡号格式不正确


            108007

            同一要素请求过于频繁


            108008

            车同一银行卡请求过于频繁


            108009

            参数错误:订单号格式不正确


            108010

            认证信息不匹配,与银行预留信息不一致


            108011

            银行卡四要素(境外)参数错误


            108012

            认证失败,卡号不存在


            108013

            认证失败,数据源异常


            108014

            参数错误:姓名格式不正确


            108015

            参数错误:身份证格式不正确


            108016

            参数错误:银行卡号格式不正确


            108017

            参数错误:手机号格式不正确




            企业

            201001

            营业执照:号码没查找到数据


            201002

            营业执照:名称不匹配


            201003

            营业执照:注册号不匹配(企业未三证合一)


            201004

            营业执照:统一信用代码不匹配


            201005

            企业营业执照:已三证合一,请提交统一信用代码重新提交认证


            201006

            营业执照:号码不匹配(三证合一状态无法判断)


            201007

            营业执照:不在经营有效期内


            201008

            营业执照:企业状态异常


            201100

            企业组织机构代码/工商登记号/统一信用代码不能为空


            201101

            企业组织机构代码/工商登记号/统一信用代码不正确


            202001

            组织机构代码:号码没查找到数据


            202002

            组织机构代码:名称不匹配


            202003

            组织机构代码:号码不匹配


            202004

            组织机构代码:企业已三证合一,仍提交了组织机构代码


            202005

            组织机构代码:不在经营有效期内


            202006

            组织机构代码:企业状态异常


            202007

            组织机构代码:开放时间周一至周五8点至17点


            202008

            企业类型错误


            203001

            法人姓名不正确


            203002

            法人身份证号不正确


            203003

            库中无此法人身份证号码


            203004

            法人姓名和身份证号码不匹配


            203005

            企业法人姓名不匹配


            203006

            企业基本信息未认证,请先认证企业基本信息


            203007

            验证要素格式有误


            203008

            不支持验证


            203009

            验证不一致


            203010

            无效证件号


            203011

            未查得该企业信息


            101001

            代理人姓名不正确。

            法人姓名不正确


            101002

            代理人身份证号不正确

            法人身份证号不正确


            101003

            库中无此代理人身份证号码


            101004

            代理人姓名和身份证号码不匹配


            101009

            企业名称与企业标识、法人姓名一致,法人身份证不一致


            101010

            企业名称与企业标识、法人身份证一致,法人姓名不一致


            101011

            企业名称与企业标识一致,法人姓名、法人身份证不一致


            101012

            企业标识与法人姓名、法人身份证一致,企业名称不一致


            101013

            企业标识与法人姓名一致,企业名称、法人身份证不一致


            101014

            企业标识一致,企业名称、法人姓名、法人身份证不一致


            101015

            企业名称、企业标识、法人姓名、法人身份证均不一致


            108018

            认证失败


            108019

            未查到工商信息,请核对企业类型或上送的信息是否正确


            205007

            不支持组织机构代码方式


            300001

            打款失败


            300002

            付款申请中


            300003

            无对应有效打款信息,请重新打款


            300004

            打款金额验证失败


            300005

            银行名称不在支持的列表中


            300006

            此次认证已完成,不能重复验证金额


            300007

            您已经三次金额验证失败,请重新打款


            300008

            您的打款申请提交次数过多


            80010150

            转账中,请查看银行账户


            80010151

            转账未成功,请联系开户行核实账户信息


            80010162

            付款银行名称有误


            80010163

            收款账户不支持此业务


            80010164

            收款方账户状态异常或已注销


            80010165

            银行查无此账号


            80010166

            收款账户名称和账户号码不一致


            80010181

            账户名称与银行记录不符


            80010037

            银行交易超时,请重试


            90010162

            转账未成功,请稍后重试




            OCR

            1200

            输入参数无效


            1002

            调用频率超过限制


            2003

            图片尺寸不符合要求


            2004

            图片体积不符合要求


            2005

            图片类型不符合要求


            2006

            图片损坏


            4001

            身份证服务检测失败


            4002

            银行卡服务检测失败


            5003

            营业执照服务检测失败


            2

            身份证OCR验证失败

            营业执照OCR验证失败

            银行卡OCR验证失败




            H5静默

            1002

            调用频率超过限制


            2008

            无效的视频文件


            3003

            姓名与身份证号不匹配


            3004

            身份证号无效


            3005

            第三方底图不存在


            4007

            静默活体检测失败


            4000

            提取特征失败,没有检测到图片中的人脸

             

             


            服务热线:400-666-3999

            完善信息立即免费体验