Closed zxfishhack closed 8 months ago
please fix ci and improve comment
这个应该怎么使用?
这个应该怎么使用?
比如支付的时候,调用A(api.mch.weixin.qq.com)域名失败的时候,可以替换为备用B(api2.mch.weixin.qq.com)域名.
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点
【备域名】
https://api2.mch.weixin.qq.com
支持 跨城冗灾升级指引
@zxfishhack 贴一个示例代码
最简单的使用情形如下:
import "github.com/silenceper/wechat/v2/util"
func main() {
...
util.SetURIModifier(func(uri string) string {
return strings.ReplaceAll(uri, "https://api.weixin.qq.com", "https://wx.examples.com") // wx.examples.com上通过nginx配置了向https://api.weixin.qq.com的反向代理,此种情况方便调试
})
...
}
针对跨城冗灾的情况,个人觉得可以起一个专门的模块去检测到各域名的链路情况,然后将主域名替换掉。 如:
type HealthCheck struct {
preferDomain string
}
func (hc *HealthCheck) healthCheckRoutine() {
// TODO:执行域名获取及健康检查
}
func (hc *HealthCheck) URIModifier(uri string) string {
return strings.ReplaceAll(uri, "https://api.mch.weixin.qq.com", hc.preferDomain)
}
func NewHealthCheck() (hc *HealthCheck, err error) {
hc = &HealthCheck{preferDomain: "https://api.mch.weixin.qq.com"}
go hc.healthCheckRoutine()
return
}
最简单的使用情形如下:
import "github.com/silenceper/wechat/v2/util" func main() { ... util.SetURIModifier(func(uri string) string { return strings.ReplaceAll(uri, "https://api.weixin.qq.com", "https://wx.examples.com") // wx.examples.com上通过nginx配置了向https://api.weixin.qq.com的反向代理,此种情况方便调试 }) ... }
nginx
这样配置# 配置企业微信api location /proxy/ { proxy_pass https://qyapi.weixin.qq.com/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
订阅号要求强制设置ip白名单,在使用公网服务器配置反向代理至微信相关服务器时,需修改各API的请求域名。