首页 > PHP资讯 > 工具库 > php微信公众号开发前的问题

php微信公众号开发前的问题

工具库
这篇文章主要为大家详细介绍了php微信公众账号开发之前五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

微信公众账号开发文档,官方版( )

首先,你得有一个公众平台账号,好了,开始计坑。

第一坑,不要以为不是企业号就不能开发了,可以申请测试号的,比所谓的订阅号接口多多了。

 public ActionResult Index() { if (Request.HttpMethod.ToLower() == "post") { if (CheckSignature())//验证服务器是否通过 { GetMenuList();//加载菜单 } else { Response.Write("

Oh

我们相遇在火星吧!!!

"); Response.End(); } } else { CheckWechat(); } return View(); } /// /// 返回随机数表示验证成功 /// private void CheckWechat() { if (string.IsNullOrEmpty(Request.QueryString["echoStr"])) { Response.Write("消息并非来自微信"); Response.End(); } string echoStr = Request.QueryString["echoStr"]; if (CheckSignature()) { Response.Write(echoStr); Response.End(); } }/// /// 验证微信签名 /// /// /// 将token、timestamp、nonce三个参数进行字典序排序 /// 将三个参数字符串拼接成一个字符串进行sha1加密 /// 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。 private bool CheckSignature() { string signature = Convert.ToString(Request["signature"]); string timestamp = Convert.ToString(Request["timestamp"]); string nonce = Convert.ToString(Request["nonce"]); string[] ArrTmp = { Token, timestamp, nonce }; Array.Sort(ArrTmp); //字典排序 string tmpStr = string.Join("", ArrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); tmpStr = tmpStr.ToLower(); if (tmpStr == signature) { return true; } else { return false; } }

然后,公众平台在有权限的情况下是自定义菜单的,但是一旦开始自定义菜单,原来的手动编辑的菜单是不能用的,也就是说,如果服务器验证通过,那么必须用自己的代码控制。

我们一起来看GetMenuList()这个方法,这个其实很简单的,就是随便凭借一个JSON格式字符串。然后调用微信的接口即可。 public void GetMenuList()


 {  string weixin1 = "";  weixin1 = @" {  ""button"":[  {  ""type"":""click"",  ""name"":""你好!"",  ""key"":""hello""  },  {  ""type"":""view"",  ""name"":""公司简介"",  ""url"":""http://www.xnfhtech.com""  },  {  ""name"":""产品介绍"",  ""sub_button"":[  {  ""type"":""click"",  ""name"":""产品1"",  ""key"":""p1""  },  {  ""type"":""click"",  ""name"":""产品2"",  ""key"":""p2""  }]  }] }";   string access_token = Tools.WA_GetAccess_Token.IsExistAccess_Token();  string i = this.MenuCreate(menu, access_token);  Response.Write(i);  }


 public string MenuCreate(string MenuJson, string access_token) { JavaScriptSerializer Jss = new JavaScriptSerializer(); string setMenuUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}"; setMenuUrl = string.Format(setMenuUrl, access_token);//获取token、拼凑url string respText = WebRequestPostOrGet(setMenuUrl, MenuJson); Dictionary respDic = (Dictionary)Jss.DeserializeObject(respText); return respDic["errcode"].ToString();//返回0发布成功 } ///  /// Post/get 提交调用抓取 ///  /// 
  ///   public static T ParseFromJson(string szJson) { T obj = Activator.CreateInstance(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType()); return (T)serializer.ReadObject(ms); } }}

原谅我又不明真相了,所谓的XMLFile.xml这又是什么鬼,好吧,我其实不想说的这么直白的,还是代码直接上比较好。


 获取TOKEN 2015/9/12 17:56:31

以上就是php微信公众号开发前的问题的详细内容,更多请关注php中文网其它相关文章!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持7不支持0