中软高科支付宝小程序身份证解码插件集成说明

1、引入插件

在小程序的app.json中,加入插件。

"plugins": {
    "readcard-plugin": {
      "version": "*",
      "provider": "2021004143649912"
    }
}

2、使用插件

在需要使用身份证读卡的页面中,使用插件。


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(){
    // 不需要日志时,可以不设置
    plugin.setShowLog(my.getFileSystemManager(), my.env.USER_DATA_PATH);

    // 读卡参数设置,根据需要自行修改参数值,参数名称及类型不可修改。
    var _Setting = {
      decodeImageType: "dn1", // dn0: 无照片   dn1: 平台解码照片
      readCardType: 7, // 2:NFC  7:蓝牙外设读卡器
      saveLog: false, // 是否保存日志文件。设置true时,必须调用以上的 plugin.setShowLog(); 设置日志保存的目录
      openLocalCache: true, // 是否开启本地缓存
      // 解码服务器配置
      ipPortArray: [{
        address: 'ws.mtjsoft.cn',
        port: 443,
        canUse: true
      }]
    };
    // 将参数设置给插件
    plugin.readSetting(_Setting);
  },

  // 初始化 读卡示例代码
  initRead() {
    if (initSuccess == true) {
      my.showToast({
        content: '已经初始化过了',
        type: 'none'
      });
      return;
    }
    // 初始化并开始读卡
    plugin.startReadCard(function (code, msg, value, cardType) {
      let code_msg = "code:" + code + "\n" + "msg:" + msg;
      that.setData({
        msg: code_msg,
      });
      switch (code) {
        case StatusCode.ININ_ING.code: // 初始化中
          my.showLoading({
            content: '初始化中...'
          });
          break;
        case StatusCode.ININ_OK.code: // 初始化成功
          my.hideLoading();
          initSuccess = true;
          my.showToast({
            content: '初始化成功',
            type: 'success'
          })
          break;
        case StatusCode.ININ_FAILE.code: // 初始化失败
          my.hideLoading();
          initSuccess = false;
          if (msg.indexOf("61000") != -1) {
            my.showModal({
              title: '温馨提示',
              content: '设备不支持NFC',
              complete: (res) => {}
            });
          } else if (msg.indexOf("61001") != -1) {
            my.showModal({
              title: '温馨提示',
              content: '系统NFC开关未打开',
              complete: (res) => {}
            });
          } else {
            my.showToast({
              content: msg,
              type: 'fail'
            })
          }
          break;
        case StatusCode.FIND_CARD_START.code: // 开始寻卡
          my.showToast({
            content: '开始寻卡',
            type: 'success'
          })
          break;
        case StatusCode.FIND_CARD_SUCCESS.code: // 寻卡成功
          my.showToast({
            content: '寻卡成功',
            type: 'success'
          })
          break;
        case StatusCode.READCARD_START.code: // 解码中
          my.showLoading({
            content: '请勿移动卡片',
          })
          break;
        case StatusCode.READCARD_SUCCESS.code: // 解码成功
          my.hideLoading();
          my.showToast({
            content: '解码成功',
            type: '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;
          }
          break;
        case StatusCode.READCARD_FAILE.code: // 解码失败
          my.hideLoading();
          my.showToast({
            content: '解码失败' + msg,
            type: 'fail'
          })
          break;
      }
    });
  },

  onShow() {
    console.log("onShow", "界面显示");
  },

  onHide() {
    console.log("onHide", "界面隐藏");
  },

  onUnload() {
    console.log("onUnload", "界面销毁,需要停止读卡");
    plugin.stopReadCard();
  }
})

3、附录

身份证详细信息 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 签发次数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容