微信企业号开发:启用回调模式

微信企业号开发怎样启用回调模式?就是简单的登陆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请求的返回參数,返回给企业号。        }



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVC中提交表单的4种方式

一,MVC HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttributes){} BeginRouteForm 方法 (HtmlHelper, String, Object, FormMethod) 二,传统Form表单Aciton属性提交 三,JqueryAjax 提交表单 四,MVC C…

photoshop制作网站圆形图标ico

1、选择左侧工具栏中的椭圆工具2、鼠标直接在图片上选择区域3、在图片上鼠标右键建立选区,在弹出的对话框直接点确定变成这样:4、点击选择,然后点击反选变成这样5、图层栏,在图片上右键复制图层,弹出对话框直接确定即可…

《简明 PHP 教程》00 开篇

《简明 PHP 教程》是一本旨在介绍如何使用 PHP 语言进行编程的自由图书。它以教材与指南的形式为入门者介绍 PHP 编程语言。如果你对电脑知识的了解仅限于如何保存文本文件的话,那这本书就是为你准备的。 本博客后续将以连载的方式为读者呈现这本书。 关于作者 一名…

WPF 窗体设置亚克力效果

WPF 窗体设置亚克力效果控件名:WindowAcrylicBlur作者: WPFDevelopersOrg - 吴锋原文链接: https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40。Visual Studio 2022。项目使用 MIT 开源许可协议。WindowAcrylicB…

JS向后台传递json数组对象

var Obj [];            //一下代码可以循环插入            var returnObj new Object();//创建一个对象returnObj.id “123”;returnObj.money 456“”;Obj.push(returnObj);           JS中将Obj对象进行序列化操作   …

ArrayBlockingQueue跟LinkedBlockingQueue的区别

1.队列中的锁的实现不同 ArrayBlockingQueue中的锁是没有分离的,即生产和消费用的是同一个锁; LinkedBlockingQueue中的锁是分离的,即生产用的是putLock,消费是takeLock 2.在生产或消费时操作不同 ArrayBlockingQueue基于数组&…

jqGrid('setSelection',rowid)报Cannot read property 'multiple' of undefined

项目组非要上jeeweb框架,用jqgrid大量iframe做为前端框架,臃肿不堪。 今天上午,在进行选定操作jqGrid(setSelection,rowid)报Cannot read property multiple of undefined,怎么分析也找不出原因,最后百度搜了一下竟然有…

数据分块加载——BigPipe 技术【类似facebook】

一、原理 分块加载,加载完一块,就先把页面数据刷给用户,再加载下面的,直到加载完毕二、基础需知:三、服务端和php的相应配置 如果想实现分块加载【bigpipe技术】,还需要对nginx.conf 和 php.ini 进行相应配…

Maven -- 在进行war打包时用正式环境的配置覆盖开发环境的配置

我们的配置文件一般都放在 src/main/resource 目录下。 假定我们的正式环境配置放在 src/main/online-resource 目录下。 那么打成war包时&#xff0c;我们希望用online-resource下的配置文件取代resource 下的配置文件。 pom.xml 插件配置&#xff1a; <plugin><gr…

右键一下,哇塞!

面向 Dev 频道的 Windows 预览体验成员微软推送了 Windows 11 预览版Insider Preview Build 25211主要变化1.微软改进了 Windows 11 小组件面板&#xff0c;小组件面板中的添加按钮更加醒目&#xff0c;点击用户头像将打开小组件设置。Windows 11 小组件由 Microsoft Edge 浏览…

前端学习 -- Css -- 内联元素的盒模型

内联元素不能设置width和height&#xff1b;设置水平内边距,内联元素可以设置水平方向的内边距&#xff1a;padding-left&#xff0c;padding-right&#xff1b;垂直方向内边距&#xff0c;内联元素可以设置垂直方向内边距&#xff0c;但是不会影响页面的布局&#xff1b;为元素…

Redis 数据持久化的方案的实现

一、需要了解的基础 1、Redis实现数据持久化的两种实现方式&#xff1a; RDB&#xff1a;指定的时间间隔内保存数据快照 AOF&#xff1a;先把命令追加到操作日志的尾部&#xff0c;保存所有的历史操作二、RDB 实现 Redis数据持久化&#xff08;默认方式&#xff09;1、编辑 red…

div剩余空间填满

div里有一个固定高度的div使其另一个div填满空间&#xff0c;外层div设置的高度为百分比&#xff0c;给外层一个相对定位&#xff0c;设置想要充满的div高度为100%&#xff0c;其中这次有个要求&#xff0c;使其填充div里面的内容距离固定高度div30px&#xff1b;给填充div一个…

快速生成快递柜唯一取件码

曾管理一万多台快递柜&#xff0c;优化了系统中生成唯一取件码的算法。项目&#xff1a;https://github.com/nnhy/PickupCode新建项目&#xff0c;添加 Nuget 应用 NewLife.Redis &#xff0c;借助其Add去重能力。代码如下&#xff1a;private static void Main(string[] args)…

自动调试自动编译五分钟上手

Browsersync能让浏览器实时、快速响应您的文件更改&#xff08;html、js、css、sass、less等&#xff09;并自动刷新页面。更重要的是 Browsersync可以同时在PC、平板、手机等设备下进项调试。 无论您是前端还是后端工程师&#xff0c;使用它将提高您30%的工作效率。 MD5加密&a…

六台机器搭建RedisCluster分布式集群

一、RedisCluster结构二、redis Cluster集群搭建1、修改redis.conf中需要更改的配置 bind 改成当前ip cluster-enabled yes #允许redis集群 cluster-config-file nodes-6379.conf #集群配置文件 cluster-node-timeout 15000 #集群中节点允许失联的最大时间15s 注&#xff1…

C# 的 async/await 其实是stackless coroutine

注&#xff1a; 最近Java 19引入的虚拟线程火热&#xff0c;还有很多人羡慕 go的 coroutine&#xff0c;很多同学一直有一个疑问&#xff1a; C# 有 虚拟线程或者 coroutine吗&#xff0c;下面的这个回答可以解决问题。这里节选的是知乎上的hez2010 的高赞回答&#xff1a;http…

推荐使用typora

最近在网上接触到一款全新的markdown写作工具——typora。 现在它已经是我的主要写作工具了。 甚至我也也会利用它安排自己的工作和任务。 typora介绍 下载链接特色&#xff1a;可以即时渲染markdown语法的书写工具总算找到了&#xff0c;终于不用再纠结发生语法错误&#xff0…

中文词频统计

import jiebafoopen(text.txt,r,encodingutf-8)tfo.read()fo.close() wordsjieba.cut(t)dic{}for w in words: if len(w)1: continue else: dic[w]dic.get(w,0)1wc list(dic.items())wc.sort(keylambda x:x[1],reverse True)for i in range(20): print(wc[i]) 转载于:https:/…

实现html锚点的两种方式

1&#xff0c;a标签name属性。 2&#xff0c;使用标签的id属性&#xff1b;