微信企业号申请注册流程

回调模式

在回调模式下,企业不仅可以主动调用企业号接口,还可以接收用户的消息或事件。接收的信息使用XML数据格式、UTF8编码,并以AES方式加密

企业号的每个应用都有自己的回调模式开关。在管理端开启并设置好相关参数后,此应用的回调模式才生效。

针对加解密的处理,微信提供了各种语言的库,企业可以在附录中下载。下载地址

开启应用的回调模式

当你开启应用的回调模式时,企业号会要求你填写应用的URL、Token、EncodingAESKey三个参数。

URL是企业应用接收企业号推送请求的访问协议和地址,支持http或https协议。

Token可由企业任意填写,用于生成签名。

EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。

验证URL、Token以及加密的详细处理请参考后续'接收消息时的加解密处理'的章节。

验证URL有效性

当你提交以上信息时,企业号将发送GET请求到填写的URL上,GET请求携带四个参数,企业在获取时需要做urldecode处理,否则会验证不成功。

参数 描述 是否必带
msg_signature 微信加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体
timestamp 时间戳
nonce 随机数
echostr 加密的随机字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四个字段,其中msg即为echostr明文 首次校验时必带

企业通过参数msg_signature对请求进行校验,如果确认此次GET请求来自企业号,那么企业应用对echostr参数解密并原样返回echostr明文(不能加引号),则接入验证生效,回调模式才能开启。

我们在项目下新建一个一般处理程序:QYWX.ashx

先来获取验证回调所需要的参数

            //微信接入的测试string token = ConfigurationManager.AppSettings["CorpToken"];//从配置文件获取Tokenstring CorpID = ConfigurationManager.AppSettings["CorpID"];//从配置文件获取Tokenstring EncodingAESKey = ConfigurationManager.AppSettings["EncodingAESKey"];//从配置文件获取Tokenstring signature = context.Request["msg_signature"];string timestamp = context.Request["timestamp"];string nonce = context.Request["nonce"];       string echostr = context.Request["echostr"];

其中CorpToken,CorpID,EncodingAESKey是在配置文件中配置的,方便更改,配置文件节点如下:

<appSettings ><!--企业号配置信息--><add key="CorpToken" value="XXXXXXXXXX"/><add key="CorpID" value="XXXXXXXXXXXXX"/><add key="EncodingAESKey" value="1v82IRu54erxBj3v1hItooXOXXXXXXXXXXXXXXX"/></appSettings>

现在,我们来写验证处理流程

新建一个验证类CheckSignatureQY.cs

结构如图所示:

