20年中在对接商家券的时候,翻了官方PHP SDK的牌子,0.1系缺个媒体文件上传比较优雅的解决方案,于是顺手就为其提了PR。之后,我就在思考,动态编程语言讲究的快,是不是应该可以在做点儿好玩的,有意义的,可以加速开发对接的,不被人抱怨的开发包呢。索性,仗着多年的从业经验,尝试从底层开始写,不断迭代,于是就有了这么一款小巧,低依赖,符合规范,面向对象模式,命令行模式,适用涵盖Windows、macOS、Linux的微信支付nodejs版基础开发包

下面我以版本迭代时间线为过程,来讲讲这款SDK开发包的开发故事。

v0.0.1 初始版本

这个版本,发布于2020年6月26号,核心是3个类,4个文件共计11个方法,已经是完整实现了APIv3的技术规范:AES-GCM对称加解密,RSA-OAEP非对称加解密及验签规范。RSA-OAEP的原生公钥加密、私钥解密方法封装,是翻过无数遍nodejs的文档,最后精炼到各5行代码共计10行,这应该是nodejs中,RSA-OAEP加解密原生实现的最早封装

v0.1.0 正式版本

这个系列,发布于2020年7月2号。在申城最热的一段时间,晚上睡不着就捋代码呗,哔哩啪啦猛敲代码(其实也没多少行代码,全被精简了),迭代了共计十个版本,于是就有了这么一个正式版。

v0.2 面向对象模式开发

这个系列,发布于2020年7月7号,止于2020年9月9号,四个版本。重要功能就是可以顺溜地使用动态对象来对接APIv3接口了,同时降低NodeJS版本兼容至10.15(这个是云开发的环境版本)。详细可阅读微信支付APIv3的Nodejs版SDK,让开发变得简单不再繁琐

v0.3 支持APIv2调用

这个系列,发布于2020年9月11号,止于2021年1月22号。是个被“逼”出来的系列。这个系列加入了APIv2版的接口驱动,重要功能就是对「付款码支付」及「退款」能力的支持。详细可阅读适合云开发的微信支付v2及v3版Nodejs SDK,这就不展开了。在这一段时间里,有太多事情要跟进,所以一直没有太多时间写代码。展期了好久好久才进入了重要的下一重构时刻。

v0.4 同质化v2&v3 OOP开发

这个系列,发布于2021年2月28号,止于2021年3月25日,五个版本。这个系列的由来是因一位同学提的issue展开的,于是做了超量重构,不仅改写了入口程序,还加强了APIv2版的同质化调用,详细可阅读微信支付开发,可以简化到复制+粘贴这种地步纯属意外,还可以这么起底微信支付接口对接

有那么一瞬间,我以为这个版本就会是终点了,可以进入LTS版仅需长期维护了。殊不知,CLI工具集还有一漏勺没有完善好,那好吧,那就再来一波加强重组呗。

v0.5 命令行工具集

这个系列,发布于2021年3月27号,加强了命令行工具集,请求微信支付官方接口,现在可以在命令行上跑起来了。英文slogan就是: Play the OpenAPI requests over command line。 这得解释解释,为啥用“Play”呢,而不是其他词儿呢?其实这个功能早在20年10月,chain支付宝OpenAPI接口时,脑阔开了个洞,想出来的。微信支付的CLI工具已经迟到好久了,现在好了,两款驰名的支付平台,都可以如丝质般顺溜,搞起CI了。这就是play的由来——为开发而生: commit to play for running

说说功能点,这个系列就加强了命令行方式与接口交互能力,同时降级了自0.0.4版就一直存在的 「平台证书」下载器 为工具集内一条特殊命令。详细玩法可阅读 开发系列之「起步」真香:一行命令即可体验「微信支付」全系接口能力

另外,这个加强重构版的CLI交互工具,从设计一开始就支持扩展能力,有兴趣的同学完全可以基于bin/cli/request.js构建出更多子命令,不干扰纯应用,跑着欢实就好。

NEXT

如果还有NEXT,那可能就是得把tsd文件翻新一下,ProxyConstructor那块是TypeScript 自4.0引入,动态属性类型签名的高级甚高级用法,还不太会,学习中,如果有娴熟的同学,可以提PR贡献一下。

哦,对了,文章如果看着还不错,SDK用着还顺手,那就star一下repo吧 https://github.com/TheNorthMemory/wechatpay-axios-plugin MIT开源,纯免费,随便用。做开源不易,况且还是为国民应用做底层基础开发包就更是难啊,平时又太忙,只能是按需来做,有空再续。