SDK 针对微信 正向代理和反向代理支持 - binarywang/WxJava GitHub Wiki
反向代理支持(推荐)
在内网部署情况下,需要通过堡垒机对外网地址进行配置,此时需要更改 SDK 中对应的微信地址为堡垒机代理地址时使用。
反向代理和正向代理只能配置一项
当前反向代理配置在v4.7.7.B
版本以上支持(不含v4.7.7.B
版本)
# 单实例配置示例(其他字段省略)
wx:
mp:
hosts:
api-host: http://proxy.company.com:8080
mp-host: http://mp-proxy.company.com:8080
miniapp:
api-host-url: http://proxy.company.com:8080/weixin
access-token-url: http://token-service.company.com/miniapp/token (统一token 管理使用,非必要不配置)
pay:
api-host-url: http://pay-proxy.company.com:8080/weixinpay
cp:
base-api-url: http://cp-proxy.company.com:8080
channel:
api-host-url: http://proxy.company.com:8080
access-token-url: http://token-service.company.com/channel/token
open:
api-host-url: http://proxy.company.com:8080
access-token-url: http://token-service.company.com/open/token
# 多实例配置示例
wx:
miniapp:
apps:
tenant1:
api-host-url: http://tenant1-proxy.company.com:8080
access-token-url: http://token-service.company.com/tenant1/token
注意事项: api-host-url
原则上不建议使用内网域名或 https 方式(推荐 http://ip:端口 )进行配置,如有必要请在内网部署解决dns 解析服务器和自签证书问题,最简单的为配置/etc/hosts
小程序和微信支付配置示例
wx:
miniapp:
#.... 此处省略展示
msgDataFormat: JSON
api-host-url: http://10.10.10.10:9401/weixin # 新增微信小程序地址反向代理地址,移除 proxy 等配置
pay:
#.... 此处省略展示
notify-url: https://you.domain.com/api/order/notify # 域名为后端服务器(外网https域名)地址,需要堡垒机映射到对应服务上
api-host-url: http://10.10.10.10:9402/weixinpay #微信支付API地址反向代理地址
OpenResty 配置参考
# 微信小程序反向代理配置(http://10.10.10.10:9401/weixin)
location ^~ /weixin/ {
proxy_pass https://api.weixin.qq.com/;
proxy_set_header Host api.weixin.qq.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
add_header Cache-Control no-cache;
}
# 微信支付反向代理配置(http://10.10.10.10:9402/weixinpay)
location ^~ /weixinpay {
proxy_pass https://api.mch.weixin.qq.com/;
proxy_set_header Host api.mch.weixin.qq.com/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
add_header X-Cache $upstream_cache_status;
add_header Cache-Control no-cache;
proxy_ssl_server_name off;
proxy_ssl_name $proxy_host;
}
WxJava 各模块 URL 字段配置表
模块 | 核心字段 | Starter字段 | 默认值 | 说明 |
---|---|---|---|---|
MP | apiHost | hosts.apiHost | https://api.weixin.qq.com | 公众号 API 域名 |
MP | mpHost | hosts.mpHost | https://mp.weixin.qq.com | 公众号管理域名 |
MP | openHost | hosts.openHost | https://open.weixin.qq.com | 开放平台域名 |
Miniapp | apiHostUrl | apiHostUrl | https://api.weixin.qq.com | 小程序 API 域名 |
Miniapp | accessTokenUrl | accessTokenUrl | - | 自定义 Token 获取地址 |
Pay | apiHostUrl (统一) | apiHostUrl (统一) | https://api.mch.weixin.qq.com | 支付 API 域名 (已统一) |
Pay | notifyUrl (新增) | notifyUrl (新增) | - | 支付异步回调地址 (新增) |
Pay | payScoreNotifyUrl | payScoreNotifyUrl | - | 支付分回调地址 |
Pay | payScorePermissionNotifyUrl (新增) | payScorePermissionNotifyUrl (新增) | - | 支付分授权回调地址 (新增) |
CP | baseApiUrl | baseApiUrl | https://qyapi.weixin.qq.com | 企业微信 API 域名 |
Channel | apiHostUrl | apiHostUrl | https://api.weixin.qq.com | 视频号 API 域名 |
Channel | accessTokenUrl | accessTokenUrl | - | 自定义 Token 获取地址 |
Open | apiHostUrl | apiHostUrl | https://api.weixin.qq.com | 开放平台 API 域名 |
Open | accessTokenUrl | accessTokenUrl | - | 自定义 Token 获取地址 |
Qidian | apiHost (MP) | hosts.apiHost | https://api.weixin.qq.com | 企点 API 域名 |
Qidian | openHost | hosts.openHost | https://open.weixin.qq.com | 企点开放平台域名 |
Qidian | qidianHost | hosts.qidianHost | https://api.qidian.qq.com | 企点专用 API 域名 |
###多实例 Starter 支持
模块 | 核心字段 | 单实例字段 | 多实例字段 | 配置路径 |
---|---|---|---|---|
MP | apiHost | hosts.apiHost | hosts.apiHost (全局) | wx.mp.hosts.* |
MP | mpHost | hosts.mpHost | hosts.mpHost (全局) | wx.mp.hosts.* |
MP | openHost | hosts.openHost | hosts.openHost (全局) | wx.mp.hosts.* |
Miniapp | apiHostUrl | apiHostUrl | apps.{tenant}.apiHostUrl | wx.ma.apps.* |
Miniapp | accessTokenUrl | accessTokenUrl | apps.{tenant}.accessTokenUrl | wx.ma.apps.* |
Pay | apiHostUrl | apiHostUrl | 无多实例 | wx.pay |
Pay | notifyUrl | notifyUrl | 无多实例 | wx.pay |
Pay | payScoreNotifyUrl | payScoreNotifyUrl | 无多实例 | wx.pay |
Pay | payScorePermissionNotifyUrl | payScorePermissionNotifyUrl | 无多实例 | wx.pay |
CP | baseApiUrl | baseApiUrl | apps.{tenant}.baseApiUrl | wx.cp.apps.* |
Channel | apiHostUrl | apiHostUrl | apps.{tenant}.apiHostUrl | wx.channel.apps.* |
Channel | accessTokenUrl | accessTokenUrl | apps.{tenant}.accessTokenUrl | wx.channel.apps.* |
Open | apiHostUrl | apiHostUrl | 无多实例 | wx.open |
Open | accessTokenUrl | accessTokenUrl | 无多实例 | wx.open |
Qidian | apiHost | hosts.apiHost | 无多实例 | wx.qidian |
Qidian | openHost | hosts.openHost | 无多实例 | wx.qidian |
Qidian | qidianHost | hosts.qidianHost | 无多实例 | wx.qidian |
正向代理
在某些环境下,应用程序必须通过代理才能够访问微信接口,比如阿里的ACE(ACE线上环境不能直接访问外网。 HTTP请求需要通过使用代理: http://ace.aliapp.com/java/quick-start.md?spm=5176.383729.9.2.6HqPoT&file=quick-start.md)。
你可以在构造自己的WxCpConfigStorage
的时候设置http代理信息:
- http_proxy_host
- http_proxy_port
- http_proxy_username(可选)
- http_proxy_password(可选)
只要你设置了http代理,那么所有的请求都会从代理走。