Skip to content

Releases: TheNorthMemory/wechatpay-axios-plugin

v0.9.4

08 May 10:52
v0.9.4
e1af06b
Compare
Choose a tag to compare

优化文件上传API功能,支持AxiosAutomatic serialization to FormData用法,伪代码示例如下:

wxpay.v3.merchant.media.upload.post({
 meta: JSON.stringify({ filename, sha256 }),
 file: fs.createReadStream(localfilepath),
}, {
 meta: { filename, sha256 },
 headers: { 'Content-Type': 'multipart/form-data' },
});

v0.9.3

30 Mar 05:12
v0.9.3
4650af9
Compare
Choose a tag to compare
  • 优化Rsa.encryptRsa.decrypt 第三参数放弃支持 RSA_PKCS1_PADDING 填充方案;
  • 标记Rsa.RSA_PKCS1_PADDING封装常量为废弃,下一主要版本将剔除;

v0.9.2

22 Mar 02:57
v0.9.2
e2272f6
Compare
Choose a tag to compare
  • 支持 Hash.keyObjectFromHash.md5 第一个参数是KeyObject对象的用法;

v0.9.1

15 Mar 12:55
v0.9.1
a47bf6e
Compare
Choose a tag to compare
  • 隔离APIv2APIv3配置和客户端实例;
  • 重构Transformer.signer以支持GETPOST请求自动签名;
  • 将初始化声明的merchant{key,cert}移动到transformer.signer内部,当需要时,通过每个请求声明的security:true加载;
  • 修复文件流下载的Transformer.parse(xml)异常问题;
  • 修复Rsa.fromPkcs1(str,KEY_TYPE_PUBLIC)加载公钥异常问题;
  • 优化文档,Q/A简单说明Rsa.from[Pkcs8|Pkcs1|Spki]加载公/私钥新机制;

v0.9.0

09 Mar 04:14
v0.9.0
c139fb0
Compare
Choose a tag to compare
  • 调整node最低版本要求至12,不再支持node10
  • 调整依赖 @thenorthmemory/multipartfast-xml-parser
  • 调整依赖 axios 版本到 ^1.8.2
  • 废弃并删除Aes.encryptAes.decrypt方法;
  • 废弃并删除其他标记@deprecated的方法及属性;
  • 调整Aes.AesGcm.encryptAes.AesGcm.decrypt参数顺序,遵循里式代换原则;
  • 调整APIv2上已知请求无nonce_str返回无sign内置化判断,优化return_code及/或result_codeSUCCESS时无需验签;
  • 调整APIv2APIv3接口请求返回异常时,Promise.rejectAssertError改成标准AxiosError,便于调试追踪问题;
  • 调整new Wechatpay()从单例到实例,并显式露出async [get|post|put|patch|delete]方法,便于多商户实例应用使用;
  • 新增wxpay.chain()实例方法,便于源URI末尾是delete单词的另类链构型;
  • 新增Hash.isKeyObjectHash.keyObjectFromRsa.isKeyObjectRsa.from[Pkcs8|Pkcs1|Spki]静态方法;
  • 新增Rsa.from('file://', 'private'|'public')方式加载本地RSA公/私文件;
  • 优化AxiosConfig<'secret'|privateKey'|'certs'>在实例后类型从BinaryLike调整成KeyObject,增强安全性;

针对APIv2的主要优化内容

APIv2的返回值验签与传输的载荷(XML)无关,本次优化:

  • 内置了「忽略无签(sign)可验」逻辑
  • 「加强判断状态码(return_code)/业务结果(result_code)非SUCCESS情形」,当数据校核异常时,载荷数据均以解析后的对象形式抛送AxiosError

针对APIv3的主要优化内容

APIv3的返回值验签与传输的载荷(JSON/binary)强相关,本次优化:

  • 内置「按所请求的URL,自动忽略下载行为(binary)的验签」逻辑,交由应用端自行验签,微信支付官方强烈建议商户对下载的数据进行验签
  • 对于 HTTP状态码 20X 区间时的客户端异常AxiosError.response.data标注为原始传输的载荷,有可能是JSON字符串,也可能是字符串
  • 对于 HTTP状态码 4XX/5XX时的异常AxiosError.response.data类型,其有可能是JSON解析后的对象,也可能是html字符串

注意:破坏性更新

0.8几乎无需过多调整代码即可升级到0.9,仅在以下几个点上不兼容:

  • OpenAPIchainable链末尾的大写GET/POST/PUT/PATCH/DELETE方法均已删除,请使用小写;

  • 标记为@deprecated的方法及属性均已删除,请参照之前的废弃提示用同等原值代替;

  • AesGcm加解密,参数顺序进行了调整,微信支付官方的webhook通知解密时需要格外注意,例如:

- AesGcm.decrypt(nonce, secret, ciphertext, aad);
+ AesGcm.decrypt(ciphertext, secret, nonce, aad);
  • 单例模式注册转换器打印日志方式,调整为实例方式,并且.client Getter仅在根级实例有效,例如:
- Wechatpay.client.v2.defaults.transformRequest.push(data => (console.log(data), data))
+ wxpay.client.v2.defaults.transformRequest.push(data => (console.log(data), data))

v0.8.14

01 Jan 10:45
v0.8.14
4903275
Compare
Choose a tag to compare
  • 优化README增加微信支付公钥相关说明,备注pfx格式的商户API密钥在高版本nodejs上的额外转换说明;

v0.8.13

27 Mar 08:11
v0.8.13
e3798e5
Compare
Choose a tag to compare
  • 针对APIv3返回的HTTP status code非20x场景,不再尝试去验签,异常类型从AssertionError回退为AxiosError;

v0.8.12

09 Mar 11:01
v0.8.12
284526a
Compare
Choose a tag to compare

v0.8.11

01 Mar 04:19
v0.8.11
bcff5cb
Compare
Choose a tag to compare

v0.8.10

14 Feb 03:04
v0.8.10
d8fe421
Compare
Choose a tag to compare

升级依赖 axios@^0.28.0 for the CVE-2023-45857;