04月21, 2021

微信支付APIv3版介绍和小程序支付案例

2020年微信推出了最新的微信支付API v3。

它和之前的V2版本的区别见下图:

*.png

为啥推出新版的呢?

因为之前V2用XML,我们首先得解析XML,然后还得转成json,老麻烦了; 因为之前V2不大安全,回调没加密,签名使用MD5等简单的加密,现在牛逼了,使用非对称加密。

用官方的说法是:

为了在 保证支付 安全的前提下,带给商户 简单、一致且易用的开发体验,我们推出了全新的微信支付API v3。

相较于的之前微信支付API,主要区别是:

  • 遵循统一的Restful的设计风格
  • 使用JSON作为数据交互的格式,不再使用XML
  • 使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256
  • 不再要求HTTPS客户端证书
  • 使用AES-256-GCM,对回调中的关键信息进行加密保护

小程序支付案例介绍

小程序支付的定义:通过好友分享或扫描二维码在微信内打开小程序时,可以调用微信支付完成下单购买的流程。

微信支付的开放模式和业务场景

微信支付的开放模式和业务场景介绍,老版文档点此,新版文档点此

这一块比较难以理解,我们主要来解释什么是两清模式?

*.png

小程序支付的图,红色连接线为二清模式,政策上不允许采用该模式。

因为两清是存在资金隐患的,可能造成非法集资或什么的法律问题:

例如,以电商为例,平台型电商机构就像一个大卖场,吸引了买卖双方,买家原本应该直接付给卖家的资金先是进入了平台的资金账户,再由平台清算给商户。

平台账户沉淀了巨额的商户结算资金,存在交易信息篡改、资金挪用的风险,这种模式就像一个定时炸弹,随时都有可能引爆,直接影响大大小小的二级商户,给社会带来了巨大的隐患,成为监管平台重点关注的方面。

更多可参考电商平台的“二清”模式解析这篇文章进行了解。

所以微信禁止这种二清的模式。

微信支付npm包

目前我在GitHub上挑了个看上去代码比较简单的包:wxpay-v3

可以使用

npm i wxpay-v3 --save --registry=https://registry.npm.taobao.org

来安装。安装后npm start运行,可能会显示缺少node-aes-gcm这个包,这是再安装node-aes-gcm。

npm install node-aes-gcm --registry=https://registry.npm.taobao.org

小程序V2版本可参考之前撰写的小程序微信支付详解与代码示例这篇文章。

IP段

回调接口可以设置白名单来增强安全性

微信官方文档最佳实践中有提到

参考IP地址及子网划分

本文链接:https://www.daguanren.cc/post/wei-xin-zhi-fu-APIv3-ban-jie-shao-he-xiao-cheng-xu-zhi-fu-an-li.html

-- EOF --

Comments