wechatpay-apiv3 / wechatpay-java

微信支付 APIv3 的官方 Java Library
Apache License 2.0
870 stars 195 forks source link

使用代理的情况下,初始化config 中下载证书出错 #230

Closed liulizhen9912 closed 9 months ago

liulizhen9912 commented 10 months ago

错误描述

DefaultHttpClientBuilder clientBuilder = new DefaultHttpClientBuilder() .proxy(proxy); Config config = new RSAAutoCertificateConfig.Builder().httpClientBuilder(clientBuilder)

重现bug的步骤

初始化RSAAutoCertificateConfig 的时候,通过proxy方式,通过代理服务器发送http,好像是证书返回是空 httpClient.execute(httpRequest, DownloadCertificateResponse.class); result = {HttpException@1958} Method threw 'com.wechat.pay.java.core.exception.HttpException' exception. httpRequest = {HttpRequest@1962} "{"http_method":"GET","url":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","uri":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","headers":{"headers":{"Authorization":"WECHATPAY2-SHA256-RSA2048 mchid=\"11\",nonce_str=\"oF8l8KVnMO5fMwHzElhS4LyaOWpQo6pg\",timestamp=\"1695127868\",serial_no=\"7EE51C7E8255916B16D5EB776E714C39DA31E786\",signature=\"jYc7Y0wbRMkX+Hcz9jGMGHxFbRXqZlYraB9WfBZUgZQ4F7503mXjEnniQf1tutnS7ptPyNe12cR+/cvf32XwhlJUmb6B+mHvG78cHfm0nA4OTVZaDQMVrWIzn5r2FwItsCpNXjDXYmwTDVdajYUfUntq6QPjHjCusM0VH6s4ryatK0Envi0D0mwHoOMIjNdPGrzfHTDaNdY3AlwXMwi18JYzB/hynaWQsYTiI/B999RLKBYlrhvo5zsRvW+/SKLufD+G4WGFBn3r0HcQE1Ghk0GJqW1G1/zeiGx5TqlA7sPq/RHr3NaV90g6pys4JIQKkrz0stjEOTs4YlCgiDMDPQ==\"","Accept":" /","User-Agent":"WechatPay-Java/0.2.11 (Windows 10/10.0) Java/1.8.0_161 Credential/WechatPay2Credential Validator/ okhttp3/null","Content-Type":"application/json"}}}" detailMessage = "Send Http Request failed,httpRequest[{"http_method":"GET","url":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","uri":"https://api.mch.weixin.qq.com/v3/certificates?algorithm_type=RSA","headers":{"headers":{"Authorization":"WECHATPAY2-SHA256-RSA2048 mchid=\"11\",nonce_str=\"oF8l8KVnMO5fMwHzElhS4LyaOWpQo6pg\",timestamp=\"1695127868\",serial_no=\"7EE51C7E8255916B16D5EB776E714C39DA31E786\",signature=\"jYc7Y0wbRMkX+Hcz9jGMGHxFbRXqZlYraB9WfBZUgZQ4F7503mXjEnniQf1tutnS7ptPyNe12cR+/cvf32XwhlJUmb6B+mHvG78cHfm0nA4OTVZaDQMVrWIzn5r2FwItsCpNXjDXYmwTDVdajYUfUntq6QPjHjCusM0VH6s4ryatK0Envi0D0mwHoOMIjNdPGrzfHTDaNdY3AlwXMwi18JYzB/hynaWQsYTiI/B999RLKBYlrhvo5zsRvW+/SKLufD+G4WGFBn3r0HcQE1Ghk0GJqW1G1/zeiGx5TqlA7sPq/RHr3NaV90g6pys4JIQKkrz0stjEOTs4YlCgiDMDPQ==\"","Accept":" /","User-Agent":"WechatPay-Java/0.2.11 (Windows 10/10.0) Java/1.8.0_161 Credential/WechatPay2Credential Validator/ okhttp3/null","Content-Type":"application/json"}}}]" cause = {IOException@1964} "java.io.IOException: unexpected end of stream on null" stackTrace = {StackTraceElement[10]@1965} 0 = {StackTraceElement@1969} "com.wechat.pay.java.core.http.okhttp.OkHttpClientAdapter.innerExecute(OkHttpClientAdapter.java:52)" 1 = {StackTraceElement@1970} "com.wechat.pay.java.core.http.AbstractHttpClient.execute(AbstractHttpClient.java:44)" 2 = {StackTraceElement@1971} "com.wechat.pay.java.core.certificate.CertificateDownloader.download(CertificateDownloader.java:81)" 3 = {StackTraceElement@1972} "com.wechat.pay.java.core.certificate.AutoCertificateService.lambda$register$0(AutoCertificateService.java:66)" 4 = {StackTraceElement@1973} "com.wechat.pay.java.core.certificate.AutoCertificateService.register(AutoCertificateService.java:72)" 5 = {StackTraceElement@1974} "com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:40)" 6 = {StackTraceElement@1975} "com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:19)" 7 = {StackTraceElement@1976} "com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider$Builder.build(RSAAutoCertificateProvider.java:134)" 8 = {StackTraceElement@1977} "com.wechat.pay.java.core.RSAAutoCertificateConfig$Builder.build(RSAAutoCertificateConfig.java:117)" 9 = {StackTraceElement@1978} "com.qujie.openplat.service.impl.Test.main(Test.java:56)"

预期行为

如果不能解决,是否可以通过其他方式跳过

导致错误的代码片段

No response

操作系统

liunx

Java 版本

8

wechatpay-java 版本

0.2.11

其他信息

No response

xy-peng commented 10 months ago

请参考 代理配置

如果你是按以上指引操作的,试试用本地平台证书加代理的方式,能否正常使用呢?