二维码支付功能设计【系列文章,本章1】

简介: 扫一扫已经是我们生活中非常熟悉的功能,而扫一扫离不开二维码,那么二维码扫码原理是什么,如何实现的,如果企业要上自己的扫码功能如何实现?本章将从二维码原理讲起。

1,从名字讲起

二维码,按照中文看,故名意思是二维的,与我们看见二维码一般都是方形,那么具有水平和垂直两个纬度的编码信息一致。但是知道二维码英文的同学,则会有点奇怪,因为我们常常将二维码称作QR Code,而QR 是Quick Response的意思,那么二维码为什么不叫2-dimensional code,而要叫做QR code呢?

其实这两者都没有问题,英文的不少纯技术文献,也叫二维码为2-dimensional bar code,中文是二维条形码的意思。说到条形码,则大家都清楚,如下,最开始在商品,在书籍上做标识,可以辨真伪,做进库出库管理。

image.png

不少商场的在袋子上承重打的收钱标签很多也是二维码。很多超市在扫码时,通过扫描二维码,进行机器认价。这就意味着,当替换了所扫的二维码之后,机器就会错认。不少机智的同学说,那我买100元的物品,然后找个5元的条码盖住,是不是机器就会扫成5元?

是的,你想的没错,不少这样想的同学,也差不多快放出来了。我们在网上其实还能看到不少之前的新闻。

image.png

http://xcsfy.hncourt.gov.cn/public/detail.php?id=915

https://new.qq.com/rain/a/20220307A01YXU00

可见不仅是条形码,还是二维码,大部分固定在产品上的二维码都存在被替换的问题。那么这是怎么导致的,又如何避免?

2,了解条形码

从刚刚的故事,相信大家立马就猜到条形码,这些粗细不同的棍子,应该是包含了商品的信息,或者商品的价格。确实如此,二维码具有不同的设计规范,有些可能确实在码中之前填入了价格信息,有些则是只编码了sku信息,扫码后,再查询库存中的价格信息、优惠信息、满减满赠信息等。

那么这些粗细不同的棒子,是如何来包含这些数据信息的呢?不少同学会认为,粗细不同的棒子,代表不同的含义,通过粗细不同的棒子的排列顺序,就可以形成不同的表达。

这种想法,在数学上,是完全没有问题的,计算机科学,本质上是数学问题的重现和推演。但现代计算机的设计,基于更简洁的数学模型。

不妨,请大家换一个角度看条形码,先找到最小的那细条形码,我们把他当成1,然后忘记粗细相间的概念,把最细的空白看作0,那么很粗的线条,其实就是连续的几个1,很粗的空白,就是连续的几个0。因此一串条形码能够很快的被翻译成01001001111001,类似于这样的数字串。

这也是现代计算机,所有基于非门、或门电路的计算机,所有数据,所有程序的底层表现形式。也就是说我们银行的存款数字,手机的照片,珍藏的视频,包括大家正在看的这篇文章还有所有的数字化信息,在最底层,其实都在某快硬盘的存储上一块01相间的数字串。(当然最新的量子计算机不是,目前也没有普遍化和商业化,就暂不讨论。)

3,说回二维码

知道了条形码是一串0101,不少聪明同学立马反应到,那二维码就是多行的0101!这种想法是对的,但是不全对。二维码具有不同的编码模型,也就是刚刚讨论的数学排列组合原理,或数学模型,学术上,我们管这个叫“二维码制式”。

按照上述多行条形码组成的二维码,我们称之为堆叠式/堆积式/行排示/层积式,按照这种制式进行编码和解码的二维码有Code 16K、Code 49、PDF417、MicroPDF417。

以PDF417举例,如下图,基本上就是多个条形码的拼接。

image.png

这种制式的条形码,组合方式简单,都具有1.信息容量大,2.编码范围广,3,制作成本低等,而PDF417具有多重防伪特性,它可以采用密码防伪、软件加密及利用所包含的信息如指纹、照片等进行防伪,因此具有极强的保密防伪性能,且误码率不超过千万分之一,译码可靠性极高。基于上述特征,PDF417 制式二维码被广泛用于证件、海关、金融、军事。

那么细心同学会发现,这里并没有提到生活或者商务,那么就是说我们平时用的经常用的二维码并不是堆叠式二维码,那么我们常用的二维码是什么制式呢?

到这里,上面两个问题都有了答案,1,我们平时用的二维码,叫QR code 不叫 2-dimensional bar code 是因为他是一种特殊“制式”的二维码,可以理解为一种更细的划分,2,QR code 就是按照非堆叠式制作的二维码,他的制式叫做“矩阵式”,这就是刚刚说同学的猜测只对了部分的原因。

那么什么是QR Code 这种“矩阵式”二维码呢?他有什么不同?细心的同学可以拿出我们常用的支付宝二维码或者微信的二维码,你们发上能发现,我们生活中经常使用的二维码,右上,右下、左下都有固定的黑块。

image.png

如图,这三角固定的方块,我们称为二维码的定位区。这又是数学上的原理了,三个点确定一个矢量,标识唯一的方向。通过这三个点,不管二维码是正的、歪的、斜的,扫码程序都能正常识别正确的上下左右和内容。

另外,我们发现其实不仅是方向乱的时候,能正确识别,在二维码挡住部分,以及出现部分污渍或者损坏时,有些情况下,也可以正常识别。那这是怎么回事呢?

其实在二维码的数据区域中,有一个叫做纠错码的设计(Reed-Solomon),

