微信企业号开发怎样启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择须要应用,再点击回调模式启用?
似乎不是这么简单。!
能够看到核心的仅仅有三个URL。Token,EncodingAESKey这三个參数能够随便填写吗?
1URL能够随便填写吗?
能够肯定的是。不能随便填写。
不信你能够试试。由于点击确定后微信会给这个URL发送信息。因此这个URL必须是外网能够訪问的地址。
并且后台还必须处理微信发送过来的信息。比如URL 是http://www.hao123.com/能够在外网方法。但点击保存时就会出现:
echostr校验失败。请您检查是否正确解密并输出明文echostr
2Token能够随便填写吗?
能够。眼下我没有发现有什么特殊的要求
3EncodingAESKey能随便填写吗?
不能随便填写,必须是数字字母的组合。并且是43个字符。建议使用微信随机生成的。
我们知道在URL处配置一个外网能够訪问的URL,并不能保证保存成功,后台怎样处理呢?
比如我配置为http://.../TestWeixin.ashx
则后台的处理方式。须要调用微信的相关加密解密函数
TestWeixin.ashx的后台代码为:
public void ProcessRequest (HttpContext context) {if (context.Request.HttpMethod.ToLower() == "post"){ }else //点击保存时。微信须要验证时调用{Valid();}}private void Valid(){string msg_signature = HttpContext.Current.Request.QueryString["msg_signature"];string timestamp = HttpContext.Current.Request.QueryString["timestamp"];string nonce = HttpContext.Current.Request.QueryString["nonce"];string decryptEchoString = ""; // 解析之后的明文string echoStr = HttpContext.Current.Request.QueryString["echoStr"];bool isok = CheckSignature(msg_signature, timestamp, nonce, echoStr, ref decryptEchoString);if (isok){if (!string.IsNullOrEmpty(decryptEchoString)){HttpContext.Current.Response.Write(decryptEchoString);HttpContext.Current.Response.End();}} }public bool CheckSignature(string signature, string timestamp, string nonce,string echostr, ref string retEchostr){string token = "token"; //配置的tokenstring corpId = "corpId"; //corpid,string encodingAESKey = "encodingAESKey"; //配置的tokenencodingAESKeyWXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey, corpId); //调用微信提供的函数int result = wxcpt.VerifyURL(signature, timestamp, nonce, echostr, ref retEchostr);//调用微信提供的函数if (result != 0){LogInfo.Error("ERR: VerifyURL fail, ret: " + result);return false;}return true;//ret==0表示验证成功。retEchostr參数表示明文,用户须要将retEchostr作为get请求的返回參数,返回给企业号。 }