微信小程序读取NFC卡片数据,NDEF-M1

这篇具有很好参考价值的文章主要介绍了微信小程序读取NFC卡片数据,NDEF-M1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近来了个离谱的需求,要用微信小程序读写NFC卡数据,微信官方文档可以说是垃圾的一批了,啥都没有,踩了好几天坑把整体思路记录一下。

如果需要DEMO可直达下载链接:https://download.csdn.net/download/weixin_65984842/87703559

首先调用微信自带的方法


 const adapter = wx.getNFCAdapter(); //调用wx.getNFCAdapter()获取NFC适配器实例

然后在onload中利用onDiscovered监听卡片,正常都会返回一个data,里面有ID还有techs,如果是NDEF卡还会返回一个messages,直接操作messages就可以了比较简单,M1是加密卡需要调用getMifareClassic方法


adapter.onDiscovered(res => {
        console.log("读取到卡片了", res);
        let tagId = res.id; //如果是M1卡,这个ID是需要用于读取的秘钥
        let ssid = _this.buf2hex(tagId) //转换数据格式
        console.log("获取到tagID:", ssid);
        this.setData({ssid});
        this.isCardTypeRead(res,adapter);            
      })

M1卡的读取方法,这里比较费劲,需要知道你卡片的厂商给的秘钥信息,如果你会暴力破解就当我没说文章来源地址https://www.toymoban.com/news/detail-537794.html


let adapter = that.data.Nfcadapter;
if (adapter.tech.mifareClassic) {
      console.log("发现" + adapter.tech.mifareClassic + "卡");
      let mifareClassic = adapter.getMifareClassic();
      mifareClassic.connect({
        success: (res) => {
          const {ssid,cardPwda } = _this.data
          console.log("设备已连接", res); 
          console.log("开始拼接验密指令。。。");
          let arr = [0x60, 0x00] //查询扇,后边需要拼接上秘钥,
          let newCardPsd = new Uint8Array(cardPsd) //转换命令格式
          let newArr = [...arr,...newCardPsd] //把查询扇区的初始跟查询ID拼接到一起
          console.log('read',newArr)
          
        
          //     0x60, //指令类型
          //     0x00, //扇区读取位置 00就是读取所有,09就是第二扇区第二块
          //     0x11, 0x22, 0x33,  0x44, //秘钥A
          //     0xff, 0xff, 0xff, 0xff, 0xff,0xff //秘钥B,根据卡片厂商给的信息写通常都是固定的或者跟A一样 
        
          var arrayBuffer = new Uint8Array(arr).buffer;
          console.log("解密指令为:", arrayBuffer);
          console.log("解密指令为:", arr);
          mifareClassic.transceive({
            data: arrayBuffer,
            success: function (res) {
              console.log("connect发送数据并解密成功, 接收数据如下:", res);
              console.log('connect发送数据并解密成功, 接收数据如下:', that.buf2hex(res.data));
            },

            fail: function (err) {
              console.log("connect发送数据失败A", err);
            },
          });
        },
      });
      // 向标签发送读取指定块数据的命令,以验证标签是否已经连接成功。
      mifareClassic.isConnected({
        success: function (isConnected) {
          console.log("isConnected成功连接", isConnected);
          var arr02 = [0x30, 0x00]; //第二位0x00以为读取从0开始的所有扇区
          var arrayBuffer02 = new Uint8Array(arr02).buffer;
          console.log(arrayBuffer02);
          mifareClassic.transceive({
            data: arrayBuffer02,
            success: function (res) {
              console.log("读取数据:", res);
              let hexArr = Array.prototype.map.call(
                new Uint8Array(res.id),
                function (bit) {
                  return ("00" + bit.toString(16)).slice(-2);
                }
              );
        
              let strCode= hexArr.join("");
            
              console.log('isConnected转换后的',strCode);
              that.setData({
                nfcMsg: str,
              });
              mifareClassic.close({
                success: (res) => {
                  console.log("清除标签连接成功");
                },

                fail: (error) => {
                  console.error("清除标签连接失败");
                },

                complete: (res) => {
                  console.log(res);
                },
              });
            },

            fail: function (err) {
              console.log("失败", err);
            },
          });
        },
      });
    }

