刚换了个新环境,哎这都快一个月了,还没适应过来,还是怀念老地方呀。老板让开发一个基于微信平台的开发项目,而且是用net实现。当时就蒙了,微信就用了一会个人赶脚不好,所以果断不用,现在让开发,而且查了一些资料很少有。net的,更让我丈二和尚了,当时就有点想打退堂鼓的举动。哎,米有办法在男友的鼓励下继续奋战,相信自己没有实现不了的。现在回头想想也是现在的忙和累与烦恼等到成功的那刻回头想想都是值得的。好了废话不多了,现在开始上正文。
如果想通过微信去开发(当然,指的是开发模式下),首先 建议先申请一个服务号,因为服务号的功能与接口也多,有些功能订阅号是实现不了的。另外申请过以后必须得通过微信 认证才能开发,好像是得付300大洋,高级接口如果需要的话也要通过微信认证才能获得的。
一切都准备齐全后,开始行动。这些代码也就开始认证的时候用一次,以后就不用了: 但是实践证明这些是每次都要认证的。
暂时先借用一下这位大哥的代码吧,因为起初是跟着他的代码慢慢行进的。不过最后就用了别的简单的方式开发了。到最后可能会给大家整理出来一个方案吧。
原文出处:
1 const string Token = "XXXXX";//你的token
2 protected void Page_Load(object sender, EventArgs e)
3 {
4 string postStr = "";
5 if (Request.HttpMethod.ToLower() == "post")
6 {
7 System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
8 byte[] b = new byte[s.Length];
9 s.Read(b, 0, (int)s.Length);
10 postStr = System.Text.Encoding.UTF8.GetString(b);
11 if (!string.IsNullOrEmpty(postStr))
12 {
13 //ResponseMsg(postStr);
14 Response.Write(ResponseMsg(postStr));
15 Response.End();
16 }
17 //WriteLog("postStr:" + postStr);
18 }
19 else
20 {
21 Valid();
22 }
23 }
24
25 /// <summary>
26 /// 验证微信签名
27 /// </summary>
28 /// * 将token、timestamp、nonce三个参数进行字典序排序
29 /// * 将三个参数字符串拼接成一个字符串进行sha1加密
30 /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
31 /// <returns></returns>
32 private bool CheckSignature()
33 {
34 string signature = Request.QueryString["signature"].ToString();
35 string timestamp = Request.QueryString["timestamp"].ToString();
36 string nonce = Request.QueryString["nonce"].ToString();
37 string[] ArrTmp = { Token, timestamp, nonce };
38 Array.Sort(ArrTmp); //字典排序
39 string tmpStr = string.Join("", ArrTmp);
40 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
41 tmpStr = tmpStr.ToLower();
42 if (tmpStr == signature)
43 {
44 return true;
45 }
46 else
47 {
48 return false;
49 }
50 }
51
52
53 private void Valid()
54 {
55 string echoStr = Request.QueryString["echoStr"].ToString();
56 if (CheckSignature())
57 {
58 if (!string.IsNullOrEmpty(echoStr))
59 {
60 Response.Write(echoStr);
61 Response.End();
62 }
63 }
64 }
65
66
67 /// <summary>
68 /// 写日志(用于跟踪)
69 /// </summary>
70 private void WriteLog(string strMemo)
71 {
72 string filename = Server.MapPath("/logs/BugLog.txt");
73 if (!Directory.Exists(Server.MapPath("//logs//")))
74 Directory.CreateDirectory("//logs//");
75 StreamWriter sr = null;
76 try
77 {
78 if (!File.Exists(filename))
79 {
80 sr = File.CreateText(filename);
81 }
82 else
83 {
84 sr = File.AppendText(filename);
85 }
86 sr.WriteLine(strMemo);
87 }
88 catch
89 {
90
91 }
92 finally
93 {
94 if (sr != null)
95 sr.Close();
96 }
97 }
View Code
另外,再附上一些成为开发者东西吧。这有成为开发者以后你才能真正的进行开发。
高级功能
微信公众平台地址:https://mp.weixin.qq.com
登录微信公众平台后台,在左侧列表中最下方,找到“开发者中心”,点击进入
进入接口配置填写框。请填写接口配置信息,此信息需要你拥有自己的服务器资源。填写的URL需要正确响应微信发送的Token验证,请阅读接入指南。
此处的URL为域名,而Token在主页面中定义的。填写后点击提交。
返回到开发者中心界面,再点击启用按钮。
启用之后微信会自动返回一些AppId,AppSercert这些就是接下来我们在以后要用的关键信息。
当然很重要的是,你得先把接口文档说明看看,最起码得浏览一遍知道规范和说明。当然如果有好的见解和方法的盆友可以交流交流啊。