1、引入插件
在小程序的app.json中,加入插件。
"plugins": {
"readcard-plugin": {
"version": "2.3.7",
"provider": "wxa2583ebacdb87a6a"
}
}
2、基础库
调试基础库 2.20.3 及以上
微信版本:
iOS 暂不支持NFC(微信未支持),可使用蓝牙外设读卡器
Android 8.0.6及以上版本,同时支持NFC、蓝牙外设读卡器
3、使用插件功能
3.1、读取、永居证、港澳台居住证信息功能
在需要使用读卡的页面中,使用插件示例。
const plugin = requirePlugin(readcard-plugin);
var StatusCode = null;
var that = this;
var initSuccess = false;
Page({
data: {
idCardInfo: null,
},
onLoad() {
that = this;
StatusCode = plugin.StatusCodeEnum();
console.log("对照状态码:", StatusCode);
// 设置APPID (开始读卡之前,必须设置)
plugin.setAppId("appid联系我司商务获取", "", "");
// 设置读卡SDK参数
that.readSetting();
// 初始化读卡
that.initRead();
},
// 设置读卡SDK参数
readSetting(){
// 日志保存目录
// 默认在 Android/data/com.tencent.mm/MicroMsg/wxanewfiles目录下 搜索 zrgk_mini_log
// 不需要日志时,可以不设置
plugin.setShowLog(wx.getFileSystemManager(), wx.env.USER_DATA_PATH);
// 读卡参数设置,根据需要自行修改参数值,参数名称及类型不可修改。
var _Setting = {
decodeImageType: "dn1", // dn0: 无照片 dn1: 平台解码照片
readCardType: 2, // 2:NFC 7:蓝牙外设读卡器
saveLog: true, // 是否保存日志文件。设置true时,必须调用以上的 plugin.setShowLog(); 设置日志保存的目录
openLocalCache: true, // 是否开启本地缓存
// 解码配置。
ipPortArray: [{
address: yfs4.sfzydq.com,
port: 9999,
canUse: true
}]
};
// 将参数设置给插件
plugin.readSetting(_Setting);
},
// 初始化 读卡示例代码
initRead() {
if (initSuccess == true) {
wx.showToast({
title: 已经初始化过了,
icon: none
});
return;
}
// 初始化并开始读卡
plugin.startReadCard(function (code, msg, value, cardType) {
let code_msg = "code:" + code + "
" + "msg:" + msg;
that.setData({
msg: code_msg,
});
switch (code) {
case StatusCode.ININ_ING.code: // 初始化中
wx.showLoading({
title: 初始化中...,
mask: true
});
break;
case StatusCode.ININ_OK.code: // 初始化成功
initSuccess = true;
wx.hideLoading();
wx.showToast({
title: 初始化成功,
icon: success
})
break;
case StatusCode.ININ_FAILE.code: // 初始化失败
initSuccess = false;
wx.hideLoading();
if (msg.indexOf("13000") != -1) {
wx.showModal({
title: 温馨提示,
content: 设备不支持NFC,
complete: (res) => {}
});
} else if (msg.indexOf("13001") != -1) {
wx.showModal({
title: 温馨提示,
content: 系统NFC开关未打开,
complete: (res) => {}
});
} else {
wx.showToast({
title: msg,
icon: error
})
}
break;
case StatusCode.FIND_CARD_START.code: // 开始寻卡
wx.showToast({
title: 开始寻卡,
icon: success
})
break;
case StatusCode.FIND_CARD_SUCCESS.code: // 寻卡成功
allCount += 1;
wx.showToast({
title: 寻卡成功,
icon: success
})
break;
case StatusCode.READCARD_START.code: // 开始解码
wx.showLoading({
title: 请勿移动卡片,
mask: true
})
break;
case StatusCode.READCARD_SUCCESS.code: // 解码成功
wx.hideLoading();
wx.showToast({
title: 解码成功,
icon: success
})
switch (cardType) {
case StatusCode.CARD_IC.code: // IC卡
console.log("IC卡:" , value);
break;
case StatusCode.CARD_LCT_STUDENT.code: // 绿城通学生卡
console.log("绿城通学生卡:" , value);
break;
case StatusCode.CARD_LCT_NORMAL.code: // 绿城通普通卡
console.log("绿城通普通卡:" , value);
break;
case StatusCode.CARD_LCT_OLD.code: // 绿城通老年卡
console.log("绿城通老年卡:" , value);
break;
case StatusCode.CARD_IDCARD.code: //
// 读取到的信息
// 详细字段说明,详见文档下发的附录
var idCardInfo = JSON.parse(value);
console.log("信息:" , idCardInfo);
// 当设置平台解码照片时,
// idCardInfo.image字段,为base64编码的照片字符串,可直接用于显示
// idCardInfo.type=1080 中国居民
// idCardInfo.type=1081 新版外国居住证
// idCardInfo.type=1082 港澳台居住证
// idCardInfo.type=1083 旧版外国居住证
break;
case StatusCode.CARD_EPASSPORT.code: // 护照/通行证
// 读取到的护照/通行证信息
// 详细字段说明,详见文档下发的附录
var cardInfo = JSON.parse(value);
console.log("信息:" , cardInfo);
// cardInfo.image字段,为base64编码的照片字符串,可直接用于显示
break;
}
break;
case StatusCode.READCARD_FAILE.code: // 解码失败
wx.hideLoading();
wx.showToast({
title: 解码失败 + msg,
icon: error
})
break;
}
});
},
onUnload() {
console.log("onUnload", "界面销毁,需要停止读卡");
plugin.stopReadCard();
}
})
4、获取 deviceId
由于openid是由微信生成,网络获取可能存在延时。需在插件初始化成功后再获取。
成功获取到ID,都是以 “wxMini_” 开头。
返回微信绑定ID。更换微信号或小程序宿主 ID会变。
需要将 https://epassport.sfzydq.com 配置合法域名
/
plugin.getDeviceId();
5、配置TCP合法域名
必须将参数配置时,配置的 ipPortArray 参数中的所有地址,加入到合法的TCP域名,
否则无法访问到。
如配置:
tcp://yfs4.sfzydq.com
tcp://yfs3.sfzydq.com
tcp://yjm2.sfzydq.com
tcp://yfs3.sfzydq.com
tcp://passport.sfzydq.com
tcp://test.sfzydq.com
6、附录
详细信息IdCardData
字段 类型 注释
type int 1080:中国居民
address string 家庭住址
birthday string 出生日期
dn string dn码
endDate string 结束时间
startDate string 生效时间
id string 号码
image String base64照片
issue string 签发
name string 姓名
nation string 民族
sex string 性别
uuid string uuid
外国人居住证IdCardData:
字段 类型 注释
type int 1081:新版外国人居住证 1083:旧版外国人居住证
birthday string 出生日期
dn string dn码
endDate string 结束时间
startDate string 生效时间
id string 号码
issue string 签发
sex string 性别
uuid string uuid
image String base64照片
nameChinese string 中文姓名
nameEnglish string 英文姓名
nameEnglishAdd string 英文姓名备用
nationlity string 国籍
cardVersion string 卡版本号
cardType string 卡类型
historicalNumber string 既往版本号码关联项
renewalNumber string 换证次数
港澳台居住证详细信息IdCardData
字段 类型 注释
type int 1082:港澳台居住证
address string 家庭住址
birthday string 出生日期
dn string dn码
endDate string 结束时间
startDate string 生效时间
id string 号码
image String base64照片
issue string 签发
name string 姓名
nation string 民族
sex string 性别
uuid string uuid
passCheckId string 通行证号码
issuesNumber string 签发次数
护照通行证详细信息
字段 类型 注释
nameOfHolder string 中文姓名
primaryIdentifier string 姓
secondaryIdentifier string 名
gender string 性别 M男 F女
dateOfBirth string 生日
nationality string 码
dateOfExpiry string 有效期
documentNumber string 护照号码
duration long 解码时长
mrz string 机读码
personNumber string 个人号码
idNumber string 号码
image String base64照片