微信SDK开发——接口接入

园子里面很多关于微信接口开发的文章,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!

上一篇:关于Python Profilers性能分析器


下一篇:NOIP2011 提高组 Day2