- NfcA 连接扇区写入,读取写入验证密钥指令说明
说明 带有密钥验证的卡,必读每次在读 或者写时都要先验证在读写, 不然就会失败 指令 通常的是 指令(1字节)+要操作的块(1字节) + 14个内容字节 扇区: 小程序没有扇区的概念因为NFC块都是连续的, 所以一般卡16个扇区, 每个扇区4个块, 对于小程序来说就是 0~63 块共计64块 例如 : 1扇区 第0块 小程序对应的就是第0块 2扇区 第3块 小程序对应的就是第8块 以此类推 验证指令: 0x60 [0x60]+要操作的块[0x01]+卡的ID[0xde, 0x63, 0x35, 0x9c,]+秘钥[0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF] 写入或读取不同的块 要验证不同的块, 比如读取 0x01 块 要操作的块就要写[0x01] 当要要操作 16扇区第3块时, 小程序的要操作的块就要写[0x3f]十进制63 读取指令: 0x30 [0x30,0x01] : 读取第0个扇区第二块, 写入指令: 0xa0 [0xa0,0x09,0xff, 0xff, 0xff, 0xff, 0xff, 0xff] : 在第9块写入 6个字节的数据 我的这个卡写入时必须要组合成 18个字节才能写入, 少于或多都会写入失败 [指令(0xa0),块号(0x09),…16个字节].length = 18, 内容不够的填充FF或者填充其他的内容, 数组必须凑够18个元素 例如: [代码]const params = { cmd: 0x60, // 验证指令 block: 0x01, // 块 cardId: [0xde, 0x63, 0x35, 0x9c], // 卡片id 获取从 NFCAdapter.onDiscovered((res)=>{ // res中含有卡片id }); key: [0xff, 0xff, 0xff, 0xff, 0xff, 0xff], // 验证密钥 }; const arr = [params.cmd, params.block, ...params.cardId, ...params.key]; const writeBuffer = new Uint8Array(arr).buffer; const NFCAdapter = wx.getNFCAdapter(); const NFCType = NFCAdapter.getNfcA(); // 验证密钥 NFCType.transceive({ data: writeBuffer, success: function(res) { console.log("解密成功, 接收数据如下:", res); // 开始读写 }, fail: function(err) { console.log("解密失败", err); log.push("解密失败" + checkErr(err)); }, }); [代码]
2023-05-26 - wx.scanCode 扫一扫 在ios 下调用无效
- 问题描述 因为一些需求, 需要微信扫描小程序二维码而主动到某个页面然后再进行onLoad获取参数 主动调用wx.scanCode Api 发现在iphone XR 与 ios8 扫一扫没有反应, 其他ios未测试, 安卓正常。 然后搜索问题发现微信很多回答下说是在onReady里调用扫一扫 依然失败。 不知道是bug 还是 我代码有问题。 [图片] [图片] [图片]
2019-05-10 - picker-view省市区,个别苹果手机失效
[图片]点击后,里面的内容不显示,控制台vConsole也不报错。测试手机中,只有两部iphone6P有这种情况,并不是所有苹果手机都有此情况,安卓目前没有此类情况,希望有遇到此问题并且已解决问题的朋友,帮下忙。
2018-08-29