微信公众平台C#开发系列(五):获取微信服务器IP地址

微信公众平台开发
143
补充展位
Pages_Weblog_Get#516de29f-4abc-47d8-928a-ad3a010895b6
文章摘要
此内容由人工摘要内容,并由AI根据文章内容进行润色
暂无内容

微信公众号开发怎么获取微信服务器IP地址

公众号开发基于接口安全等考虑,需要获知微信服务器的IP地址列表,以便应对被有心人恶意调用的情况,由于出口IP及入口IP可能存在变动,微信公众号官方是建议每天请求接口1次主动更新IP池。

接口文档地址:

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_the_WeChat_server_IP_address.html#

接着上一篇:微信公众平台C#开发系列(四):获取access token凭证

部分使用类方法详情 请参考上述链接 ,本文不再重复赘述

获取微信API接口 IP地址

根据文档我们先定义一个WeixinIpPoolResponse类继承 ErrorMessage 用于解析接口结果

ErrorMessage 公共类参考 : 微信公众平台C#开发系列(四):获取access token凭证

namespace YuanTK.WeiXin.Wrapper
{
    /// <summary>
    /// 微信服务器ip池接口返回值
    /// </summary>
    public class WeixinIpPoolResponse : ErrorMessage
    {
        /// <summary>
        /// 微信服务器IP地址列表
        /// </summary>
        public string[] ip_list { get; set; }
    }
}

定义一个WeixinIpPool 方法类继承WeiXinRequest 和接口IWeiXin

namespace YuanTK.WeiXin
{
    /// <summary>
    /// 微信服务器ip池
    /// </summary>
    public class WeixinIpPool : WeiXinRequest<WeixinIpPoolResponse>, IWeiXin<WeixinIpPoolResponse>
    {

         /// <summary>
        /// 调取的ip池接口类型
        /// </summary>
        public enum Pool
        {
            /// <summary>
            /// API接口IP:即api.weixin.qq.com的解析地址,由开发者调用微信侧的接入IP。
            /// </summary>
            get_api_domain_ip,
            /// <summary>
            /// callback IP:即微信调用开发者服务器所使用的出口IP。
            /// </summary>
            getcallbackip
        }
		
        /// <summary>
        /// 接口地址
        /// </summary>
        String api;
        public WeixinIpPool(Pool pool, string access_token)
        {
            ///初始化接口地址
            api = $"https://api.weixin.qq.com/cgi-bin/{pool.ToString()}?access_token={access_token}";
        }


        /// <summary>
        /// 调用接口获取结果
        /// </summary>
        /// <returns></returns>
        public WeixinIpPoolResponse GetResponse()
        {
            return this.Get(api);
        }
    }
}

调用例子

 //通信凭证 参考本文开头链接《微信公众平台C#开发系列(四):获取access token凭证》
string access_token = token.access_token;
IWeiXin<WeixinIpPoolResponse> api = new WeixinIpPool(WeixinIpPool.Pool.get_api_domain_ip, access_token);
//IWeiXin<WeixinIpPoolResponse> api = new WeixinIpPool(WeixinIpPool.Pool.getcallbackip, access_token);
WeixinIpPoolResponse weixinIp= api.GetResponse();

运行请求成功的效果

微信公众平台C#开发系列(五):获取微信服务器IP地址

补充展位 Pages_Weblog_Get#0
补充展位 Pages_Weblog_Get#1