微信公众号开发-(.net)

作为一个开发人员,在进行开发微信公众号是,首先需要完成的是服务器配置。也就是常说的开发者接入。

1.登录微信公众平台,选择基本设置

字段说明:AppId:开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。是由微信官方提供,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。

AppSecret:开发者密码是校验公众号开发者身份的密码,具有极高的安全性。是由微信官方提供,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。

Token:开发者自己定义的一个string字段,在编写代码最好将其配置在web.config文件中。开发过程中要保证必须和微信官网的一致。


后台代码如下:

验证微信凭证token:

public static void Valid(string strToken)
        {
            if (HttpContext.Current.Request.QueryString["echoStr"] != null)
            {
                string echoStr = HttpContext.Current.Request.QueryString["echoStr"].ToString();
                if (CheckSignature(strToken))
                {
                    if (!string.IsNullOrEmpty(echoStr))
                    {
                        HttpContext.Current.Response.Write(echoStr);
                        HttpContext.Current.Response.End();
                    }
                }
            }

        }

验证微信签名

public static bool CheckSignature(string strToken)
        {
            string signature = HttpContext.Current.Request.QueryString["signature"].ToString();
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"].ToString();
            string nonce = HttpContext.Current.Request.QueryString["nonce"].ToString();
            string[] ArrTmp = { strToken, timestamp, nonce };
            //1. 将token、timestamp、nonce三个参数进行字典序排序
            Array.Sort(ArrTmp);
            string tmpStr = string.Join("", ArrTmp);
            //对该字符串进行sha1加密
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            tmpStr = tmpStr.ToLower();//对字符串中的字母部分进行小写转换,非字母字符不作处理
            if (tmpStr == signature)//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。开发者通过检验signature对请求进行校验,若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败
            {
                return true;
            }
            else
                return false;
        }


webapi:

[HttpGet, HttpPost, Route("index")]
        public void index()
        {
            if (ControllerContext.Request.Method == HttpMethod.Post)
            {
                GetWxMessage();
            }
            else
            {
                string app_token= ConfigurationManager.AppSettings["app_token"].ToString();
                WeiXinHelper.Valid(app_token);
            }
        }

注:记住,在本地调试时,需要将自己的ip地址添加到ip白名单中。ip查询方式是:,如果是部署到服务器上的,需要将服务器的ip地址加入到白名单中。

你可能感兴趣的:(微信公众号开发-(.net))