微信支付接入IP裁撤变更,不影响直接使用DNS解析微信支付域名的业务。微信支付执行IP裁撤之前,会先把新IP加入域名DNS解析,然后把旧IP从域名DNS解析中剔除。如果商户仍有请求到待裁撤IP,可能原因是:服务器配置了微信支付域名hosts、服务器的nscd服务开启了DNS缓存、程序代码配置了固定IP(待裁撤IP)、应用服务缓存。
商户的技术或运维人员可在调用微信支付接口的服务器上检查是否有待裁撤IP的相关配置,如有使用,请在业务低峰期进行处理和操作,避免影响业务。强烈建议商户不要做任何形式的IP绑定,包括但不限于hosts绑定、应用程序绑定IP等,该操作存在因IP变化导致业务受影响的风险,建议商户使用域名DNS解析,可直接解析到最优IP。
注意事项:
- 如有多个服务或业务对接微信支付接口(支付、退款、查单、对账等),请充分检查每个服务器的相关配置,确保待裁撤IP的相关配置都已完成处理。
- 如果内部网络链路较长,根据网络链路逐一排查,是否有节点缓存未清除(转发器,节点路由器等)。
- 如果有安全策略限制,如防火墙拦截,需先把新IP加入白名单,再执行hosts文件更新。配置hosts时,需配置主备两个域名指向不同的IP,且实现跨城冗灾切换方案(详情参考指引),避免单个IP异常导致业务不可用。(请注意hosts文件本身并没有实现故障切换逻辑,当在hosts文件中的同一个域名配置了多个IP,系统默认只会使用第一个IP,即使该IP不可用时,也不会切换到其他IP)
检查与操作步骤:
1、检查服务器是否配置了微信支付域名hosts
A)登录调用微信支付接口的服务器,ping微信支付IP裁撤涉及的域名(例如:api.mch.weixin.qq.com、api2.mch.weixin.qq.com、api.weixin.qq.com、api2.weixin.qq.com),如果出现的IP是公告中的待裁撤IP,则需要调整。
B)检查服务器是否配置了微信支付域名的hosts,且指向待裁撤IP
Linux服务器,检查/etc/hosts配置文件
Windows服务器,检查 C:\Windows\System32\drivers\etc\hosts配置文件
C)删除hosts配置文件的裁撤IP配置,或把IP更新为公告中的新IP。如无特殊需求,不建议做hosts绑定,使用域名DNS解析可直接解析到最优IP。
D)在服务器上ping微信支付域名,确认不再请求到裁撤IP
注意:hosts文件本身并没有实现故障切换逻辑,当在hosts文件中的同一个域名配置了多个IP,系统默认只会使用第一个IP,即使该IP不可用时,也不会切换到其他IP。
2、检查服务器的nscd服务是否开启DNS缓存
A)运行 ps aux | grep nscd 命令查看是否开启nscd进程
B)如果有开启nscd进程,运行nscd-g命令,查看缓存统计。如果统计数据里 host cache: yes cache is enabled, 表示host缓存已开启。
C)清除缓存: nscd -i hosts .
D)关闭服务 :nscd -k
3、检查调用微信支付接口的程序代码是否有配置固定IP(待裁撤IP),如有则需要改成通过域名访问
4、重启应用服务释放缓存
- nginx:service nginx restart
- apache:httpd -k restart
- tomcat :./catalina.sh restart