微信支付二维码规范

1. 范围

本规范规定了微信支付二维码的质量要求,包括二维码生成、展示、验收和安全要求。

本规范适用于微信支付组织内部、商户、服务商使用二维码实现收款、绑定设备或营销等功能的产品中二维码设计、展示和维护。

2. 规范性引用文件

QRCode 国家标准(GB/T 18284-2000)

3. 术语和定义

微信支付二维码:微信支付提供给用户或商户产品中包含的二维码,或商户和服务商自行生成提供微信支付相关功能的二维码。例如收款二维码、付款二维码、绑定设备码或营销功能二维码等。

容错等级:二维码设计有容错功能,当二维码局部区域被遮挡或污损时仍可以正常识别解码。二维码容错等级分为4等(L、M、Q、H),等级越高对应可恢复的码字比例越高。

4. 二维码介绍

现有商户H5收银页面未做适配大字体时会出现信息溢出、遮挡、重叠等情况,严重影响了用户的阅读和操作,应避免以下几类情况发生。

4.1. 二维码码制介绍

常用的二维码码制有:QR Code、汉信码、PDF417二维条码、Datamatrix二维条码、Code 49、Code 16K、Code one等。样例如图1所示:

QR码

汉信码

PDF417码

Datamatrix码

QR二维码的相关背景知识可参考:https://www.qrcode.com/zh/index.html

4.2. 微信支付码制标准

微信支付收款二维码采用的码制为快速响应矩阵码(简称QR Code),下文说的二维码特指QR码。商户可通过引用符合QR码国家标准(GB/T 18284-2000)的第三方库生成收款二维码(注意:不支持Micro QR和IQR码标准)。

此外,如使用微信小程序提供对外服务,可将微信支付二维码更换为小程序码(如图3所示),在小程序内实现微信支付相关功能。


图2:QR码样例

图3:小程序码样例

5. 二维码使用场景

5.1.微信支付提供给商户的二维码

微信支付提供给商户二维码链接或图片,例如生活缴费提供给商户打印在缴费单上的缴费二维码,如图4所示:


图4:生活缴费二维码生成工具


微信支付提供模版下载二维码图片,如微信面对面收款二维码(如图5所示)和付款二维码(如图6所示):


图5:面对面收款二维码

图6:付款二维码

微信支付对外提供实体物料上的二维码,如微信买单码牌的二维码,如图7所示:


图7:微信买单二维码码牌


微信支付营销宣传物料或海报中使用的二维码,如海报中心加好友二维码,如图8所示:


图8:微信海报中的二维码


微信支付对外提供设备上做绑定的二维码,如收款机具绑定码,收款音箱等,如图9所示:

图9:收款机具绑定二维码

5.2.商户自行生成二维码场景

订单小票二维码:商户将二维码打印在订单小票(如图10所示)或缴费单(如图11所示)上,用户扫描后可完成支付:


图10:超市订单小票

图11:医院就诊缴费单

WEB网页收款二维码:用户在商户WEB页面下单后,直接扫描网页上显示的订单二维码完成付款,如图12所示:


图12:WEB页面收款二维码


自助点餐二维码:用户扫描带有桌号的二维码后打开H5或小程序,选择商品确认下单,最后直接完成支付,如图13所示:


图13:自助点餐二维码,扫此码可关注公众号,需打码


收银台收款二维码:商户提供收银台码牌上的二维码, 用户扫描后可输入金额完成支付,如图14所示:

图14:收银台收款二维码

自助设备上的收款二维码:展示在设备上,用户扫描后付款,如图15所示:


图15:充电宝借还机器关注公众号二维码


停车场缴费牌收款二维码:展示停车场的墙壁上,在用户扫描二维码打开H5页面,输入车牌信息完成付款,如图16所示:


图16:停车场收款二维码

6. 二维码技术要求

二维码能否扫描会受到图案完整度、图案复杂度、颜色对比度、扫描距离、环境光线、扫描设备分辨率等因素的影响。编码信息越多,二维码图案越复杂。超长内容的二维码图案会非常复杂,需要足够清晰的大图才能完整展示。

6.1.二维码生成标准

6.1.1.设置内容格式

1.微信支付API返回给商户的二维码内容:
统一使用“weixin://wxpay/自定义数据”格式协议,Native支付的二维码内容样例:weixin://wxpay/bizpayurl/up?pr=NwY5Mz9

2.商户自定义H5链接二维码:
H5链接符合URL格式规范“https://域名/自定义数据”,自定义数据可由商户根据场景需要设置对应的内容。

6.1.2.设置内容长度

随内容长度增加二维码密度会增大,当二维码显示尺寸被限制时,点阵太密会导致二维码难识别,甚至无法识别,二维码识别效果对比如表1所示。

表1:同尺寸下不同内容长度的二维码

二维码

字符数

可识别程度

30个字符

可识别

50个字符

可识别

100个字符

较难识别

200个字符

较难识别

1000个字符

无法识别

生成二维码时,应根据二维码显示区域边长设置合理的内容长度,内容长度标准见表2所示。

表2:二维码边长对应的内容长度要求

二维码边长

内容长度

2 ~ 3cm

小于等于30个字符

3 ~ 4cm

小于等于50个字符

4 ~ 6cm

小于等于80个字符

6cm以上

小于等于100个字符

如果实际内容长度超过以上要求,请按以下措施减少字符长度:

URL域名:建议不超过15个字符,使用简短的三级域名,不使用复杂的多级域名

