金融场景 API
1. 背景说明
在 API 列表基础上,FinClip围绕金融特色场景,提供了如下API接口供小程序使用。
需声明的是,使用以下API时,请确保宿主App已经集成对应能力且与FinClip SDK实现联调的第三方功能SDK,否则小程序调用将无法实现相关功能。
具体来说,此类场景包括:
- 如果App集成了FinClip SDK + 已与FinClip 实现联调的SDK,则此时小程序可以直接调用API,并实现相关功能目标
- 如果App仅集成了FinClip SDK、未集成与FinClip 联调成功的功能SDK,则此时小程序调用API无响应,但不会影响小程序自身业务
- 如果App集成了FinClip SDK+未与FinClip 联调的SDK,但宿主App根据API内容实现了自定义注册(iOS自定义注册API | Android自定义注册API),则小程序可调用相关API实现指定功能
综合来说,我们建议:
- 对于小程序开发者,应直接在业务代码中使用本页所述API;通过规范API调用,可最大化帮助开发者减少定制开发的工作量
- 对于宿主App,只需根据使用场景集成FinClip SDK + 其他指定功能SDK,正常情况下无需关注自定义注册API;通过本规范,宿主App可最大化减少集成、开发、联调工作量
- 对于第三方功能SDK,可与FinClip联系后,尽快参考本协议、完成双方联调,以便利其他客户接入
2. OCR卡片识别(finCardOcr)
接口名称: finCardOcr
接口依赖:无(使用任意版本FinClip SDK 均可调用)
请求参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
type | String | 非空 | "BankCard":银行卡识别 "IDCard":身份证识别 "IDCardCheck":身份证照片质检 "BusiCert":企业营业执照识别 |
imagePath | String | 照片文件所在路径 小程序通过chooseImage提取该字段即可 IOS/Android则传递文件绝对路径 其中IOS可将UIImage文件写入临时文件简单解决文件访问问题 |
返回结果
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
type | String | 非空 | "BankCard":银行卡识别 "IDCard":身份证识别 "IDCardCheck":身份证照片质检 "BusiCert":企业营业执照识别 |
errorCode | Int | 0 | 识别结果,0表示成功 |
description | String | 识别结果描述 | |
recogResult | Object | 识别结果{"cardNo":卡号,......} |
recogResult字段说明
身份证正面
名称 | 说明 |
---|---|
face | 0:正面, 1:反面 |
nation | 民族(仅正面有) |
gender | 性别(仅正面有) |
birthday | 生日(仅正面有) |
address | 地址(仅正面有) |
name | 姓名(仅正面有) |
idNo | 身份证号码(仅正面有) |
startDate | 有效期起始日期(仅反面有) |
endDate | 有效期截止日期(仅反面有) |
signOrg | 签发机关(仅反面有) |
身份证质检
名称 | 说明 |
---|---|
risk | 图片风险: 0=无 1=复印件 2=拍屏 3=假证件 4=有水印 5=遮挡 6=切边 7=卡变形 8=有光斑 |
银行卡
名称 | 说明 |
---|---|
cardNo | 卡号 |
bankName | 银行 |
bankId | 银行标识id |
cardType | 卡类型:借记卡 准贷记卡 |
营业执照
名称 | 说明 |
---|---|
regOrg | 登记机关 |
busiScrope | 经营范围 |
certNo | 统一社会信用代码/营业执照号 |
regDate | 登记日期 |
capital | 注册资本 |
address | 住所 |
expDate | 营业期限 |
represent | 法人代表 |
certType | 营业执照类型:正本、副本 |
corpName | 企业名称 |
corpType | 企业类型 |
foundDate | 成立日期 |
3. 人脸联网身份核验(finFaceAuth)
接口名称: finFaceAuth
接口依赖:无(使用任意版本FinClip SDK 均可调用)
请求参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
idNo | String | 身份证号码 | |
name | String | 姓名 | |
imagePath | String | 照片文件所在路径 |
返回结果
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
errorCode | Int | 0 | 识别结果,0表示成功 |
description | String | 识别结果描述 | |
score | double | 0-1 | 相似度 |
4. 活体检测(finLivenessCheck)
接口名称: finLivenessCheck
接口依赖:无(使用任意版本FinClip SDK 均可调用)
请求参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
无 |
返回结果
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
resultType | String | "success" 成功、"back"用户点击返回取消活体检测 | |
faceImgStr | String | 活体检测返回图片,Base64后的byte数组。仅成功返回 |
5. 打开三方app(finOpenOtherApp)
接口名称: finOpenOtherApp
接口依赖:无(使用任意版本FinClip SDK 均可调用)
请求参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
package | String | App包名,Android用于判断App是否已安装,仅Android | |
url | String | App的scheme加url,iOS用于判断App是否已安装且跳转用;Android用于跳转用 | |
downloadUrl | String | 下载App地址 | |
alertMsg | String | 下载提示框提示语,如不传则不弹提示框直接跳转页面 |
6. 双向视频认证(finOpenWitnessVideo)
接口名称:finOpenWitnessVideo
接口依赖:无(使用任意版本FinClip SDK 均可调用)
请求参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
videoType | String | 视频服务类型 | |
videoIp | String | 视频服务ip | |
videoPort | String | 视频服务端口 | |
loginName | String | 登录名 | |
loginPwd | String | 登录密码(可选) | |
roomId | String | 房间id | |
roomName | String | 房间名 | |
roomPwd | String | 房间密码(可选) | |
appId | String | anychat集群appId |
返回结果
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
videoFlag | String | 非空 | 返回标志 0,成功,1,失败,2,驳回 |
rejectReason | String | 驳回理由 | |
message | String | 详细信息 |
7. 单向视频录制小程序实现
接口依赖:本组件无需依赖凡泰 FinClip SDK 以外的第三方 SDK
小程序单向录制组件使用
1、下载录制视频组件实例代码包
录制 demo v1.0.0 (opens new window)
组件代码在根目录的 components 内,也可直接用 ide 工具打开录制 demo 查看效果
2、在需要使用的页面或组件的 json 文件内,引入录制组件
{
"usingComponents": {
"video-recognition": "../../components/video-recognition/index"
}
}
3、在页面或组件的 wxml 内,使用组件
<view style="width: 100vw;height: 100vh;">
<video-recognition recordTime="{{recordTime}}"
top="{{top}}"
stepList="{{stepList}}"
buttonStyle="{{buttonStyle}}"
mask="../../assets/img_mask_person@3x.png"
resolution="low"
bind:onRecordReady="onRecordReady"
bind:onRecordStart="onRecordStart"
bind:onRecordEnd="onRecordEnd"
bind:onRecordError="onRecordError">
</video-recognition>
</view>
注意
录制组件外层需要声明宽高尺寸,录制组件内会按 width: 100%; height: 100% 展示
4、组件参数一览
名称 | 类型 | 是否必须 | 默认值 | 备注 |
---|---|---|---|---|
resolution | String | 否 | medium | 分辨率,可选值:low、medium、high 只在初始化时有效,不能动态变更 |
mask | String | 否 | - | 取景区域的遮罩资源路径,建议使用小程序内资源的相对路径,https 地址会有加载耗时,遮罩会按 width 100% height 100% 的尺寸放在 camera 上,注意和组件尺寸相匹配 |
recordTime | Number | 否 | 30000 | 录制时间,单位为毫秒 |
top | Number | 否 | 20 | 单位 rpx 文本提示距顶部的距离,也可修改 video-recognition 组件内的 wxss,自定义文本的position |
stepList | Array<Object> | 否 | - | 每⼀步的语⾳和提示⽂案配置,最大支持长度为 3,数据元素结构可参考表格后的说明 |
buttonStyle | Object | 否 | - | 控制录制按钮的样式,可对按钮进行位置上的微调,目前支持以下字段:width、height、left、top、bottom、right,只在初始化时有效,不能动态变更 |
onRecordReady | EventHandler | 否 | - | 通过 onRecordReady 绑定,ready 前会进行一些异步资源的下载,资源准备好后触发,可用于在使用组件的 page 页面判断录制组件是否准备完毕,从而控制 loading 和组件展示 |
onRecordStart | EventHandler | 否 | - | 通过 bind:onRecordStart 绑定,录制开始时触发 |
onRecordEnd | EventHandler | 否 | - | 通过 bind:onRecordEnd 绑定,录制结束时触发,回调方法参数 res,res.tempVideoPath 即为录制视频的本地文件地址 |
onRecordError | EventHandler | 否 | - | 通过 bind:onRecordError 绑定,录制报错时触发,回调方法参数 res,res.errMsg 为发生错误时的报错信息 |
stepList 参数说明
每⼀步的语⾳和提示⽂案配置,最大支持长度为 3
数据元素结构如下:
{
"audioSrc": "https://xxxxx.mp3",
"showTime": 0,
"textList": []
}
audioSrc - 音频链接,建议使用 https 链接,组件 attached 会下载音频资源,若下载失败会执行 error 回调,报资源加错错误
注意
mp3 的域名需在管理后台添加到白名单内,否则会下载失败
showTime - 文本提示和音频的展示时间,毫秒数,0 表示初始展示,2000 表示录制开始 2s 时展示
textList - 文本提示,数组类型
textList 参数对象如下:
{
"text": '请用普通话大声朗读'
}
text - 文本内容
可添加 width|height|padding|margin|color|fontSize|fontWeight|textAlign 等样式属性简单控制文本样式:
{
"text": '文本',
"color": 'red',
"fontWeight": 'bold',
"margin": '0 20rpx'
}
注意
一个 textList 子元素,展示时会以单行不换行展示,可按需拆分成多行多个子元素
另外,如果单行内容内需要个别词语高亮展示,text 属性可以传入数组,属性与上述对象参数一致,如下:
{
"text": [{
"text": '文本'
}, {
"text": '高亮文本',
"color": 'red',
"fontWeight": 'bold',
"margin": '0 20rpx'
}, {
"text": '文本'
}]
}
stepList 只在初始化时有效,不能动态变更
本组件使用小程序原生语法开发,除文档描述的参数外,也可自行修改组件内的逻辑,满足不同的业务需求。