證卡識別、云解碼、護照識別儀、二代證讀卡器、人證核驗設備
供應信息
1、引入插件
在小程序的app.json中,加入插件。
"plugins": {
"readcard-plugin": {
"version": "2.3.7",
"provider": "wxa2583ebacdb87a6a"
}
}
2、基礎庫
調試基礎庫 2.20.3 及以上
微信版本:
iOS 暫不支持NFC(微信未支持),可使用藍牙外設讀卡器
Android 8.0.6及以上版本,同時支持NFC、藍牙外設讀卡器
讀取護照、通行證信息功能
// 設置讀卡護照、通行證參數
readSetting(){
// 設置APPID (開始讀卡之前,必須設置)
plugin.setAppId("appid聯系我司商務獲取", "", "");
// 日志保存目錄
// 默認在 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: 9, // 9: NFC讀護照/通行證
saveLog: true, // 是否保存日志文件。設置true時,必須調用以上的 plugin.setShowLog(); 設置日志保存的目錄
openLocalCache: true, // 是否開啟本地緩存
// 解碼配置。
ipPortArray: [{
address: passport.sfzydq.com,
port: 18180,
canUse: true
}]
};
// 將參數設置給插件
plugin.readSetting(_Setting);
},
// OCR 識別機讀碼
ocr(){
// 打開相機拍照
this.chooseImageBase64().then((img) => {
wx.showLoading({
title: OCR識別中...,
})
// 識別類型
let type = 1; // 1:護照 2:來往港澳臺通行證 3:港澳臺居民來往內地通行證 4:頭像面 5:國徽面
let url = "https://epassport.sfzydq.com/ocr/uploadImageBase64"; // OCR識別地址
return plugin.ocrMRZ(img, type, url);
}).then((res) => {
// 識別的結果
//{"code":200,"msg":"識別完成","data":{"dateOfExpiry":"261113","MRZLine1":"","documentNumber":"E90342672","MRZLine2":"E903426725CHN9405217M2611136MC0NMMNKPCNEA932","dateOfBirth":"940521"}}
}).catch((err) => {
wx.hideLoading();
wx.showToast({
title: err,
})
})
},
// 選擇圖片,返回base64
chooseImageBase64() {
// 使用前,申請相機相關權限
return new Promise(function (resolve, reject) {
wx.chooseMedia({
count: 1,
mediaType: [image],
sourceType: [album, camera],
sizeType: [compressed], // 使用 壓縮照片,否則識別速度慢
success(res) {
let size = res.tempFiles[0].size / 1024;
console.log("選擇的圖片大小:" + size + "Kb")
if (size > 2048) { // 照片不要超過2M,否則識別速度很慢
wx.showModal({
content: 文件大小不能超過2Mb,
showCancel: false,
confirmText: 好的,
confirmColor: #F74459,
success: function (res) {}
})
return
}
// tempFilePath可以作為 img 標簽的 src 屬性顯示圖片
const tempFilePath = res.tempFiles[0].tempFilePath //tempFilePaths[0]
// 獲取全局的文件管理器
const fileManager = wx.getFileSystemManager();
// fileManager.readFileSync(獲取文件路徑,轉碼格式) data:image/jpg;base64, +
let base64 = fileManager.readFileSync(tempFilePath, base64);
// 返回base64圖片
resolve(base64);
},
fail: function (err) {
reject(err);
}
})
});
},
// 初始化 讀卡示例代碼
initRead() {
if (initSuccess == true) {
wx.showToast({
title: 已經初始化過了,
icon: none
});
return;
}
let startReadData = {
documentNumberStr: , // 9位護照號碼 如 E14403340
dateOfBirthStr: , // 6位出生如期 如 761123(年份不要前兩位)
dateOfExpiryStr: , // 6位有效日期 如 230408(年份不要前兩位)
isPassportPhoto: true // 是否需要護照的頭像照片
}
// 初始化并開始讀卡
plugin.startReadEpassport(startReadData, 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_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;
}
});
}
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照片
還沒找到您需要的Uniapp二代證讀取插件 CSYJM-4手持機NFC讀取SDK 手機?發布您的求購意向,讓供應商主動與您聯系!
立即發布求購意向