当部分 QR 码丢失或损坏时,可使用 Reed-Solomon 码恢复数据。恢复率对于 4 种不同的纠错级别各不相同。

纠错级别

受损区域占整个代码区域占比(%)

L

7

M

15

Q

25

H

30

不同的纠错级别,则相当于在二维码中开辟不同大小的纠错区域,我们可以立马猜测到:同一个规格的二维码,当纠错级别越高,纠错区域越大,能用于存储的二维码区域就越小,二维码可以携带的数据就越小。

用中国的古语讲哲学,这叫做鱼和熊掌不可兼得。

以M级别举例,二维码和纠错码的布局如下。

image.png

这里我们可以看到,相对于堆叠式二维码,QR二维码划分了很多数据区域之外的区块,这些虽然减少了整个可以携带的信息,但因为在不同区块携带了定位信息,格式信息,数据信息,纠错信息,能够帮助识别程序快速识别,起到了Quick  Response的效果,这也是这种码名字的由来。


4,再说说物理和历史

根据上文内容,我们大致对二维码的规格、制式、原理有了一些了解,而且能够基本上理解这些设计了。那么问题来了,这些看起来很并不复杂的设计,为什么到现在才渐渐用起来?一开始就设计成这种二维码不就行了?

很多同学认为这个问题的答案,是电子商务或者互联网的普及。这个答案,对,但也不全对。

上文我们已经聊过了数学,也聊过了哲学,那么最后聊聊物理和历史。

从结果看关联,确实是电子商务或者互联网的普及后,更准确的来说,是移动互联网和移动支付流行后,二维码快速发展和普及。

其实,这两者都是同一个原因的结果,那就是物理技术的发展。

1,电子元件越来越精细,计算能力越来越高,使得手机存储越来越大,功能越来越多。

2,在条形码时代,用于识别条码的物理技术,是光栅技术;而随着计算能力提高,传感器技术发展,人类也逐渐掌握了红外技术、光谱技术、全图成像,这些为提供更复杂的码设计,提供了基础设施。现在很火的OCR,文字识别,人脸识别等,其实也要感谢这些技术的发展。

因此,我认为最根本的原因,是当时的物理科技水平没有达到,并不是在数学上,或者信息科学上,无法建立二维码的模型和算法。

因此可以说,物理学才是推动社会根本变革,提高和改变人类享受形式的最终答案,这也被第一次、第二次工业革命,个人电脑,互联网,手机等历史所证实。

5,说回应用和设计

感谢大家耐心阅读上面的内容,再下一章中,我们将继续讨论和分析,如何在企业中应用二维码,如何在企业中管理二维码生成、使用、分析,以企业咨询的新角度来为大家带来不一样的故事。

目录
相关文章
|
存储 前端开发 JavaScript
【Uniapp】支付链转二维码
【Uniapp】支付链转二维码
|
4月前
|
小程序 数据挖掘 UED
餐饮店小程序开发定制桌边二维码点餐系统
随着技术不断进步,各行各业都在使用新工具来提高效率和服务质量。餐饮业也不例外。餐饮点餐小程序系统是基于微信公众平台开发的在线点餐方式。顾客可以通过手机微信扫描餐桌上的二维码,进入餐厅的点餐小程序,选择菜品、数量和口味,直接完成点餐。点餐系统会自动保存并发送给厨房,避免了传统手工点餐容易出错的问题。
|
6月前
|
前端开发
生成vx支付二维码2
生成vx支付二维码2
24 1
|
6月前
|
前端开发
生成vx支付二维码
生成vx支付二维码
42 1
|
网络安全 开发工具 Android开发
微信刷脸支付插件
微信刷脸支付插件
168 0
|
XML 移动开发 JavaScript
【畅购商城】微信支付模块之微信支付二维码
【畅购商城】微信支付模块之微信支付二维码
182 0
【畅购商城】微信支付模块之微信支付二维码
|
消息中间件
技术汇总:第十四章:电脑端生成支付宝二维码支付
技术汇总:第十四章:电脑端生成支付宝二维码支付
140 0
|
小程序 前端开发 架构师
微信点餐系统的开发与实现
   随着互联网技术逐渐的深入到生活,人们的生活消费习惯,已经发生很大的变化。就餐厅用餐而言,互联网技术和移动互联网技术的应用也己相关普及,比如早几年前就出现的餐厅点餐系统,就通过信息化的技术手段代替原来纸质菜单点餐的传统方式。这种方式一是可以方便顾客实现点餐叫号,二是方便商家进行人单合一的统一管理,减少了报单出错率,提升了用户的体验,所以得以大面积的应用和普及。        而移动互联网的出现,让智能手机的赋能更大广泛,腾讯微信适时推出微信小程序,使得智能手机的用户可以通过微信进行相应的信息化管理和参与,比如目前大面积应用的小程序商城,就将商业的业态从传统的PC互联网直接植入手机移动互
259 0
微信点餐系统的开发与实现
|
XML 缓存 算法
微信二维码支付
微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信扫一扫完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。
413 0
支付宝卡包集成流程
该产品可以用于管理电子凭证的产品,该产品聚合来自各类生活服务的票据凭证,包括优惠券、折扣券、代金券、换购券、电影票、演出票、火车票、机票。 用户交易创建后,企业或者个人开发者根据交易外部订单号可以通过支付宝提供的开放接口,把卡券添加到支付宝卡包,用户可以通过支付宝钱包客户端,在卡包功能中查看并使用卡券。
939 12
下一篇
无影云桌面