到了这里,关于微信小程序读取NFC卡片数据,NDEF-M1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android NFC 读取卡片信息

    因为朋友需要个读取NFC卡片数据的功能,所以最近看了一下Android 系统下NFC 读取卡片信息的操作. NFC(近距离无线通信 ) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接.借助 NFC,您可以在 NFC 标签与 Android 设备之间或者两台 Android 设备之间共享小型负载。

    2024年02月11日
    浏览(24)
  • android使用NFC读取卡片(一)

    为了彻底讲清楚NFC,我这里用三种方法来详细讲解,逐步深入理解代码编写,这是第一种方法。 话不多说,这次主要展现的是通过nfc读取非接触ic卡的卡号。主要分成3个步骤: (1)配置权限,能用nfc (2)调用NFC的主要流程 (3)代码实例 在AndroidMainfest.xml中添加如下代码 使

    2024年04月14日
    浏览(40)
  • Android 实现 NFC 读取卡片信息

    效果图: 因为朋友需要个读取NFC卡片数据的功能,所以最近看了一下Android 系统下NFC 读取卡片信息的操作。 NFC(近距离无线通信 ) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接.借助 NFC,您可以在 NFC 标签与 Android 设备之间或者两台 Android 设备之间共享小

    2024年02月01日
    浏览(29)
  • 微信小程序 NFC 功能

    一、在微信小程序中,使用nfcIsoDep.transceive发送指令的基本步骤如下: 使用wx.getNFCAdapter获取NFC适配器实例。 调用NFCAdapter.startDiscovery开始监听贴卡。 注册贴卡监听回调,调用NFCAdapter.onDiscovered。 在回调函数中,根据返回的res.techs字段匹配到卡片支持的NFC标准。 使用NFCAdapter

    2024年04月28日
    浏览(91)
  • 微信小程序nfc指令异常记录

    小程序nfc相关代码:  connect 成功但是指令报错,报错信息: transceive:fail:system internal error:tag was lost 解决方式,替换NfcA

    2024年02月12日
    浏览(35)
  • Delphi轻松读写NDEF文本、智能海报、应用控制等NFC标签

            NDEF 全称 NFC data exchange format 即 nfc 数据交换格式,是一种标准化的数据格式,可用于在任何兼容的NFC设备与另一个NFC设备或标签之间交换信息。数据格式由NDEF消息和NDEF记录组成。        NDEF信息可以写到不同类型的NFC芯片中,如NFC_Forum_Type2类的Ntag2x、FM11NTx系列芯片

    2024年02月15日
    浏览(25)
  • 微信小程序-读取数据

    在开发微信小程序的时候,我们经常都会用到一些配置数据,或者当做“单向数据库(只读)”使用。 我们新建一个新的项目工程,JS版本就可以。 免于麻烦,我们新建一个page(showdata)来显示数据。 为了方便管理,我们在项目工程新建一个目录(data),用于存数据。另外

    2024年02月15日
    浏览(30)
  • 微信小程序卡片横向滚动竖图

     进入下面小程序可以体验效果 :   滚动并不是使用swiper,该方式使用的是scroll-view实现 Swiper局限性太多了,对竖图并不合适 从左往右滚动图片示例 wxml代码:  js代码:  wxss代码:

    2024年02月12日
    浏览(49)
  • 微信小程序横向滚动卡片列表模板

    在开发微信小程序时,横向可滚动卡片列表是一个必不可缺的页面组件。其不仅美观还可以节省屏幕空间。具体截图如下: 主要用的是scroll-x,具体代码如下: wxml 附:renshu.png wxss js 在微信小程序开发中,横向滚动卡片列表是提升用户体验和界面美观的重要组件。本文介绍了

    2024年02月16日
    浏览(36)
  • 微信小程序如何自定义分享卡片文案和图片

    微信小程序提供了onShareAppMessage方法,专门用来监听用户点击页面内转发按钮(button 组件 open-type=\\\"share\\\")或右上角菜单“转发”按钮的行为,并自定义转发内容。 注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮 参数 类型 说明 最低版本 from String 转发事

    2024年02月13日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包