uni-app实现安卓原生态调用身份证阅读器读卡库读身份证和社保卡、银行卡、IC卡等功能

DONSEE系列多功能读写器Android Uniapp API接口规范V1.0.0

本项目Uniapp调用了身份证读卡器的库文件:DonseeDeviceLib-debug.aar,该库放到nativeplugins\donsee-card\android,然后会自动加载。SDK会自动检查是否拥有USB设备权限,如没有权限,会自动进行申请,如果您的安卓设备是定制设备,遇到找不到设备时,请询问设备定制方是否开放了USB接口的系统层权限。

html 复制代码
<!--
//========================================================================
// Uniapp Android 端,调用.aar原生态读卡库
// 版权所有 广东东信智能科技有限公司
// 未经授权不允许对程序代码以任何形式任何目的的再发布
// 官方网站:http://www.eastcoms.com/
// 前端修改日期:2023.12.07
// =======================================================================
-->

<template>
	<view class="content">
		<text class="title">{{ title }}</text>
		<view>
	
			     <image
			          v-bind:src="imageUlr"
			         style="width:204rpx; height: 256rpx;" 
					  >
			        </image>
			<view
			class="resultInfor"
			style="white-space: pre-wrap;"
			>{{ result }}</view>
			
			<button type="primary" @click="open">打开设备</button>
			<button type="primary" @click="beep">蜂鸣器</button>
			<button type="primary" @click="readIDCard">读取身份证</button>
			<button type="primary" @click="readSSCard">读取社保卡</button>
			<button type="primary" @click="getBankCardNo">读取银行卡</button>
			<button type="primary" @click="readICUid">IC卡卡号</button>
			<button type="primary" @click="close">关闭设备</button>
			<!-- <view class="">
				{{result1}}
			</view> -->
			
		</view>
	</view>
</template>

<script>
const  DonseeDevice = uni.requireNativePlugin('Card-Module');
  
