开放平台

手机端图

开放平台

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

业务文档

实名服务接口说明

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

完善信息立即免费体验