Less Dependency of the Rfc2388 Multipart FormData ES2015 class

上传媒体文件API的是基于RFC2388协议,圈定的范围是,有大小限制的图片(2M)或者视频(5M)类型单文件,受微信支付官方技术助手伙伴在某次问答亲测有效代码启发,以下ES2015代码为微信支付APIv3图片、视频上传类接口文档补充nodejs纯语言无依赖版参考实现。

再造一遍微信支付v2版的nodejs版SDK

在2020这个时间节点,之所以还要再造一遍微信支付v2(相对于APIv3来说)的SDK轮子,实属是无奈之举,线下交易场景常见的付款码支付及退款功能,官方当下还没有开放出来v3版的,只能借助v2接口来处理; wechatpay-axios-plugin 从一开始目标就是为云原生而设计,遂再造一遍轮子,也抽出一些共生方法,为v3而用。

微信支付APIv3接口文档及开发者工具

官方文档侧重点是业务介绍,感觉是顺带把接口释义也做了下,对开发来说,请求方法、URI地址、数据结构、数据类型 这些才是关键点,本项目只摘录这些点,期望能给开发带来便利;另外这个项目其实是附产,本是为了生成代码,结果*悲伤*有一大筐,先就开源介绍一下这个项目吧。

这很可能是NodeJS中用来开发微信支付APIv3的顶级SDK之一

微信支付APIv3使用了许多成熟且牛逼的接口设计(RESTful API with JSON over HTTP),数据交换使用非对称(RSA)加/解密方案,上行数据采用(RSA)私钥证书签名,下行数据采用(RSA)公钥证书验签。本开发包使用NodeJS原生方法完整实现了微信支付APIv3的请求应答工作,HTTP客户端采用成熟的Axios,通过向Axios注册拦截器完整实现微信支付APIv3上行数据签名,下行数据验签。包括收单、媒体文件上传、发核券以及账单下载解析功能,同时提供官方应答证书命令行下载工具。

使用Guzzle标准包,向微信支付V3官方中间件添加媒体上传类

通过使用 GuzzlHttp\Psr7\Fnstream 修饰 GuzzlHttp\Psr7\MultipartStream 类,使微信支付官方wechatpay-guzzle-middleware支持媒体文件上传 。 同时在处理文件上传时,优化了业务代码获取文件二进制内容及对内容做 sha256 计算。 不侵入官方包,使用起来相当简单,仅在需要上传媒体文件时引入并实例化即可。