wechatpay-apiv3 / wechatpay-apache-httpclient

微信支付 APIv3 Apache HttpClient装饰器(decorator)
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/index.shtml
Apache License 2.0
674 stars 251 forks source link

是否提供一个Spring Boot 3.0的支持版本? #187

Closed JiahaoLin2018 closed 1 year ago

JiahaoLin2018 commented 1 year ago

CloseableHttpClient httpClient = WechatPayHttpClientBuilder.create() .withMerchant(wxConfig.getMchId(), certSerialNo, privateKeys) .withValidator(new WechatPay2Validator(verifier)) .build(); HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); this.restTemplate = new RestTemplate(clientHttpRequestFactory);

当前[wechatpay-apache-httpclient]使用的是org.apache.httpcomponents:httpclient:4.5.13的包 而spring 6.0中HttpComponentsClientHttpRequestFactory目前只支持org.apache.httpcomponents.client5:httpclient5:5.x.x的包

麻烦提供一个基于jdk17支持spring boot 3.0版本的SDK,或者有其他解决方案吗?

xy-peng commented 1 year ago

能否介绍下你真正的需求,你使用 wechatpay-apache-httpclient 的场景和方式,以便于我们针对建议或者提供合适的解决方案。

JiahaoLin2018 commented 1 year ago

image image image image 目前报错的这行代码是由于升级spring 6.0导致的。 由于[spring-web-6.0.2]中的HttpComponentsClientHttpRequestFactory仅支持使用org.apache.hc.client5包下的HttpClient构造生成; 而[wechatpay-apache-httpclient]包支持的HttpClient则是org.apache.http.client包下的HttpClient,所以导致了上述代码报错。

麻烦看一下有什么解决方案?

xy-peng commented 1 year ago

将 wechatpay-apache-httpclient 升级到 httpclient5 可能不是好的方案,我们还有很多使用 httpclient4 的开发者。

长期的方案,我们考虑在 wechatpay-java 中提供适配,支持 spring 的 HttpClient。

短期,如果要用 wechatpay-apache-httpclient 只能建议你先暂时别升级 spring6。

也建议你试试 wechatpay-java,直接调用我们封装好的业务接口更方便。如果你有什么疑问或者不方便使用 wechatpay-java 的地方,请告诉我们。

JiahaoLin2018 commented 1 year ago

好的,谢谢,那目前暂时不能进行spring6版本升级了。 若时间充裕时我再将SDK重构成 wechatpay-java,完成该步骤后再进行spring6版本升级。