二维码支付功能设计【系列文章,本章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,说回应用和设计

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

目录
相关文章
|
7月前
|
存储 前端开发 JavaScript
【Uniapp】支付链转二维码
【Uniapp】支付链转二维码
|
22天前
|
前端开发
生成vx支付二维码2
生成vx支付二维码2
|
22天前
|
前端开发
生成vx支付二维码
生成vx支付二维码
11 1
|
7月前
|
网络安全 开发工具 Android开发
微信刷脸支付插件
微信刷脸支付插件
94 0
|
10月前
uniapp实现微信扫二维码进行核销
uniapp实现微信扫二维码进行核销
209 0
|
移动开发 前端开发 Android开发
前端微信支付开发H5支付(微信外)
前端微信支付开发H5支付(微信外)
386 0
前端微信支付开发H5支付(微信外)
|
消息中间件
技术汇总:第十四章:电脑端生成支付宝二维码支付
技术汇总:第十四章:电脑端生成支付宝二维码支付
102 0
|
安全 前端开发 小程序
微信商户平台转账到零钱功能接入实战
近期营销活动中需要商户转账到微信用户零钱,实战角度说下接入过程,期间用的时间也比较多,把遇到的问题以及如何处理问题过程记录一下,希望对有同样需求的同学有所帮助,尽量少用一些时间,更专注业务处理.本文仅以发起商家转账( /v3/transfer/batches)功能进行讲解.
微信商户平台转账到零钱功能接入实战
|
XML 缓存 算法
微信二维码支付
微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信扫一扫完成支付的模式。该模式适用于PC网站支付、实体店单品或订单支付、媒体广告支付等场景。
287 0
|
XML 存储 小程序
微信小程序支付流程详解
微信小程序支付流程详解
688 0
微信小程序支付流程详解