说明: Check为静态方法,,这个类很简单,现在贴上全部代码:

  public class CheckSignatureQY{/// <summary>/// 在网站没有提供Token(或传入为null)的情况下的默认Token,建议在网站中进行配置。/// </summary>public const string Token = "weixin";/// <summary>/// 微信链接服务器验证凭证/// </summary>/// <param name="sVerifyMsgSig">微信加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体 </param>/// <param name="sVerifyTimeStamp">时间戳</param>/// <param name="sVerifyNonce">随机数</param>/// <param name="sVerifyEchoStr">加密的随机字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四个字段,其中msg即为echostr明文 </param>/// <param name="sEncodingAESKey">EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。</param>/// <param name="sCorpID">帐号信息 CorpID</param>/// <param name="sEchoStr"></param>/// <param name="sToken"></param>/// <returns></returns>public static bool Check(string sVerifyMsgSig, string sVerifyTimeStamp, string sVerifyNonce, string sVerifyEchoStr, string sEncodingAESKey, string sCorpID, ref string sEchoStr, string sToken = null){sToken = String.IsNullOrEmpty(sToken) ? Token : sToken;WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);int ret = 0;ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEchoStr);if (ret != 0)sEchoStr = "ERR: VerifyURL fail, ret: " + ret;return ret == 0;}}

说明:WXBizMsgCrypt    为微信官方的加密类:下载传送门

完成了CheckSignatureQY类以后,我们就要在QYWX.ashx中调用,微信验证的方法为GET,所以我们在QYWX.ashx中写入如下代码:

       if (context.Request.HttpMethod == "GET")//验证
            {
string sEchoStr = "";bool check = CheckSignatureQY.Check(signature, timestamp, nonce, echostr, EncodingAESKey, CorpID, ref sEchoStr, token);//True表示成功//WriteText(check ? "True" : "False");//check为True成功,Flase失败,失败信息在SechoStrWriteContent(sEchoStr); //返回随机字符串则表示验证通过
}

然后在微信调用界面中

点击完成就会完成了微信验证啦,如图所示:

本节到此结束

转载于:https://www.cnblogs.com/GarsonZhang/p/4037289.html

《微信企业号开发日志》之企业号接入相关推荐

  1. 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入

    2019独角兽企业重金招聘Python工程师标准>>> 阅读目录 一.用法 二.实现方法 最近研究了下服务号的服务器配置和企业号的回调模式.真正实现完后,觉得很简单,但一开始还是走了 ...

  2. Jeewx-Enterprise_1.1版本发布,开源微信企业号开发平台

    JEEWX企业号简介 JEEWX微信企业号开发平台是一款开源.免费.高效.敏捷的微信企业号开发平台,采用JAVA语言基于Jeecg快速开发框架实现,实现了微信企业号管理平台的基础功能,便于用户二次开发 ...

  3. 微信企业号开发(2)--建立连接(主动)

    [本文所描述的内容具有一定的时效性,请以实际开发所处环境为准] 在微信企业号开发(1)--基础入门中,我们已经学习了,我们的程序结构应该如何设计.接下来,我们会按照微信企业号开发者接口文档的顺序,逐一 ...

  4. 新书《微信企业号开发揭秘》已出版,全书采用WeChatEnterprise框架开发

            新书<微信企业号开发揭秘>已出版,全书基于源码与API逐步讲解,采用WeChatEnterprise框架开发 纸质书购买地址:  天猫    京东    当当    亚马逊 ...

  5. java企业号回调模式,微信公众平台企业号开发—开启回调模式

    2014年9月17日,微信发布了期待已久的企业号.网上关于企业号的教程几乎还是0,所以这里分享一下的我的开发经验. 对比于订阅号和服务号的开发,企业号的开发显得更加复杂一点.这大概也是腾讯考虑到企业信 ...

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

    微信企业号开发怎样启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择须要应用,再点击回调模式启用? 似乎不是这么简单.! 能够看到核心的仅仅有三个URL.Token,EncodingAESKe ...

  7. 微信企业号开发之如何建立连接

    http://www.07net01.com/2014/09/167991.html 连接将使你的企业号更具价值,你可以使用以下三种方式,连接你的企业号及企业应用: 1.企业应用调用企业号提供的接口, ...

  8. 微信企业号开发[二]——获取用户信息

    注:文中绿色部分为摘自微信官方文档 在<微信企业号开发[一]--创建应用>介绍了如何创建应用,但是当用户点击应用跳转到我们设定的URL时,其实并没有带上用户的任何信息,为了获取用户信息,我 ...

  9. 企业号开发php,微信企业号-开发笔记-1

    开发微信企业号,首先需要实名认证,然后可以获得200人关注的企业号,认证以后可以获得1000人关注,企业号可以建立若干个应用,每个应用相当于一个订阅号或者服务好功能,但是没有发送消息限制,本文假设已经 ...

最新文章

  1. 大话PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置...
  2. 数据库常用面试题(SQL Server) (转载)
  3. 【互联网今日大事儿】陌陌今日上市马云变亚洲首富!
  4. 对python编程做介绍-python002-编程语言介绍
  5. 深入解读首个万亿级语言模型 Switch Transformer
  6. c语言陷阱试题,超级经典计算机二级C语言陷阱考试题.doc
  7. 做一个程序员,是不是“努力就会成功”?现实残酷但又必须面对!
  8. Google搜索正在“死亡”
  9. 线程---生产者消费者问题
  10. 计算机科学素养大赛,第六届全国大学生计算机应用能力与信息素养大赛圆满结束...
  11. Visual Studio 2015 移动跨平台开发初体验
  12. 论文笔记_S2D.18_2019-ICRA_DeepFusion: 基于单视图深度和梯度预测的单目SLAM实时稠密三维重建
  13. Win10企业版安装应用商店
  14. 2019ZIF郑州工博会 盛大起航
  15. Nature:进化新方式?线粒体DNA会插入我们的基因组
  16. primordials is not defined错误,正确的解决方案 亲测 完美 好用
  17. Perfmon监控Windows进程性能
  18. 应用宝shangjia安全评估报告_【开发者必看】APP《安全评估报告》怎么写?附填写范例...
  19. Day 40 多表查询以及pymysql相关操作
  20. 微信计算机内存是32位吗?,windows7旗舰版32位和64位的区别是什么

热门文章

  1. premiere cs 下载
  2. sql2005导出Excel错误解决方法
  3. filecoin的思考
  4. 如何保住我们的头发?初级程序员的碎碎念
  5. 爱是相互的,这样才是平衡
  6. RHEL4下 squid-2.7.STABLE9安装配置
  7. spring boot actuator服务监控与管理
  8. (转)K-近邻算法(KNN)
  9. MySQL数据库以及其Python用法
  10. 大数据创业难度大 五个值得关注的重点