2

悉数迄今为止功能最全的微信支付SDK基础开发包

 2 years ago
source link: https://thenorthmemory.github.io/post/milestones-the-wechatpay-axios-plugin/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK