作为一个开发人员,在进行开发微信公众号是,首先需要完成的是服务器配置。也就是常说的开发者接入。
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地址加入到白名单中。