集成和说明
API文档
流程演示
技术沟通QQ群:278760159
下载文档
- 集成流程
- 证书说明
- 可投保地区
- 险种代码
- 状态码
- 错误码
一、账户申请
对接商户首先需申请账户,现统一提供测试账户、测试证书。
渠道名称:测试
渠道编号:TEST
token:3F6F94B2-315CA62A-959D73EA-4D31DAA3
根据提供渠道编号、token每次访问生产新的签名sign,生成sign方法如下
渠道名称:测试
渠道编号:TEST
token:3F6F94B2-315CA62A-959D73EA-4D31DAA3
根据提供渠道编号、token每次访问生产新的签名sign,生成sign方法如下
1 2 3 4 5 6 7 8 9 10 11 12 13 | /** *计算签名 *@param origin *@param token *@param timeStr 格式为yyyyMMddHHmmss */ public static String buildSign(String origin,String token,String timeStr){ String sign = Md5Util.md5AsLowerHex(createLinkString(origin, token, timeStr)); return sign; } public static String createLinkString(String origin,String token,String timeStr){ return token+”origin=”+ origin+”&timeStr=”+ timeStr+ token; } |
二、集成证书
1.文件说明
ca-cert.cer ca证书
TEST.jks:客户端密钥文件
TEST-cert.cer:客户端证书
以上文件暂不支持下载,如有需要请与商务联系。咨询电话:4009603676。
2. 证书相关操作
以下步骤为对证书操作:
1)加入信任库证书 cacerts_ca cacerts_client keytool -import -keystore cacerts[本地信任库路径] -alias cacerts_ca[别名] -file path[证书路径]
2)查看证书列表
keytool -list -v -keystore cacerts[本地信任库路径]
3)如需删除已加入库的证书,请执行此步骤,否则请忽略此步骤删除
keytool -delete -alias cacerts_ca[别名] -keystore cacerts[本地信任库路径]
ca-cert.cer ca证书
TEST.jks:客户端密钥文件
TEST-cert.cer:客户端证书
以上文件暂不支持下载,如有需要请与商务联系。咨询电话:4009603676。
2. 证书相关操作
以下步骤为对证书操作:
1)加入信任库证书 cacerts_ca cacerts_client keytool -import -keystore cacerts[本地信任库路径] -alias cacerts_ca[别名] -file path[证书路径]
2)查看证书列表
keytool -list -v -keystore cacerts[本地信任库路径]
3)如需删除已加入库的证书,请执行此步骤,否则请忽略此步骤删除
keytool -delete -alias cacerts_ca[别名] -keystore cacerts[本地信任库路径]
三、接口集成方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /** * 渠道sign orign以及证书相关配置信息 */ public static String SIGN = "d86f7b5cd602d3b7830a6fb81a96d6ea" ; public static String ORIGIN = "LinJuJia" ; // 客户端信任库 public static String TRUSTSTOREPATH = "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/security/cacerts" ; // 客户端信任库密码 public static String TRUSTSTOREPASSWORD = "changeit" ; // 客户端密钥库 public static String KEYSTOREPATH = "/Users/ankai/certificate/client.jks" ; // 客户端秘钥库密码 public static String KEYSTOREPASSWORD = "111111" ; /** * 获得KeyStore. * @param keyStorePath 密钥库路径 * @param password 密码 * @return 密钥库 * @throws Exception */ public static KeyStore getKeyStore(String password, String keyStorePath) throws Exception { // 实例化密钥库 KeyStore ks = KeyStore.getInstance( "JKS" ); // 获得密钥库文件流 FileInputStream is = new FileInputStream(keyStorePath); // 加载密钥库 ks.load(is, password.toCharArray()); // 关闭密钥库文件流 is.close(); return ks; } /** * 初始化HttpsURLConnection. * @param keyStorePassword 密钥库密码 * @param trustStorePassword 信任库密码 * @param keyStorePath 密钥库路径 * @param trustStorePath 信任库路径 * @throws Exception */ public static SSLContext getSSLContext(String keyStorePassword, String keyStorePath, String trustStorePassword,String trustStorePath) throws Exception { // 实例化密钥库 KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); // 获得密钥库 KeyStore keyStore = getKeyStore(keyStorePassword, keyStorePath); // 初始化密钥工厂 keyManagerFactory.init(keyStore, keyStorePassword.toCharArray()); // 实例化信任库 TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); // 获得信任库 KeyStore trustStore = getKeyStore(trustStorePassword, trustStorePath); // 初始化信任库 trustManagerFactory.init(trustStore); // 实例化SSL上下文 SSLContext ctx = SSLContext.getInstance( "TLS" ); // 初始化SSL上下文 ctx.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null ); // 获得SSLSocketFactory return ctx; } /** * 初始化HttpsURLConnection. * @param keyStorePassword 密钥库密码 * @param trustStorePassword 信任库密码 * @param keyStorePath 密钥库路径 * @param trustStorePath 信任库路径 * @throws Exception */ public static void initHttpsURLConnection(String keyStorePassword, String keyStorePath,String trustStorePassword,String trustStorePath) throws Exception { // 声明SSL上下文 SSLContext sslContext = null ; // 实例化主机名验证接口 HostnameVerifier hnv = new MyHostnameVerifier(); try { sslContext = getSSLContext(keyStorePassword, keyStorePath, trustStorePassword,trustStorePath); } catch (GeneralSecurityException e) { e.printStackTrace(); } if (sslContext != null ) { HttpsURLConnection.setDefaultSSLSocketFactory(sslContext .getSocketFactory()); } HttpsURLConnection.setDefaultHostnameVerifier(hnv); } /** * 发送请求. * @param httpsUrl 请求的地址 * @param jsonParam 请求的数据(JSON格式) */ public static String post(String httpsUrl, String jsonParam, String timeStr) { HttpsURLConnection urlCon = null ; StringBuilder resulet = new StringBuilder(); try { urlCon = (HttpsURLConnection) ( new URL(httpsUrl)).openConnection(); // 请求头参数设置 urlCon.setRequestProperty( "sign" ,SIGN); urlCon.setRequestProperty( "timeStr" ,timeStr); urlCon.setRequestProperty( "originCode" ,ORIGIN); urlCon.setDoInput( true ); urlCon.setDoOutput( true ); urlCon.setRequestMethod( "POST" ); //application/x-javascript->json对象 urlCon.setRequestProperty( "Content-Type" , "application/x-javascript; charset=utf-8" ); urlCon.setRequestProperty( "Content-Length" , String.valueOf(jsonParam.getBytes().length)); urlCon.setUseCaches( false ); urlCon.getOutputStream().write(jsonParam.getBytes( "utf-8" )); urlCon.getOutputStream().flush(); urlCon.getOutputStream().close(); BufferedReader in = new BufferedReader( new InputStreamReader(urlCon.getInputStream())); String line; while ((line = in.readLine()) != null ) { resulet.append(line); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return resulet.toString(); } public static void init(){ try { HttpsPost.initHttpsURLConnection(KEYSTOREPASSWORD, KEYSTOREPATH,TRUSTSTOREPASSWORD, TRUSTSTOREPATH); } catch (Exception e) { e.printStackTrace(); } } |
四、接口调用示例
此测试用例为调用车辆查询API接口,调用其他接口,只需更改httpsUrl请求地址,jsonParam请求参数,其中httpsUrl请按照API文档中提供请求地址传参,jsonParam请按照JSON格式传。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /** * 测试方法. * @param args * @throws Exception */ public static void main(String[] args) throws Exception { init(); long start = System.currentTimeMillis(); // 传输文本 String jsonParam = 、 "{licenseNo:'浙BXF691',frameNo:'LGXC16CG5C1018677',engineNo:'312006611',enrollDate:'2012-02-24',brandName:'比亚迪QCJ7201E轿车',owner:'丁白英'}" ; long end1 = System.currentTimeMillis(); // 发起请求 String str = DateUtil.formatDate( new Date(), "yyyyMMddHHmmss" ); String result = HttpsPost.post(httpsUrl, jsonParam,str); //返回JSON格式字符串 long end2 = System.currentTimeMillis(); System.out.println(end2 - end1); System.out.println(result); long end = System.currentTimeMillis(); System.out.println( "===耗时:" + (end-start) + " 毫秒" ); } |
1.CA证书介绍
Java EE应用中创建SSL连接和证书。SSL(Secure Sockets Layer,安全套接层)/TLS(Transport Layer Security,传输层安全)保证了客户端和web服务器的连接安全。客户端通过HTTPS连接使用web资源。为创建与客户端的安全连接,以加密格式 发送/接受信息,Java提供了完善的安全体系API类库。
• JCA(Java Cryptography Architecture,Java加密体系结构)
• JCE(Java Cryptographic Extension,Java加密扩展包)
• JSSE(Java Secured Socket Extension,Java安全套接字扩展包)
SSL连接要求web服务器持有数字证书,该证书使客户端信任该web应用的可靠性。需要发送加密信息的应用从CA(Certificate Authority,数字证书认证机构)申请数字证书。CA验证应用所有者的详细信息和其他身份信息,并签发数字证书。
在PKI(Public Key Infrastructure,公钥基础设施)体系中,数字证书由CA签发,它包括识别名(DN,Distinguished Name)/所有者名称/使用者(Subject),唯一识别证书的序列号,所有者公钥,签发日期,到期时间,CA识别名,签发机构(CA)的数字签名,签名的创建算法。CA签发的数字证书发布在CA的注册库中,这样认证用户就可以使用所有者的公钥。
• JCA(Java Cryptography Architecture,Java加密体系结构)
• JCE(Java Cryptographic Extension,Java加密扩展包)
• JSSE(Java Secured Socket Extension,Java安全套接字扩展包)
SSL连接要求web服务器持有数字证书,该证书使客户端信任该web应用的可靠性。需要发送加密信息的应用从CA(Certificate Authority,数字证书认证机构)申请数字证书。CA验证应用所有者的详细信息和其他身份信息,并签发数字证书。
在PKI(Public Key Infrastructure,公钥基础设施)体系中,数字证书由CA签发,它包括识别名(DN,Distinguished Name)/所有者名称/使用者(Subject),唯一识别证书的序列号,所有者公钥,签发日期,到期时间,CA识别名,签发机构(CA)的数字签名,签名的创建算法。CA签发的数字证书发布在CA的注册库中,这样认证用户就可以使用所有者的公钥。
2.CA证书特点
1) 数据的保密性:用于防止非法用户进入系统及合法用户对系统资源的非法使用;通过对一些敏感的数据文件进行加密来保护系统之间的数据交换,防止除接收方之外 的第三方截获数据及即使获取文件也无法得到其内容。如在电子交易中,避免遭到黑客的袭击使信用卡信息丢失的问题。
2) 数据的完整性:防止非法用户对进行交换的数据进行无意或恶意的修改、插入,防止交换的数据丢失等。
3) 数据的不可否认性:对数据和信息的来源进行验证,以确保数据由合法的用户发出;防止数据发送方在发出数据后又加以否认;同时防止接收方在收到数据后又否认曾收到过此数据及篡改数据。
2) 数据的完整性:防止非法用户对进行交换的数据进行无意或恶意的修改、插入,防止交换的数据丢失等。
3) 数据的不可否认性:对数据和信息的来源进行验证,以确保数据由合法的用户发出;防止数据发送方在发出数据后又加以否认;同时防止接收方在收到数据后又否认曾收到过此数据及篡改数据。
3.通讯过程
安全套接字层和传输层安全性是用于在客户机和服务器之间构建安全的通信通道的协议。它也用来为客户机认证服务器,以及(不太常用的)为服务器认证客户机。该协议在浏览器应用程序中比较常见,浏览器窗口底部的锁表明 SSL/TLS 有效:
1)当使用 SSL/TLS(通常使用 https:// URL)向站点进行请求时,从服务器向客户机发送一个证书。客户机使用已安装的公共 CA 证书通过这个证书验证服务器的身份,然后检查 IP 名称(机器名)与客户机连接的机器是否匹配。
2)客户机生成一些可以用来生成对话的私钥(称为会话密钥)的随机信息,然后用服务器的公钥对它加密并将它发送到服务器。服务器用自己的私钥解密消息,然后用该随机信息派生出和客户机一样的私有会话密钥。通常在这个阶段使用 RSA 公钥算法。
3)客户机和服务器使用私有会话密钥和私钥算法(通常是 RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。
此证书暂不支持下载,如有需要请与商务联系。咨询电话:4009603676。
1)当使用 SSL/TLS(通常使用 https:// URL)向站点进行请求时,从服务器向客户机发送一个证书。客户机使用已安装的公共 CA 证书通过这个证书验证服务器的身份,然后检查 IP 名称(机器名)与客户机连接的机器是否匹配。
2)客户机生成一些可以用来生成对话的私钥(称为会话密钥)的随机信息,然后用服务器的公钥对它加密并将它发送到服务器。服务器用自己的私钥解密消息,然后用该随机信息派生出和客户机一样的私有会话密钥。通常在这个阶段使用 RSA 公钥算法。
3)客户机和服务器使用私有会话密钥和私钥算法(通常是 RC4)进行通信。使用另一个密钥的消息认证码来确保消息的完整性。
此证书暂不支持下载,如有需要请与商务联系。咨询电话:4009603676。
车牌号 | 省份 |
---|
险种代码 | 险种名称 |
---|---|
BZ | 交强险 |
A | 车辆损失险 |
B | 机动车第三者责任保险 |
D3 | 机动车车上人员责任险(司机) |
D4 | 机动车车上人员责任险(乘客) |
G1 | 机动车全车盗抢险 |
F | 玻璃单独破碎险 |
L | 车身划痕损失险 |
M | 不计免赔 |
Z | 自燃损失险 |
X1 | 发动机涉水损失险 |
Q5 | 车损找不到第三方 |
核保状态码表
状态码 | 状态码说明 |
---|---|
1 | 投保成功 |
2 | 投保失败或转人工核保 |
支付状态码表
状态码 | 状态码说明 |
---|---|
0 | 未支付订单 |
1 | 支付完成订单 |
2 | 支付到保险公司 |
配送状态码表
状态码 | 状态码说明 |
---|---|
0 | 未配送 |
1 | 配送中 |
2 | 已签收 |
错误编码 | 错误原因 |
---|---|
0 | 成功 |
-1 | 返回数据{"code":"-1","msg":"错误原因"} |
- API鉴权
- 获取可报价的保险公司API
- 车辆信息查询API
- 上年止期接口
- 询价API
- 身份采集API
- 核保API
- 支付检查API
- 支付成功通知API
- 保单回调接口API
- 保单查询状态API
- 支付API
- 支付成功回调API
接口鉴权
协议:HTTP
请求方式:POST
业务参数:JSON格式,放入http请求实体中
协议参数:放入HTTP请求头
请求协议参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
sign | String | Y | 签名 |
timeStr | String | Y | 请求时间戳20150715122512(yyyyMMddHHmmss) |
originCode | String | Y | 渠道编码 |
签名计算说明
sign = MD5(originCode+token+timeStr)
timeStr = 当前请求时间戳,格式:yyyyMMddHHmmss
其中token和originCode由银保联科技提供,每个用户唯一,用于计算签名和鉴权。originCode每次接口请求时必传,token由接口调用方保存,避免外泄。
获取支持报价的保险公司列表
接口URL:https://testopen.iancar.cn/api/insurer/querySupportInsurerApi
请求协议参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
licenseNo | String | Y | 车牌号 |
请求json示例:
1 2 3 | { "licenseNo" : "鲁B12345" } |
响应参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
cityName | String | Y | 城市名称 |
shortLicenseNo | String | Y | 车牌号开头 |
supportInsureList | List | Y | 支持报价投保的保险公司 |
supportInsureList详细说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
insuCom | String | Y | 保险公司代码 |
insuName | String | Y | 保险公司简称 |
返回结果示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 示例 1 : { "code" : 0 , "data" : { "cityName" : "北京" , "shortLicenseNo" : "京" , "supportInsureList" : [ { "insuCom" : "I00001" , "insuName" : "太保财险" }, { "insuCom" : "I00003" , "insuName" : "国寿财险" }, { "insuCom" : "I00004" , "insuName" : "富德财险" }, { "insuCom" : "I00019" , "insuName" : "阳光财险" }, { "insuCom" : "I00027" , "insuName" : "人保财险" } ] }, "msg" : "成功" } 示例 2 : { "code" : 0 , "data" : { "cityName" : "青岛" , "shortLicenseNo" : "鲁B" , "supportInsureList" : [ { "insuCom" : "I00002" , "insuName" : "英大财险" }, { "insuCom" : "I00019" , "insuName" : "阳光财险" } ] }, "msg" : "成功" } |
车辆信息查询接口
接口URL:https://testopen.iancar.cn/api/vehicle/queryVehicleInfoApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
licenseNo | String | Y | 车牌号 |
frameNo | String | Y | 车架号 |
engineNo | String | Y | 发动机号 |
enrollDate | String | N | 初登日期,非北京地区必传 |
brandName | String | N | 厂牌型号,非北京地区必传 |
owner | String | N | 车主姓名,非北京地区必传 |
请求json示例:
1 2 3 4 5 6 7 8 | { "licenseNo" : "XXXXXX" , "frameNo" : "XXXXXX1231211" , "engineNo" : "XXXXXXFS123123" , "enrollDate" : "2015-03-13" , "brandName" : "XXXXXX" , "owner" : "XX" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
vehicleInfoList | List | 返回车辆列表 |
车辆列表vehicleInfoList返回参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
marketDate | String | 出厂日期 |
purchasePrice | String | 新车购置价 |
vehicleTypeDesc | String | 车辆类型描述 |
exhaustCapacity | String | 排量 |
brandName | String | 厂牌型号 |
licenseNo | String | 车牌号 |
owner | String | 车主姓名(北京地区可以返回车主真实姓名) |
uniqueVehicleCode | String | 预留字段 |
返回结果示例:
1 2 3 4 5 6 7 8 9 10 11 | { "vehicleInfoList" :[ { "brandName" : " XXXXXX " , "marketDate" : "2013" , "purchasePrice" : "3201.01" , "vehicleTypeDesc" : "XXXXXXFS123123" , "exhaustCapacity" : "1.5L" , "licenseNo" : "XX" , "owner" : "XX" , "uniqueVehicleCode" : "XX" }] } |
上年止期接口
接口URL:https://testopen.iancar.cn/api/endDate/endDateApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
licenseNo | String | Y | 车牌号 |
engineNo | String | Y | 发动机号 |
frameNo | String | Y | 车架号 |
enrollDate | String | Y | 初登日期 |
uniqueVehicleCode | String | Y | 预留字段 |
请求json示例:
1 2 3 4 5 6 7 | { "engineNo" : "312008888" , "enrollDate" : "2012-02-24" , "frameNo" : "LGXCXXXXXXXXXXXX" , "licenseNo" : "浙BXF888" , "uniqueVehicleCode" : "XXXXXX" } |
参数名称 | 参数类型 | 说明 |
---|---|---|
tciLastEndDate | String | 交强险上年止期 |
vciLastEndDate | String | 商业险上年止期 |
返回结果示例:
1 2 3 4 5 6 7 8 | { "code" : 0, "msg" : "成功" , "data" : { "tciLastEndDate" : "2016-11-05" , "vciLastEndDate" : "2016-11-05" } } |
询价接口
接口URL:https://testopen.iancar.cn/api/quote/quotePriceApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
licenseNo | String | Y | 车牌号 |
engineNo | String | Y | 发动机号 |
frameNo | String | Y | 车架号 |
enrollDate | String | Y | 初登日期 |
owner | String | Y | 车主姓名 |
insuCom | String | Y | 保险公司编号 |
purchasePrice | String | N | 新车购置价(单位:元) |
coverageDataDtoList | List | Y | 险种信息 |
tciStartDate | String | N | 交强险起保日期 |
vciStartDate | String | N | 商业险起保日期 |
marketDate | String | N | 年款 |
uniqueVehicleCode | String | Y | 预留字段 |
coverageDataDtoList详细说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
coverageCode | String | Y | 险种编号 |
isDeductibleChoice | int | N | 不计免赔选项。该选项必须与不计免赔险种同时出现。1投保不计免赔,0 不投保不计免赔 |
amount | String | N | 保额。三者险,司机责任险,乘客责任险,划痕险必传。 |
unitAmount | String | N | 单位保额。司机责任险,乘客责任险必传。 |
modelCode | String | N | 险种模式代码,选玻璃险时必传。 1:国产,2:进口。 |
请求json示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { "coverageDataDtoList" : [ "amount" : "300000" , { "coverageCode" : "A" }, { "coverageCode" : "B" , "amount" : "300000" } ], "engineNo" : "312008888" , "enrollDate" : "2012-02-24" , "frameNo" : "LGXCXXXXXXXXXXXX" , "insuCom" : "I00002" , "licenseNo" : "浙 BXF888" , "tciStartDate" : "2015-02-12" , "vciStartDate" : "2015-02-12" , "owner" : "XXX" , "purchasePrice" : "58500" , "marketDate" : "2013" , "uniqueVehicleCode" : "XXXXXX" } |
参数名称 | 参数类型 | 说明 |
---|---|---|
insuCom | String | 投保保险公司 |
quoteNo | String | 询价单号 |
licenseNo | String | 车牌号 |
uintAmount | String | 单位保额 |
premium | String | 折后总保费 |
vciPremium | String | 商业险折后保费 |
tciPremium | String | 交强险折后保费 |
sumTravelTax | String | 车船税 |
coverageList | List | 险种信息 |
luborPremium | String | 萝卜总保费 |
险种coverageList返回信息
参数名称 | 参数类型 | 说明 |
---|---|---|
coverageCode | String | 险种编号 |
isDeductibleChoice | int | 不计免赔选项 |
amount | String | 保额 |
premium | String | 折后总保费 |
isApprove | String | 预核保是否通过,核保通过是1 不通过是0 |
reason | String | 核保未通过原因 |
返回结果示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | { "code" : 0, "msg" : "成功" , "data" : { "coverageList" : [ { "amount" : "63000.0" , "unitAmount" : "0.0" , "coverageCode" : "A" , "isApprove" : 1, "isDeductibleChoice" : 0, "premium" : "1199.79" , "reason" : "" }, { "amount" : "300000.0" , "coverageCode" : "B" , "unitAmount" : "0.0" , "isApprove" : 1, "isDeductibleChoice" : 0, "premium" : "1467.0" , "reason" : "" }], "insuCom" : "I00002" , "licenseNo" : "浙 BXF888" , "premium" : "2666.79" , "quoteNo" : "SNAQ2016050416244030342318" , "sumTravelTax" : "0.0" , "tciPremium" : "0.0" , "vciPremium" : "2666.79" } } |
身份采集接口
接口URL:https://testopen.iancar.cn/api/identityCollect/identityCollectApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
insuCom | String | Y | 保险公司编号 |
applicantCertNo | String | Y | 投保人身份号 |
applicantName | String | Y | 投保人姓名 |
applicantMobile | String | Y | 投保人手机号 |
ownerName | String | Y | 车主姓名 |
ownerCertNo | String | Y | 车主身份证号 |
insuredName | String | Y | 被保人姓名 |
insuredMobile | String | Y | 被保人电话 |
insuredCertNo | String | Y | 被保人身份证号 |
receiveMobile | String | Y | 接收验证码手机 |
quoteNo | String | Y | 询价单号 |
请求json示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | { "applicantCertNo" : "xxxxxxxxxxx" , "applicantName" : "xxxxxx" , "applicantMobile" : "xxxxxxxxxxx" , "ownerName" : "xxxxxxxxxxx" , "ownerCertNo" : "xxxxxxxxxxx" , "insuredName" : "xxxxxxxxxxx" , "insuredMobile" : "xxxxxxxxxxx" , "insuredCertNo" : "xxxxxxxxxxx" , "receiveMobile" : "xxxxxxxxxxx" , "quoteNo" : "xxxxxxxxxxx" , "insuCom" : "xxxx" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
insuCom | String | 投保保险公司 |
quoteNo | String | 平台报价编号 |
originDiscount | String | 渠道折扣 |
licenseNo | String | 车牌号 |
premium | String | 折后总保费 |
vciPremium | String | 商业险折后保费 |
tciPremium | String | 交强险折后保费 |
sumTravelTax | String | 车船税 |
coverages | List | 险种信息 |
orderSn | String | 平台订单号 |
luborPremium | String | 萝卜总保费 |
险种coverages返回信息
参数名称 | 参数类型 | 说明 |
---|---|---|
coverageCode | String | 险种编号 |
isDeductibleChoice | int | 不计免赔选项 |
amount | String | 保额 |
premium | String | 折后总保费 |
unitAmount | String | 单位保额 |
isApprove | String | 预核保是否通过 |
reason | String | 核保未通过原因 |
返回结果示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | { "code" : 0, "msg" : "成功" , "data" : { "coverages" : [ { "amount" : "63000.0" , "coverageCode" : "A" , "isApprove" : 1, "unitAmount" : "0" , "isDeductibleChoice" : 0, "premium" : "1199.79" , "reason" : "" }, { "amount" : "300000.0" , "coverageCode" : "B" , "isApprove" : 1, "isDeductibleChoice" : 0, "premium" : "1467.0" , "unitAmount" : "0" , "reason" : "" }, { "amount" : "" , "coverageCode" : "BZ" , "isApprove" : 0, "isDeductibleChoice" : 0, "premium" : "" , "unitAmount" : "0" , "reason" : "交强险投保日距离保单起保日大于90天, 无法投保。" } ], "insuCom" : "I00002" , "premium" : "2666.79" , "quoteNo" : "SNAQ2016050416244030342318" , "sumTravelTax" : "0.0" , "tciPremium" : "0.0" , "vciPremium" : "2666.79" , "luborPremium" : "2364.79" , "licenseNo" : "2666.79" , "orderSn" : "xxxxxx" , "originDiscount" : "0.0" } } |
核保接口
接口URL:https://testopen.iancar.cn/api/insureConfirm/insureConfirmApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
orderSn | String | Y | 平台订单号 |
verificationCode | String | N | 短信验证码(北京必传) |
postName | String | Y | 配送人姓名 |
postMobile | String | Y | 配送人手机号 |
postAddr | String | Y | 配送地址 |
请求json示例:
1 2 3 4 5 6 7 | { "orderSn" : " 1605270021872671" , "verificationCode" : "123412" , "postAddr" : "北京市海淀区" , "postMobile" : "xxxxxxxxxx" , "postName" : "xxxx" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
innerPlcyNo | String | 银保联保单号 |
insuCom | String | 保险公司编号 |
vciProposalNo | String | 商业险投保单号 |
tciProposalNo | String | 交强险投保单号 |
返回结果示例:
1 2 3 4 5 6 7 8 9 | { "msg" : "成功" , "code" : 0, "data" : { "innerPlcyNo" : "SNAP2016050418503397677321" , "insuCom" : "I00002" , "vciProposalNo" : "T110905082016000574" , "tciProposalNo" : "" , } } |
支付检查接口
接口URL:https://testopen.iancar.cn/api/payCheck/payCheckApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
innerPlcyNo | String | Y | 银保联保单号 |
请求json示例:
1 2 3 | { "innerPlcyNo" : " SNAP2016050418503397677321" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
msg | String | 信息 |
返回结果示例:
1 2 3 4 | { "code" : 0, "msg" : "订单号为:XXXX 的订单可支付!" } |
支付回调接口
接口URL: https://testopen.iancar.cn/api/notifyPaySuc/notifyPaySucApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
innerPlcyNo | String | Y | 银保联保单号 |
amount | String | Y | 支付金额 |
payStatus | int | Y | 支付状态(1成功 0失败) |
请求json示例:
1 2 3 | { "innerPlcyNo" : "123456789" , "amount" : "3290.80" , "payStatus" : "1" , } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
code | int | 状态码 |
msg | String | 信息 |
返回结果示例:
1 2 3 4 | { "code" : 0 , "msg" : "成功" } |
保单回调接口
请求参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
innerPlcyNo | String | 银保联保单号 |
tciPolicyNo | String | 交强险保单号 |
vciPolicyNo | String | 商业险保单号 |
payStatus | String | 支付状态 |
请求json示例:
1 2 3 4 5 6 | { "innerPlcyNo" : "123456789" , "tciPolicyNo" : "123456789" , "vciPolicyNo" : "123456789" , "payStatus" : "1" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
code | int | 状态码 |
msg | String | 信息 |
返回结果示例:
1 2 3 4 | { "code" : 0 , "msg" : "成功" } |
保单状态查询接口
接口URL:https://testopen.iancar.cn/api/policyStatus/queryPolicyStatusApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
innerPlcyNo | String | Y | 银保联保单号 |
请求json示例:
1 2 3 | { "innerPlcyNo" : "123456789" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
insuCom | int | 保险公司 |
premium | String | 总保费 |
vciPremium | String | 商业险保费,若报价没有商业险则为空 |
tciPremium | String | 交强险保费,若报价没有交强险险则为空 |
sumTravelTax | String | 车船税,险种中有交强险时必传 |
ownerName | String | 车主姓名 |
appName | String | 投保人姓名 |
licenseNo | String | 车牌号 |
policyStatus | String | 保单状态,详细参考保单状态附表 |
payStatus | String | 支付状态 |
shipStatus | String | 配送状态 |
vciPolicyNo | String | 商业险保单号 |
tciPolicyNo | String | 交强险保单号 |
返回结果示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { "code" : 0, "msg" : "成功" , "data" : { "insuCom" : "I00002" , "premium" : "8902.84" , "vciPremium" : "8902.84" , "tciPremium" : "0.0" , "sumTravelTax" : "0.0" , "ownerName" : "张伟" , "appName" : "张伟" , "licenseNo" : "京 xxxxx" , "policyStatus " : "1" , "payStatus" : "1" , "shipStatus" : "1" , "vciPolicyNo" : "XXXXX" , "tciPolicyNo" : "XXXXX" }, } |
支付接口
接口URL:https://testopen.iancar.cn/api/pay/payApi
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
innerPlcyNo | String | Y | 银保联保单号 |
callBackUrl | String | Y | 支付宝支付成功跳转页面 |
preNotifyUrl | String | Y | 支付宝返回按钮所在链接 |
ip | String | Y | 客户访问IP |
chargeComCode | String | Y | 支付方式(目前只支持支付宝ZFB) |
tradeType | String | N | 预留 |
sumAmount | String | Y | 支付金额 |
请求json示例:
1 2 3 4 5 6 7 8 9 | { "innerPlcyNo" : "123456789" , "ip" : "10.10.10.10" , "chargeComCode" : "ZFB" , "tradeType" : "" , "sumAmount" : "5000.36" } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
payUrl | String | 支付宝支付链接 |
返回结果示例:
1 2 3 4 5 6 7 | { "data" : { "payUrl" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }, "code" : 0, "msg" : "成功" } |
支付成功回调接口
请求参数说明
参数名称 | 参数类型 | 是否必传 | 说明 |
---|---|---|---|
innerPlcyNo | String | Y | 银保联保单号 |
sumAmount | String | Y | 支付金额 |
请求json示例:
1 2 3 4 | { "innerPlcyNo" : "123456789" , "sumAmount" : "5000.24" , } |
响应参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
code | int | 状态码 |
msg | String | 信息 |
返回结果示例:
1 2 3 4 | { "code" : 0, "msg" : "success" } |