- 针对
APIv3
返回的HTTP status code非20x场景,不再尝试去验签,异常类型从AssertionError
回退为AxiosError
;
- 修正
Transformer.toObject
类型标注错误; - 动态
uri_template
参数类型标注,感谢 @taoliujun 报告此问题;
- 最后一版支持node10环境;
- 修正部分
dts
类型标注; - homepage 调整到 https://wechatpay.js.org
- 升级依赖
axios@^0.28.0
for the CVE-2023-45857;
- 取消对
axios/lib/utils
的依赖。
- 升级依赖
axios@0.21.2-0.27
,xml2js@0.5-0.6
;
- 升级依赖
xml2js@^0.5.0
for CVE-2023-0842;
- 修复多个
uri_template
占位符变量,无法正确替换问题;
- 优化
README
,增加v2版付款到零钱示例不验签使用方法; - 解决
CLI
下初始化参数mchid
必须是字符串类型的遗留问题;
- 修正
Hash.md5
当给正确的key
时,返回错误的签名值问题;
- 优化了一点点
类型声明
; - 修正测试用例覆盖
axios@0.25.0
的url
非空字符串限定场景;
- 优化
Rsa.encrypt
及Rsa.decrypt
以支持Java
的RSA/ECB/PKCS1Padding
填充方案;
- 补充
Formatter
遗漏的导出函数,感谢 @Nxys PR;
- 优化,严格限定初始化参数
mchid
为字符串,避免带参请求远端接口时,被校验不通过情况; - 优化,
Aes
,Rsa
,Hash
等类实现,支持通过解构
语法仅获取封装的静态方法,例如{ sign } = require('./lib/rsa')
;
- 增加V2版合单支付中的
combine_mch_id
校验能力支持;
- 当平台证书下载工具工作
异常
时,捕获并打印出异常提示信息;- 当
商户证书序列号
错误时,打印出商户证书序列号有误
服务端返回信息; - 当
商户RSA私钥
错误时,打印出错误的签名,验签失败
服务端返回信息; - 当
APIv3密钥
错误时,打印出Error: Invalid key length
错误堆栈;
- 当
- 修正 #35 v2付款接口无法使用的问题 ,感谢 @Starrah 报告及PR修正;
- 新增
Hash.equals
用来判断签名值是否相等;
- 改进
Formatter.nonce
发生器算法; - 调整
Formatter.authorization
字典排序,关键信息优先展示; - 修正 内置常量拼写错误,优化文档;
- 优化 APIv3
Decorator.jsonBased
逻辑,平台证书certs
配置项,排除掉配置项的商户serial
序列号;
- 优化 APIv3
Decorator.responseVerifier
,对于验签逻辑异常原样返回response{data,headers}
结构,方便排查问题,相关 #28, #30; - 新增
OpenAPI
mock测试,使用nock
驱动,覆盖 #28, #30 问题;
- 解决
index.d.ts
上的AesEcb
类型签名遗漏,感谢 @zhoulingfengofcd - 新增
aes-128-cbc/pkcs7padding
加解密功能,AesCbc::encrypt
与其他语言兼容,详情见 PR #29 感谢 @zhoulingfengofcd - 新增
AesCbc
单元测试用例覆盖, 感谢 @zhoulingfengofcd - 调整文档,使用内置
Multipart
类上传图片,使用form-data
包的同学需要看下 PR #26 内置包与下游包功能实现上的异同,感谢 @wptad
- 解决
index.d.ts
上的Iterator<Tuple>
异常问题 - 暂时使用
// @ts-ignore: FIXEME
备注上不准确的Proxy chain
写法,欢迎熟悉这块的同学贡献解决方案
- 修正
Multipart#delete
方法,其在删除多name
的值时,存在bug - 增加测试用例覆盖
Multipart.delete
- 调整
Multipart#entries, keys, values
严格遵从Iterator protocols
,其返回值均为Array Iterator
- 优化
Multipart#get
方法的返回值,当且当无键时返回undefined
- 增加测试用例覆盖
Multipart.FormData
- 完善
Multipart#set, delete, has, get, getAll, keys, values
等方法
- 新增
Multipart
类,不再peerDependency
,form-data
说明及用法见 #22
- 优化CLI,扩展
wxpay <uri>
的-b
参数为可变布尔量,兼容之前版本用法,以支持 #21
- 代码重构,
APIv2
的返回数据默认强校验,特殊接口需给特殊transformResponse
,相关见 #20 - 代码重构,删除了
interceptor.js
包装文件,不再兼容0.1系列,返回数据默认强校验,特殊接口需给特殊transformResponse
,相关见 #19
- 优化文档,
证书
相关名词与官方文档保持一致 - 优化代码,使用ES6
Reflect.set
代替param-reassign
,性能更高 - 新增函数
Hash.hmac
方法,广度支持Hash-based Message Authentication Code
- 调整函数
Hash.hmacSha256
为不推荐方法,内部改写为固定Hash.hmac
调用 - 调整CLI
req <uri>
成功调用仅返回{config, headers, data}
数据结构
- 优化CLI,
wxpay crt
下载平台证书仅在成功验签完成后写入文件 - 优化文档,
AesGcm
解密示例 - 优化内部
chain
逻辑,遵循RFC3986
规范,baseURL
支持带部分路径的海外接入点 - 优化代码
SonarQube
检测结果3A+0.5%
- 优化CLI,
wxpay <uri>
向前兼容以支持slash(/)结尾的请求,形如v3/applyment4sub/applyment/
- 优化CLI,
wxpay <uri>
现在支持型如v2.pay.micropay
,v3.pay.transactions.native
调用 - 优化
README
文档,适配最新CLI用法;增加APIv3消息通知QA章节;增加技术交流QQ群说明
- 优化CLI,可以直接
wxpay <uri>
发起请求 - 优化
README
文档,适配最新CLI用法
- 新增命令行方式与微信支付接口交互工具
- 调整可选依赖包为
peerDependencies
,使用完整功能需手动安装form-data
或/及yargs
- 使用最新版
eslint
及eslint-config-airbnb-base
- 增加
utils.merge
依赖函数测试校验
- 支持APIv2版的俩账单下载,调用方法与APIv3类同;
- 增加测试用例覆盖,初始化参数
secret
(for APIv2)如未设置,HMAC-SHA256
数据签名时,可能引发 #14
- 优化
Wechatpay
在多次实例化时赋值Symbol(CLIENT)
异常问题,增加wechatpay.test.js
测试用例覆盖
- 支持 企业微信-企业支付 链式调用,需要额外注入签名规则,见上述文档用法示例
- 文件名大小写问题 #11 感谢 @LiuXiaoZhuang 报告此问题
- 解决了一个
AES-GCM
在Node10
上的解密兼容性问题,程序在Node10
上有可能崩溃,建议Node10
用户升级至此版本
- 重构
Wechatpay
类,同时支持 APIv2&v3's 链式调用 - 改变
Wechatpay.client
返回值为Wechatpay.client.v3
,Wechatpay.client.v2
为xmlBased
接口客户端 - 废弃
withEntities
方法,其在链式多次调用时,有可能达不到预期,详情见 #10,感谢 @ali-pay 报告此问题 - README 文档中文化
- 完善补缺
tsd
声明
- Typed and tips on
Wechatpay
class(#9), thanks @ipoa
- Upgrade Axios for the CVE-2020-28168
- Optim: Let
Aes.pkcs7.padding
strictly following therfc2315
spec - Optim: Better of the
Hash.md5
andHash.hmacSha256
- Coding comments and README
- Optim: new param on
xmlBased({mchid})
, while passed in, thenTransformer.signer
doing theassert
with the post data. - Feature: Customize the HTTP
User-Agent
. - Refactor: Split
aes.js
as ofAes
,AesGcm
andAesEcb
classes foraes-256-ecb/pkcs7padding
algo.
- Feature: The XML based API requests.
- Optim: Coding quality.
- Fix: #8
verfier
on the204
status case.
- Optim: Back compatible for
12.4.0
<Node
≧10.15.0
.
- Feature:
OOP
developing style of the wechatpay APIv3.
- Optim: Toggle the
Nodejs
version ≧10.15.0
. - Optim: Documentation and coding comments.
- Feature: definition of the
Typescript
- Optim: on
castCsvBill
, drop thetrim
on each rows - Optim: on
response
validation, checking ± 5 mins first then toRsa.verify
- Optim: moved the
commander
optional dependency, because it's only for theCLI
tool - Feature: shipped 99 tests(
npm test
)
- Feature: billdownload and castCsvBill
- eslint enabled (
npm run lint
)
- Chinese document
- Renew document and codes comments
- Feature: certificate downloader, deps on
commander
- Feature: media file upload, optional deps on
form-data
- Feature: Assert the response's timestamp ± 5 mins
- Refactor as CommonJS style(#6)
- Limits the communicating parameters(#7)
- Coding styles(#5)
- Coding comments and Document(#4, #3, #2, #1)
- Init ES2015+ style