标签:
园子里面很多关于微信接口开发的文章,Github也一堆的开源代码。
官方文档地址:http://mp.weixin.qq.com/wiki/home/index.html
接下来主要以代码为主,接口说明自己去看文档
验证接入需要一个80端口的外网服务器地址,在填写地址,Token信息之后,程序会验证接入
验证会像就扣地址通过GET的方式发送几个数据:
signature,timestamp, nonce, echostr(该参数仅仅在验证接入时候会带上)
接下来就是你服务端接口验证签名的可用性了,加密是根据前面三个参数进行排序然后通过SHA1方式加密
排序代码:
List<string> StrArr = new List<string>();
StrArr.Add(token);
StrArr.Add(timestamp);
StrArr.Add(nonce);
StrArr.Sort();
string Str = string.Empty;
StrArr.ForEach(s =>
{
Str = string.Concat(Str, s);
});
Str = StrArr.Aggregate((prev, next) =>
{
return prev + next;
});
Str = Encrypt.Sha1(Str);
return string.Compare(Str, signature, true) == 0;
中间用到的SHA1加密方法代码:
public static string Sha1(string str)
{
SHA1 sha = new SHA1CryptoServiceProvider();
ASCIIEncoding asci = new ASCIIEncoding();
byte[] data = asci.GetBytes(str);
byte[] hashdata = sha.ComputeHash(data);
return BitConverter.ToString(hashdata).Replace("-", "");
}
验证OK,返回服务器传递过来的echostr的值就行了,这样就算验证通过了~
以后接微信调用该接口不会有echostr参数!
我一般用MVC做开发
Controller如下
public ActionResult Index(string signature, string timestamp, string nonce, string echostr)
{
bool valid = CheckSignature(signature, "token", timestamp, nonce);
if (!valid) return Content("接口接入失败,请验证令牌是否正确!");
if (!string.IsNullOrEmpty(echostr)) return Content(echostr);
if (Request.InputStream.Length <= 0) return Content("请POST请求!");
//接下来你自己的业务逻辑
}
到这里基本微信的接入已经实现~ Enjoy it!
标签:
原文地址:http://www.cnblogs.com/263613093/p/4276413.html