Skip to content

v0.9.0

Latest
Compare
Choose a tag to compare
@TheNorthMemory TheNorthMemory released this 09 Mar 04:14
· 7 commits to master since this release
v0.9.0
c139fb0
  • 调整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))