export default {
	data() {
		return {
			title: '欢迎使用广东东信智能科技有限公司SDK',
			result: '请先打开读卡设备',
			result1:0,
			imageUlr: '',
		};
		
		
	},
	onLoad() {},
	methods: {
				
		open(){
			
			DonseeDevice.Donsee_Open(data => {
					if(data.result == 0){
						this.result = "打开设备成功"
					}else if(data.result == -2){
						this.result = "打开设备失败:未发现读卡器";
					}else if(data.result == -4){
						this.result = "打开设备失败:未获取usb权限";
					}else {
						this.result = "打开设备失败:"+data.result;
					}
		
				});

		},
		beep(){
			let ret =  DonseeDevice.Donsee_Beep();
			if(ret == 0){
				this.result ="蜂鸣成功";
			}else{
				this.result ="蜂鸣失败 "+ret;
			}
			
		
		},
		close(){
			
		let ret =  DonseeDevice.Donsee_Close();
		if(ret == 0){
			this.result ="关闭设备成功";
		}else{
			this.result ="关闭设备失败 "+ret;
		}
		
		},
		readIDCard(){
			
			let idInfo = DonseeDevice.Donsee_ReadIDCard(1);  //1:文字+照片  2:文字+照片+指纹
		
			if(idInfo.code == 0){
					this.result = "中文姓名:"+ idInfo.name+"\n"
                    +"英文姓名:"+ idInfo.enFullName+"\n"//如果是Y,则需要和英文姓名备用reserveName组合才是完整姓名
                    +"性    别:"+ idInfo.sex+"\n"
                    +"民    族:"+ idInfo.nation+"\n"
                    +"出身日期:"+ idInfo.birthDate+"\n"
                    +"家庭住址:"+ idInfo.address+"\n"
                    +"身份证号:"+ idInfo.idNO+"\n"
                    +"签发单位:"+ idInfo.organs+"\n"
                    +"开始有效期限:"+ idInfo.issueDate+"\n"
                    +"结束有效期限:"+ idInfo.expireDate+"\n"
                    +"证件类别:"+ idInfo.certType+"\n"  //0 I J Y四种证件类型
                    +"证件版本:"+ idInfo.certVersion+"\n"
					+"英文姓名备用:"+ idInfo.reserveName+"\n"  
					+"既往版本号码:"+ idInfo.previousVersionNO+"\n"
                    +"通行证号:"+ idInfo.passNu+"\n"
                    +"签发数次:"+ idInfo.signCount+"\n"
					//+"指纹数据:"+ idInfo.figData+"\n"
					this.imageUlr = "data:image/png;base64,"+idInfo.headStr;  //照片base64数据
			}else{
				this.result = idInfo.code;	
			}
		
		},
		
		readSSCard(){
			
			let ssCardInfor = DonseeDevice.Donsee_ReadSSCard();
		
			if(ssCardInfor.code == 0){
					
					this.result = "姓    名:"+ ssCardInfor.name+"\n"
                    +"性    别:"+ ssCardInfor.sex+"\n"
                    +"民    族:"+ ssCardInfor.nation+"\n"
                    +"出身日期:"+ ssCardInfor.birthDate+"\n"
                    +"城市代码:"+ ssCardInfor.city+"\n"
                    +"身份证号:"+ ssCardInfor.idNO+"\n"
                    +"社保卡号:"+ ssCardInfor.cardNO+"\n"
                    +"开始有效期限:"+ ssCardInfor.issueDate+"\n"
                    +"结束有效期限:"+ ssCardInfor.expireDate+"\n"
                    +"社保版本:"+ ssCardInfor.fullVersion+"\n"
					
			}else{
				this.result = ssCardInfor.code;	
			}
		
		},
		
		getBankCardNo(){
			
			let cardInfor = DonseeDevice.Donsee_GetBankCardNo();
		
			if(cardInfor.code == 0){
					this.result = "卡号:"+ cardInfor.cardNumber
					
			}else{
				this.result = cardInfor.code;	
			}
		
		},
		
		readICUid(){
			let cardInfor = DonseeDevice.Donsee_ReadICUid();
		
			if(cardInfor.code == 0){
					this.result = "卡号:"+ cardInfor.cardNumber
					
			}else{
				this.result = cardInfor.code;	
			}
		
		}
	}
};
</script>

<style>
.content {
	text-align: left;
	height: 400upx;
}
.resultInfor {
	text-align: left;
}

.title {
	font-size: 36upx;
	color: #8f8f94;
}

button {
	margin-top: 20upx;
	margin-bottom: 20upx;
}

.button-sp-area {
	margin: 0 auto;
	width: 60%;
}

.content {
	text-align: center;
	height: 400upx;
}

.wrapper {
	flex-direction: column;
	justify-content: center;
}

.button {
	width: 200px;
	margin-top: 20px;
	margin-left: 20px;
	padding-top: 20px;
	padding-bottom: 20px;
	border-width: 2px;
	border-style: solid;
	border-color: #458b00;
	background-color: #458b00;
}

.text {
	font-size: 30px;
	color: #666666;
	text-align: center;
}
</style>
相关推荐
生信分析笔记2 分钟前
Nature 正刊 GPN-Star 基因组语言模型
android
渣渣盟3 分钟前
Flink 状态管理深度剖析:从 KeyedState 到 RocksDB,状态如何存储、恢复与扩缩容
android·大数据·flink
avi91119 分钟前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
OxYGC15 分钟前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
拥小抱16 小时前
Compose 知识点
android
文章永久免费只为良心16 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南
AIsoft_868916 小时前
学术讲座录音如何整理?录音APP可行吗
android·iphone
Patrick在香港19 小时前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
海雅达手持终端PDA20 小时前
工业手持终端的“去手机化”演进:看海雅达如何以“同轴扫摄”终结工程妥协,重塑工业PDA新范式
android·物联网·智能手机·硬件工程·能源·制造·iot
booboosui21 小时前
删掉一个住在本机的 agent:8 处要清,顺序不能反
android