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
665 stars 249 forks source link

对小程序支付生成的httpClient进行代理设置不生效 #171

Closed SJun12138 closed 1 year ago

SJun12138 commented 1 year ago

build.setDefaultRequestConfig()、buile.setRoutePlanner()都不会生效

xy-peng commented 1 year ago

build.setDefaultRequestConfig()、buile.setRoutePlanner()都不会生效

能否贴一下你的代码?你在其他支付方式设置代理是生效的?

SJun12138 commented 1 year ago

因为考虑到与三方服务器的header中的校验,支付的采用的都是文档所提供SDK中的客户端API进行设置代理。在本次使用WechatPayHttpClientBuilder构建client时,使用原生HttpClientBuilder中的setDefaultRequestConfig()设置代理IP与端口,实际服务器中并不生效。PS: 使用其他支付设置代理后支付正常,排除代理配置问题了。

SJun12138 commented 1 year ago

这是我在微信预支付请求中的方式,也是我遇见的问题代码块。感谢!image

xy-peng commented 1 year ago

你试试 WechatPayHttpClientBuilder::withProxy() 设置代理是否有效呢?

SJun12138 commented 1 year ago

你试试 WechatPayHttpClientBuilder::withProxy() 设置代理是否有效呢?

请问您说的是什么版本?我使用的wechatpay-apache-httpclient 0.4.2并没有您说的withPorxy()函数

xy-peng commented 1 year ago

163 可以看下当时的讨论。

你可以升级到 0.4.8 版本,实现在 https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient/blob/bbe835bda309d367d66e2dce6154aa0b8b1eb55d/src/main/java/com/wechat/pay/contrib/apache/httpclient/WechatPayHttpClientBuilder.java#L56

你用 HttpClientBuilder.setProxy() 试试呢

SJun12138 commented 1 year ago

谢谢您,问题找到了,是因为我加载平台证书的时候采用的类AutoUpdateCertificatesVerifier不能设置代理,所以一直卡在这一步,不是初始化client的问题。非常不好意思,现在更换为CertificatesManager证书管理器,问题已经解决了,非常感谢您的回复!

zhanghj94 commented 1 year ago

谢谢您,问题找到了,是因为我加载平台证书的时候采用的类AutoUpdateCertificatesVerifier不能设置代理,所以一直卡在这一步,不是初始化client的问题。非常不好意思,现在更换为CertificatesManager证书管理器,问题已经解决了,非常感谢您的回复!

你好,我也设置了代理服务器,但是微信返回了400错误,请问是对代理服务器有什么要求吗?

zhanghj94 commented 1 year ago

你好,我也设置了代理服务器,但是微信返回了400错误,请问是对代理服务器有什么要求吗?

你好,我也设置了代理服务器,但是微信返回了400错误,请问是对代理服务器有什么要求吗?

xy-peng commented 1 year ago

但是微信返回了400错误,请问是对代理服务器有什么要求吗?

请看下具体的错误报文。如果是微信支付返回的,body中应当有具体的错误信息。看看是否能帮助解决问题。

zhanghj94 commented 1 year ago

但是微信返回了400错误,请问是对代理服务器有什么要求吗?

请看下具体的错误报文。如果是微信支付返回的,body中应当有具体的错误信息。看看是否能帮助解决问题。

谢谢,目前是拿nginx做代理服务器,代理非微信支付接口是可以通过的。但是代理微信支付的接口请求不通,因为对nginx使用不是很熟练,找不到具体错误信息 19d385bcfb0731c13ffee48929203e8