Skip to content

Latest commit

 

History

History
193 lines (127 loc) · 11.4 KB

CHANGELOG.md

File metadata and controls

193 lines (127 loc) · 11.4 KB

变更历史

1.4.10 - 2024-09-11

  • 客户端在RSA非对称加解密方案上,不再支持OPENSSL_PKCS1_PADDING填充模式,相关记录见这里
  • 增加#[\SensitiveParameter]参数注解,加强信息安全;
  • 支持PHP8.4运行时;

1.4.9 - 2023-11-21

  • 支持PHP8.3运行时

1.4.8 - 2023-01-05

  • 新增海外账单下载/v3/global/statements应答特殊处理逻辑;

1.4.7 - 2022-12-06

  • 对PHP8.2的官方支持,如下PHP8.2的特性需要被提及:
    • ext-openssl 有若干调整,已知在 OpenSSL3.0 上,常量 RSA_SSLV23_PADDING 被删除(详细可阅读 openssl/openssl#14216, openssl/openssl#14283),PHP做了兼容处理,如果扩展依赖的是OpenSSL3.0,则对应的OPENSSL_SSLV23_PADDING常量将不存在,进而影响到了「非对称加解密混合填充模式的测试用例」的覆盖(详情可阅读 shivammathur/setup-php#658)。本类库并不支持此填充模式,删除对OPENSSL_SSLV23_PADDING的测试断言,向前兼容;
    • 对象动态属性的废弃提示(Deprecate dynamic properties),本类库实例构造的是ArrayIterator的一个“伪”动态属性结构体,对象属性访问实则访问的是ArrayObject内置__storage属性,形似动态属性实则不是;此废弃提示对本类库本身无影响;

1.4.6 - 2022-08-19

  • 取消 APIv2 上的trigger_error提醒,以消除不必要的恐慌;
  • 优化 Transformer::walk 方法,以支持 Stringable 对象的值转换;

1.4.5 - 2022-05-21

  • 新增APIv3请求/响应特殊验签逻辑,国内两个下载接口自动忽略验签,海外商户账单下载仅验RSA签名,详见 #94
  • 新增APIv3海外商户账单下载测试用例,示例说明如何验证流SHA1摘要;

1.4.4 - 2022-05-19

  • 新增APIv3客诉图片下载测试用例,示例说明如何避免double pct-encoded问题;
  • PHP内置函数hash方法在PHP8变更了返回值逻辑,代之为抛送ValueError异常,优化MediaUtilTest测试用例,以兼容PHP7;
  • 新增APIv2请求/响应白名单URL及调整验签逻辑,对于白名单内的请求,已知无sign返回,应用侧自动忽略验签,详见 #92

1.4.3 - 2022-01-04

  • 优化,严格限定初始化时mchid为字符串;
  • 优化,严格限定chain接口函数入参为字符串;
  • 优化README,增加常见问题示例说明URL template用法;

1.4.2 - 2021-12-02

  • 优化Rsa::parse代码逻辑,去除is_resource/is_object检测;
  • 调整Rsa::from[Pkcs8|Pkcs1|Spki]加载语法糖实现,以Rsa::from为统一入口;
  • 优化ClientDecorator::request[Async]处理逻辑,优先替换URI Template变量,可支持短链模式调用接口;

1.4.1 - 2021-11-03

  • 新增phpstan/phpstan:^1.0支持;
  • 优化代码,消除函数内部不安全的Unsafe call to private method|property ... through static::调用隐患;

1.4.0 - 2021-10-24

  • 调整Guzzle最低版本支持至v6.5.0,相应降低PHP版本要求至7.1.2,相关见#71519;
  • 调整PHPUnit最低版本至v7.5.0||v8.5.16||v9.3.5,相关问题见#4663;

详细说明可见1.3至1.4升级指南

1.3.2 - 2021-09-30

  • 增加MediaUtil::setMeta函数,以支持特殊场景(API)下meta数据结构的特殊需求;

1.3.1 - 2021-09-22

  • 修正APIv2上,合单支付产品xml入参是combine_mch_id引发的不适问题;

1.3.0 - 2021-09-18

  • 增加IDE提示OpenAPI\V2&OpenAPI\V3的两个入口,接口描述文件拆分为单独的包发行,生产环境无需安装(没必要),仅面向开发环境;
  • 优化userAgent方法,使拼接User-Agent字典清晰可读;
  • 优化README,增加V3通知验签注释说明,增加v2链式otherwise处理逻辑说明;

1.2.2 - 2021-09-09

  • at sign形式,温和提示APIv2DEP_XML_PROTOCOL_IS_REACHABLE_EOL,相关#38
  • 优化Transformer::toArray函数,对入参xml非法时,返回空array,并把最后一条错误信息温和地打入E_USER_NOTICE通道;
  • 修正Formatter::ksort排列键值时兼容问题,使用字典序(dictionary order)排序,相关#41, 感谢 @suiaiyun 报告此问题;

1.2.1 - 2021-09-06

  • 增加加密RSA私钥的测试用例覆盖;
  • 优化文档样例及升级指南,修正错别字;
  • 优化内部withDefaults函数,使用变长参数合并初始化参数;
  • 优化Rsa::encryptRsa::decrpt方法,增加第三可选参数,以支持OPENSSL_PKCS1_PADDING填充模式的加解密;

1.2.0 - 2021-09-02

  • 新增Rsa::from统一加载函数,以接替PemUtil::loadPrivateKey函数功能;
  • 新增Rsa::fromPkcs1, Rsa::fromPkcs8, Rsa::fromSpki语法糖,以支持从云端加载RSA公/私钥;
  • 新增RSA公钥Rsa::pkcs1ToSpki格式转换函数,入参是base64字符串;
  • 标记 PemUtil::loadPrivateKeyPemUtil::loadPrivateKeyFromString不推荐用法;
  • 详细变化可见1.1至1.2升级指南

1.1.4 - 2021-08-26

  • 优化平台证书下载工具使用说明,增加composer exec执行方法说明;
  • 优化了一点点代码结构,使逻辑更清晰了一些;

1.1.3 - 2021-08-22

  • 优化README,增加回调通知处理说明及样本代码;
  • 优化测试用例,使用严格限定名称方式引用系统内置函数;
  • 优化Makefile,在生成模拟证书时,避免产生0x00开头的证书序列号;
  • 调整composer.json,新增guzzlehttp/uri-template:^1.0支持;

1.1.2 - 2021-08-19

  • 优化README密钥证书等相关术语保持一致;
  • 优化UPGRADING,增加从php_sdk_v3.0.10迁移指南;
  • 优化测试用例,完整覆盖PHP7.2/7.3/7.4/8.0 + Linux/macOS/Windows运行时;
  • 调整composer.json,去除test, phpstan命令,面向生产环境可用;

1.1.1 - 2021-08-13

  • 优化内部中间件始终从\GuzzleHttp\Psr7\Stream::__toString取值,并在取值后,判断如果影响了Stream指针,则回滚至开始位;
  • 增加APIv2上一些特殊用法示例,增加数据签名样例;
  • 增加APIv2文档提示说明DEP_XML_PROTOCOL_IS_REACHABLE_EOL;
  • 修正APIv2上,转账至用户零钱接口,xml入参是mchid引发的不适问题;
  • 增加APIv2上转账至用户零钱接口测试用例,样例说明如何进行异常捕获;

1.1.0 - 2021-08-07

  • 调整内部中间件栈顺序,并对APIv3的正常返回内容(20X)做精细判断,逻辑异常时使用\GuzzleHttp\Exception\RequestException抛出,应用端可捕获源返回内容;
  • 对于30X4XX,5XX返回,Guzzle基础中间件默认已处理,具体用法及使用,可参考\GuzzleHttp\RedirectMiddleware\GuzzleHttp\Middleware::httpErrors说明;
  • 详细变化可见1.0至1.1升级指南

1.0.9 - 2021-08-05

  • 优化平台证书下载器CertificateDownloader异常处理逻辑部分,详见#22;
  • 优化README使用示例的异常处理部分;

1.0.8 - 2021-07-26

  • 增加WeChatPay\Crypto\Hash::equals方法,用于比较APIv2哈希签名值是否相等;
  • 建议使用APIv2的商户,在回调通知场景中,使用此方法来验签,相关说明见PHPhash_equals说明;

1.0.7 - 2021-07-22

  • 完善APIv3APIv2工厂方法初始化说明,推荐优先使用APIv3;

1.0.6 - 2021-07-21

  • 调整 Formatter::nonce 算法,使用密码学安全的random_bytes生产BASE62随机字符串;

1.0.5 - 2021-07-08

  • 核心代码全部转入严格类型declare(strict_types=1)校验模式;
  • 调整 Authorization 头格式顺序,debug时优先展示关键信息;
  • 调整 媒体文件MediaUtil类读取文件时,严格二进制读,避免跨平台干扰问题;
  • 增加 测试用例覆盖APIv2版用法;

1.0.4 - 2021-07-05

  • 修正 segments 首字符大写时异常问题;
  • 调整 初始入参如果有提供handler,透传给了下游客户端问题;
  • 增加 PHP最低版本说明,相关问题 #10;
  • 增加 测试用例已基本全覆盖APIv3版用法;

1.0.3 - 2021-06-28

  • 初始化jsonBased入参判断,平台证书及序列号结构体内不能含商户序列号,相关问题 #8;
  • 修复文档错误,相关 #7;
  • 优化 github actions,针对PHP7.2单独缓存依赖(PHP7.2下只能跑PHPUnit8PHP7.3以上均可跑PHPUnit9);
  • 增加 composer test 命令并集成进 CI 内(测试用例持续增加中);
  • 修复 PHPStan 所有遗留问题;

1.0.2 - 2021-06-24

  • 优化了一些性能;
  • 增加 github actions 覆盖 PHP7.2/7.3/7.4/8.0 + Linux/macOS/Windows环境;
  • 提升 phpstanlevel8 最严谨级别,并修复大量遗留问题;
  • 优化 \WeChatPay\Exception\WeChatPayException 异常类接口;
  • 完善文档及平台证书下载器用法说明;

1.0.1 - 2021-06-21

  • 优化了一些性能;
  • 修复了大量 phpstan level6 静态分析遗留问题;
  • 新增\WeChatPay\Exception\WeChatPayException异常类接口;
  • 完善文档及方法类型签名;

1.0.0 - 2021-06-18

源自 wechatpay-guzzle-middleware,不兼容源版,顾自 v1.0.0 开始。

  • APIv2 & APIv3 同质化调用SDK,默认为 APIv3 版;
  • 标记 APIv2 为不推荐调用,预期 v2.0 会移除掉;
  • 支持 同步(sync)(默认)及 异步(async) 请求服务端接口;
  • 支持 链式(chain) 请求服务端接口;