更新记录

1.0.0(2019-12-16)

1.因项目需要根据腾讯云人脸核身App SDK开发的人脸核身的插件 2.实现输入姓名,身份证号调用腾讯云插件进行人脸核验,结束返回核验结果(腾讯接口返回数据无修改) 3.原生三种核验方式:动作活体,数字活体,光线活体 4.免费使用无任何限制,但腾讯人脸核验需要申请账号 5.后期将继续开发OCR相关 6.目前只支持安卓,IOS后续有时间再开发


平台兼容性

腾讯云人脸核验插件

1.nativeplugins/Tencent-Face/android 目录下tencentfaceverify-release.aar是对应插件

2.WbCloudFaceLiveSdk-v3.0.10-7e6b5f1.aar,WbCloudNormal-v4.0.5-4912a99.aar 是调用腾讯的两个插件

3.因工作繁忙目前该程序金对安卓做了适配,IOS暂未开发,后期将继续开发。谢谢

main.vue 为示意代码 需要申请腾讯云账号

Api参数

参数 说明
appId 腾讯云账号申请的ID
keyLicence 腾讯云分配的keyLicence (线下和腾讯对接获取)
userid 用户唯一标识 自己分配
nonce 必须是32位随机数
name 姓名
cardnum 身份证号
facetype 三种活体核身模式参数 data_mode_act_desense 动作活体 data_mode_num 数字活体 data_mode_reflect_desense 光线活体

页面

  <template>
    <view class="content">
        <view class="input-group">
            <view class="input-row border">
                <text class="title">姓名:</text>
                <m-input class="m-input" type="text" clearable focus v-model="name" placeholder="请输入姓名"></m-input>
            </view>
            <view class="input-row">
                <text class="title">身份证号:</text>
                <m-input type="text" clearable focus v-model="cardnum" placeholder="请输入身份证号"></m-input>
            </view>
        </view>
        <view class="btn-row">
            <button type="primary" class="primary" @click="goFaceVerify">启动核验</button>
        </view>
    </view>
</template>

<script>
    import {
        mapState,
        mapMutations
    } from 'vuex'
    import mInput from '../../components/m-input.vue'

    export default {
        components: {
            mInput
        },
        data() {
            return {
                name: '',
                cardnum: '',
                appId:'TIDA0001',   // appId 腾讯云注册分配
                                    //keyLicence 腾讯云注册分配
                keyLicence:'NwKivlx4CuaA0r1Ri/x7VGugcN5bfIUm9Q0ZfUHmr2R6mjwuZUGRUNL+ydQhfRjaCl4s+YdUnVPxGGBfxCeSYpHk0AZIRUHUy5TETKUlSKrolSR+svPde8ZImxQhXIK5Tyr+zweHGZpPzOsuYglLuPeECYNGtDfw+4pTEIXFkwBbUMuoAt/RcLBxGpjB8Ol5meMP/8A10YfWJwPvuhVttMxXX7fIqPVxrC7bMRG8Y0AXUJQtJmFR8u35BvCY1YZYrQ3puOHTVvAdOJH53+w+kKVt1sMzVaa/1qnjgNHtC8DkHJ6+FJx5nOn2Etah7oWKE4dQrd+HOjXQeWFRdb9/ww==',
                userId:'',
                nonce:'',
                sign:'',
                //data_mode_act_desense     动作活体
                //data_mode_num             数字活体
                //data_mode_reflect_desense 光线活体
                facetype:'data_mode_num'                
            }
        },
        methods: {
            goFaceVerify(){
                try{                
                    if (this.name === '' || this.cardnum === '') {
                        uni.showModal({
                            content: '输入姓名和身份证号',
                            showCancel: false
                        });
                        return;
                    }
                    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(this.cardnum))) {
                        uni.showToast({
                            title: '身份证号校验失败!',
                            icon: 'none'
                        });
                        return
                    }                   
                    this.userId= this.guid();
                    this.nonce='52014832029547845621032584562012'; 
                    //测试签名请使用这个地址拼接获取 直接浏览器中获取
                    //var url='https://ida.webank.com/ems-partner/cert/signature?appid=' + this.appId + '&nonce=' + this.nonce + '&userid=' + this.userId;
                    //如   https://ida.webank.com/ems-partner/cert/signature?appid=TIDA0001&nonce=52014832029547845621032584562012&userid=415469909ac54e48be47a1eb00e8e337
                    //结果 {"code":null,"msg":null,"sign":"300392346177BC1BC97B94F39040D16263FE6636","faceId":null}
                    this.sign="300392346177BC1BC97B94F39040D16263FE6636";
                    //引入插件
                    const tencentFace = uni.requireNativePlugin('Tencent-Face');
                    tencentFace.goFaceVerify({
                        sign:   this.sign,
                        appid:  this.appId,
                        userid: this.userId,
                        nonce:  this.nonce,
                        name:   this.name,
                        cardnum:    this.cardnum,
                        facetype:   this.facetype ,
                        keyLicence: this.keyLicence
                    }, data => {                                
                        if(data.result.success === true) {
                            uni.showModal({
                                content: '核验通过',
                                showCancel: false
                            });
                        }
                        else {
                            uni.showModal({
                                content: '核验不通过',
                                showCancel: false
                            });
                        }                               
                    });
                }catch(e){
                    //TODO handle the exception
                    uni.showModal({
                        content: e.message,
                        showCancel: false
                    });
                }

            },
             guid(){
                return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
                    var r = Math.random() * 16 | 0,
                        v = c == 'x' ? r : (r & 0x3 | 0x8);
                    return v.toString(16);
                });
            }
        }
    }
</script>

<style>
    .action-row {
        display: flex;
        flex-direction: row;
        justify-content: center;
    }

    .action-row navigator {
        color: #007aff;
        padding: 0 20upx;
    }

    .oauth-row {
        display: flex;
        flex-direction: row;
        justify-content: center;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
    }

    .oauth-image {
        width: 100upx;
        height: 100upx;
        border: 1upx solid #dddddd;
        border-radius: 100upx;
        margin: 0 40upx;
        background-color: #ffffff;
    }

    .oauth-image image {
        width: 60upx;
        height: 60upx;
        margin: 20upx;
    }
</style>

Java 后台 Api 开发参考

根据腾讯接口开发

获取 NONCE ticket https://cloud.tencent.com/document/product/1007/37306

生成签名 https://cloud.tencent.com/document/product/1007/35866

隐私、权限声明

1. 本插件需要申请的系统权限列表:

摄像头,录音,相册

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问