URL路径:使用简短的路径名,不使用多级目录

URL参数:减少传递参数个数;缩短参数名长度;缩短参数值长度 如果以上措施仍无法满足实际场景要求,可将链接转为较短的链接,方法见附录7.2节短链接最佳实践。

6.1.3.设置容错等级

二维码容错等级分为4等(L、M、Q、H),等级越高对应可恢复的码字比例越高,具体每个等级可恢复的字符比例为L:7%,M:15%,Q:25%,H:30%。相同长度的内容,容错等级越高,二维码密度越大。

1、二维码展示在屏幕、质量较好的纸上或者有保护的码牌,使用低容错等级(建议使用L等级);

2、二维码打印在普通纸张展示,建议使用中容错等级(建议使用M等级)

3、放置在有遮挡场景展示时,建议使用高容错等级(Q或H等级);

6.1.4.设置分辨率

二维码展示在不同媒介上,对分辨率有不同的要求,为保证二维码能够清晰呈现并被扫描识别;作为屏幕使用时,建议二维码图像分辨率不小于72dpi,如图17所示。印刷使用时建议二维码图像分辨率为300dpi或以上,如图18所示。


图17:屏幕显示分辨率设置


图18:印刷分辨率设置

6.2.二维码展示标准

6.2.1.对比度

对比度、进光量影响摄像头的成像速度及扫码效率,当二维码在不同媒介使用时,显示效果可能不一样,如图19所示。为兼顾各种场景展示实现可扫描,建议二维码点阵为黑色,背景为白色,不推荐使用灰色或彩色二维码。

正确样例 错误样例 错误样例

图19:二维码对比度展示样例

6.2.2.二维码尺寸

不同场景的使用,建议商户按规范生成二维码,如表3所示。商户也可根据实际情况来调整二维码尺寸,具体尺寸对应内容长度参见6.1.2节设置内容长度。

表3:按场景选择二维码边长

使用场景

扫描距离

建议二维码边长

订单小票

0.1~0.2米

不小于2cm

WEB收款

0.2~0.6米

不小于2.5cm

自助点餐

0.1~0.3米

不小于3cm

收银台收款

0.2~1米

不小于4cm

缴费牌收款

0.3-2米

不小于10cm

1.5~5米

不小于30cm

6.2.3.点阵遮挡

二维码有容错率限制,不建议覆盖图形元素。二维码识别中存在三个关键定位点,如果这三个部位被遮挡,将无法识别到二维码,如图20所示。二维码如果需要添加LOGO标识,需使用居中覆盖,如图21所示,建议使用容错等级为M的二维码并保证覆盖面积不超过10%,或者容错能级为H的二维码覆盖面积不超过25%。进行设备识别测试,通过后方可对外发布二维码。

图20:定位点不可遮挡 图21:LOGO居中覆盖

6.3.二维码验收要求

为满足用户微信支付扫描体验要求,要做好收款二维码的质量检查,收款二维码上线前,需要在实际环境下测试和体验,验收完成再上线。上线后,要对收款二维码做好日常维护。具体检查项目和解决方案见表4。

表4:二维码验收检查项

质量项目

检查项

解决方案

二维码展示

二维码打印不清晰或打印区域残缺

重新打印清晰的二维码

二维码颜色变淡、污渍遮挡或损毁,无法识别

定期检查和更新二维码

二维码访问

内容链接不可访问

建立发现网站服务异常机制,能实时修复

扫描显示空白页

1、使用HTTPS协议时域名证书异常,建议做检查并及时修复
2、链接使用域名,不用IP地址的URL

扫描显示不安全网页

在公众号后台设置正确的业务域名

页面提示其他错误

根据具体错误进行处理, 定期检查二维码的正确性

6.4.二维码安全要求

防止二维码被非法替换:对二维码做好保护措施,可使用码牌保护,放置到用户不能接触到的地方;

防伪要求:二维码物料上可添加公司logo;

二维码链接使用HTTPS协议,避免被注入脚本攻击;

网站做好安全维护,防止用户扫码后下载病毒;

7. 附录

商品二维码标准: 国家商品二维码标准

名片二维码: 名片二维码通用技术规范

QR码官方介绍: QR码官方

7.2.长链转短链最佳实践

二维码内容对应链接参数较多的情况,可以通过key-value机制实现长链接转短链接。短链接中定义唯一ID(唯一ID可由字母+数组组合),链接访问时,后台通过ID映射跳转到带有参数的链接。

长链接URL示例:URL带有多个参数,长度超过本规范建议长度样例:
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/****.shtml?param1=1&code=aaa&id=12345

短链接示例:URL相对路径短,只带有一个参数,该参数可以作为唯一标识对应后台的记录(标识生成规则:固定位数,如7位,通过大写字母+小写字母+数字组合)样例:
https://qq.com?p=NwY5Mz9

7.3.收款二维码参考样例

微信支付常用二维码的参数情况:

表5:微信支付二维码参考样例参数对比

场景

二维码内容

尺寸

字符长度

容错等级

遮挡

付款码

130003404624115863

2.9cm

18个

L(7%)

面对面付款

wxp://f2f0Np0YBB7lPJdp-F-kZUmIMCkbskdbC3tWzSG6_KPtjNM=

3.2cm

54个

Q(25%)

微信买单二维码

https://payapp.weixin.qq.com/materialqr/entry/home?id=065452545384977

5cm

68个

M(15%)