收藏
回答

关于H5调用扫一扫 条形码时可能出现扫描不完整的情况该怎么处理?

微信H5调用扫一扫 读取条形码的时候 可能会出现扫描不完整的情况,比如条形码的信息是一个16位的数字,但有时候扫描返回的结果可能少几位。

1,生成的barcode位数是固定的情况好处理,扫描返回的结果判断一下长度即可(通常固定生成条形码的位数就能够满足绝大多数场景)。

2,生成的barcode位数不是固定的情况该怎么处理呢?

比如:888000 000001 1646559393

888000 代表号码前缀

000001关系数据库中的id的后6位(实际ID是888000000001

1646559393代表生成条形码时的时间戳

生成条形码时忽略掉号码前缀888000,只将第二段和时间戳拼接在一起,得到 11646559393 (11位的数字)如果不忽略掉888000前缀生成条形码,估计下班会被前端暴打。肉眼观察10位-18位 生成后的宽度可以接受。将第二段号码放在时间戳前面是避免达到100万以上时会进位影响时间戳。放在前面如果超过100万时可以向号码前缀进位。

将扫码得到的结果长度取后10位,校验条形码是否超时。

总长度减去10得到实际的id是前几位,截取后传递给后端。

可能引发的问题:

第二段的位数变化会导致生成条形码的值位数会有变化(长度在1-6位之间)。

按照上面的条件,即条形码值的长度11位到16位 都是有可能的。在这种情况下校验扫描得到的结果长度就没有意义了。但扫描返回的结果有时候可能不完整的情况又确实存在,不规范的扫描操作导致结果缺失概率更高。这可能会导致更严重的情况,就是缺失后的数据可能会查询得到!!!!!!

虽然这种概率很小,但总是有点担心。。。 是不是这种思路有问题,有没有其他解决思路? 望路过的大佬指点一下

最后一次编辑于  2022-03-06
回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2022-03-07

    你好,请问是否现在能复现问题呢?

    2022-03-07
    有用
    回复 3
    • Tony
      Tony
      2022-03-07
      可能我的思路有点问题,我就想了解一下 如果每次生成条形码的时候位数有长有短的情况下我该怎么去验证用户操作不规范导致扫描结果不完整的情况。
      2022-03-07
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      2022-03-08回复Tony
      1、由于条形码的编码设计结构,有些条形码无法校验结果的正确性,位数固定的条形码,扫出来的结果位数对上了,这个结果也不一定是正确的,依然存在错码的可能性。
      2、位数不固定的条形码,存在错码的情况更加多样化,如果想简单验证结果是否正确,可以选择固定前几位后几位数字等形式来进行简单校验,但也不是完全可靠的。
      3、要得到可靠的结果,建议使用二维码。
      2022-03-08
      1
      回复
    • Tony
      Tony
      2022-03-09回复社区技术运营专员--许涛
      确实是我思路问题, 被同事屌了一顿,条形码可以被伪造。 我应该在后端生成的时候维护一个状态,然后校验。
      2022-03-09
      回复
登录 后发表内容