微信付款码是如何完成付款的


微信付款码是如何完成付款的文章插图
作者:suchengliu , 腾讯 TEG 后台开发工程师
出处:
微信收款机具在慢速网络中快速收款的技术揭秘
小绿盒在2G网络环境下收款速度较慢 , 影响商户体验 , 我们通过网络连接优化、数据传输优化和后台逻辑优化等一系列措施 , 将收款耗时降低近一半 , 达到了业界领先水平 , 改善了商户体验 。
1. 背景说明1.1 产品简介微信收款商业版为了覆盖更多收款场景 , 推出小绿盒收款机具 。
1.2 我们(收单平台)做了什么

  • 发挥收单平台专业聚合收单能力 , 为小绿盒提供丰富稳定的收单功能 。
  • 提供专业的机具接入方案(支付SDK等) , 确保机具厂商高效高质量完成接入 。

微信付款码是如何完成付款的文章插图
2.问题小绿盒在2G网络下收款速度较慢(因为小绿盒收款是窄带场景 , 且4G模块成本是2G的2倍以上 , 所以小绿盒没有用4G) 。
实验室情况:在2G实验室网络环境下 , 小绿盒收款一笔平均耗时需要5秒 , 而市场主流的解决方案只需3秒 。
真实商家反馈:小绿盒收款一笔耗时基本在5秒以上 , 有时达10秒 。 收款速度慢 , 影响商户使用 。
3.目标
  • 2G实验室网络环境下 , 收款一笔耗时不能超过3秒 。
  • 实际商家收款耗时表现达到业界领先水平 。
4.优化方案4.1 产品交互说明收款一笔的交互过程分4步:
微信付款码是如何完成付款的文章插图
步骤1:在键盘上输入收款金额 。
步骤2:按下确认键后进入扫码状态 , 在此过程中机具开始预建立网络连接(竞品做法一致) , 涉及DNS查询 , TCP握手和TLS握手 。
步骤3:扫码成功 , 等连接建立完成后再向支付后台发起支付请求 , 等待支付应答(小绿盒耗时5秒 , 竞品耗时3秒) 。
步骤4:收到后台返回的支付应答 , 展示支付结果 。
关键点总结:
  • 扫码状态(步骤2)期间的预建网络连接 , 是收款机具业界普遍做法 。
  • 支付耗时是指:扫码成功到收到支付应答之间的耗时(步骤3) , 受扫码快慢的影响 , 中间可能包括建立连接的部分耗时 。
4.2 现状态分析4.2.1 收款网络交互时序
微信付款码是如何完成付款的文章插图
由图可知 , 整个网络交互过程都是基于HTTPS短连接 。 收款一笔的耗时项包括:DNS解析、TCP握手、TLS握手、业务数据传输和后台处理(微信支付+其它后台逻辑) 。
可能耗时项:由4.1章节的说明可知 , DNS解析、TCP握手和TLS握手三项是否影响收款速度 , 受扫码操作(即步骤2)的快慢以及网络速度影响 , 扫码越慢 , 网络越快 , 建立网络连接(包括DNS查询 , TCP握手和TLS握手)有可能在步骤2中就全部完成了 。
固定耗时项:业务数据传输和后台处理两项为固定耗时项 。
4.2.2 耗时分布情况
微信付款码是如何完成付款的文章插图
4.2.3 和市场主流解决方案对比
微信付款码是如何完成付款的文章插图
产品方案说明DNS解析TCP握手TLS握手业务数据传输+后台处理总耗时 竞品短连接+二进制协议0(预埋ip)0.6033.6小绿盒短连接+HTTPS0.60.61.24.46.8
注:单位为秒
4.3 可能的方案
微信付款码是如何完成付款的文章插图
耗时项可能优化方案优点缺点预期收益 DNS解析长连接消除DNS查询的耗时机具需要增加长连接处理逻辑降低耗时0.6秒(1RTT)机具缓存IP消除DNS查询的耗时增加缓存IP逻辑降低耗时0.6秒(1RTT)TCP握手长连接消除TCP握手的耗时机具需要增加长连接处理逻辑降低耗时0.6秒(1RTT)UDP消除TCP握手的耗时1.可靠传输 , 拥塞控制等 2.需要一套完整安全方案:加密和认证 , 密钥安全等 3.机具程序和后台程序改动量大 4.不是所有的网络环境能使用UDP降低耗时