8、推送component_verify_ticket协议

在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密(详细请见【消息加解密接入指引】),接收到后必须直接返回字符串success。

上面是微信API里的原话,在回调页面做了下日志记录:

            string post = "";string get = "";for (int i = 0; i < Request.Form.Count; i++){post += Request.Form.Keys[i] + "=" + Request.Form[i] + " ";}for (int i = 0; i < Request.QueryString.Count; i++){get += Request.QueryString.Keys[i] + "=" + Request.QueryString[i] + " ";}</span>

但是,日志记录的Post和Get参数,都没内容 component_verify_ticket 相关的内容。

后面经过一番查询,原来是要这样才能获取到微信推送的内容:

byte[] data = Request.BinaryRead(Request.TotalBytes);
           string postData = Encoding.Default.GetString(data);

//公众号第三方平台的appid
            string appId = ConfigurationManager.AppSettings["WeixinAppID"];
            //第三方平台申请时填写的接收消息的校验token
            string token = ConfigurationManager.AppSettings["WeixinToken"];
            //第三方平台申请时填写的接收消息的加密symmetric_key
            string encodingAesKey = ConfigurationManager.AppSettings["WeixinEncodingAESKey"];
            string sMsg = "";//解密后的内容
            var msg = new WXBizMsgCrypt(token, encodingAesKey, appId);
            int ret = msg.DecryptMsg(
                Request.QueryString["msg_signature"],
                Request.QueryString["timestamp"],
                Request.QueryString["nonce"],
                postData,
                ref sMsg);
            AppService.LogService.Log("回调参数", "构造参数:" +
                                              " appId:" + appId +
                                              " token:" + token +
                                              " encodingAesKey:" + encodingAesKey + " 解密参数:" +
                                              " signature:" + Request.QueryString["signature"] +
                                              " msg_signature:" + Request.QueryString["msg_signature"] +
                                              " timestamp:" + Request.QueryString["timestamp"] +
                                              " nonce:" + Request.QueryString["nonce"] +
                                              " postData:" + postData
                );

AppService.LogService.Log("解密结果", ret + " " + sMsg);

解密后得到的结果大概是这样:

<xml>
<AppId><![CDATA[wx34b5f92cdbb24fe4]]>
</AppId>
<CreateTime>1436066428</CreateTime>
<InfoType><![CDATA[component_verify_ticket]]>
</InfoType>
<ComponentVerifyTicket><![CDATA[ticket@@@SfS2Ck4oxPhL0LRSJH5v9Pr68vjeDfWWPx9SzIWzm6PeKGeEoszohQ-5-EBm4RajI7AKlzIz1Kj1ghPg0t199w]]>
</ComponentVerifyTicket>
</xml>

ComponentVerifyTicket节点即是我们需要的结果。

希望遇到同样问题的童鞋不用走弯路。

公众号第三方平台开发 获取 component_verify_ticket相关推荐

  1. 微信公众号第三方平台开发PYTHON教程 PART 2

    github地址:cppfun@wechat-open-third-party-dev 微信公众号第三方平台开发python教程 Part 1 这一节肯定是在第一节的基础上,如果你没有看过第一节,可能 ...

  2. 公众号第三方平台开发 - 教程五 代公众号发起网页授权源码

    教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 ...

  3. 微信开放平台 公众号第三方平台开发 教程一 平台介绍

    教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 ...

  4. 微信开放平台公众号第三方平台开发 教程一 平台介绍

        微信现在火,火的如火如荼,给我们这些第三方的开发者带来了不少机会,相信现在有不少人在基于微信的公众平台在做二次开发,接下来会一系列的文章来介绍微信的另一种开发模式- 基于微信开发平台的公众号第 ...

  5. 公众号第三方平台开发流程详解

    准备工作 1. 注册申请 访问https://open.weixin.qq.com 根据指引进行注册申请,申请流程相对比较麻烦,需要耐心等待审核 2. 创建第三方平台 进入'管理中心->创建第三 ...

  6. 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台

     更多微信技术交流,请加QQ群:289709451.287090836    公众号第三方平台的开放,是为了让公众号运营者,在面向垂直行业需求时,可以一键登录授权给第三方的公众号运营平台,通过第三方开 ...

  7. 微信开放平台之公众号第三方平台开发及全网发布验证

    技术交流请加QQ群:Jeewx微信开发④[289709451] 微信公众号第三方平台的开放,让公众号运营者在面向垂直行业需求时,可以通过一键登录授权给第三方开发者,来完成相关的处理能力,方便快捷,那如 ...

  8. 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

     更多微信技术交流,请加QQ群:289709451.287090836     前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实 ...

  9. 微信公众号第三方平台开发PYTHON教程 PART 1

    微信是一个时代的标志,虽然它现在不温不火,但我们大部分人离不开它.最近我帮朋友的公司接入了微信公众号第三方,使其成为第三方开发者. 网上公众号的开发教程,描述很多,但第三方的就几乎没有,可能是商业部分 ...

最新文章

  1. 【ACM】杭电OJ 2007
  2. 5G 行业专网 — 三大运营商的 5G 专网类型
  3. Cannot resolve corresponding JNI function
  4. python万年历_Python实现的简单万年历例子分享
  5. python怎么导入大小字母_isort-用于对python导入的库按照字母进行排序的工具
  6. 不同模块下包重名怎么解决_注册公司核名通不过,疑难核名有办法解决吗?
  7. 微软推出一波AI新功能:自动生成图表、更贴心的Cortana和搜索
  8. java线程冲突问题——不安全的线程例子
  9. Oracle 11g 字符集修改
  10. Midori 0.5 发布,轻量级跨平台网页浏览器
  11. 计算机网络(第七版)谢希仁编著 前五章课后答案计算题详解
  12. 文本文档怎么转换为html文件,win10系统下如何将文本文档转换为网页
  13. 线性反馈移位寄存器(LFSR,Linear Feedback Shift Register)
  14. Go语言实战-nginx日志处理
  15. ESP32使用SDIO接口注意事项
  16. 计算机中计算平均数的函数是什么,Excel里怎么求平均数的?函数是什么?!excle2010怎么求平均数...
  17. 微信小程序头像怎么改变形状_如何实现微信小程序换头像?三步帮你搞定!
  18. shell脚本:自动更新动态域名的IP地址
  19. 如何正确看谷歌文档android,在Android webview中查看google文档中的pdf时“无法预览”...
  20. 亚马逊跨境电商如何运营模式?

热门文章

  1. Maven报错解决:Element 'dependency' cannot have character [children], because the type's content type is
  2. linux本地监听创建,linux 创建监听服务器
  3. SpringBoot自定义参数验证器
  4. java arrays.sort() c_正面刚算法-Java中Arrays.sort()(一)
  5. SqlTransaction——事务详解
  6. 日期Date和字符串之间转换
  7. FastAPI 之自动化测试数据库接口
  8. 功能测试Bug频发?测试工作中这点不可忽略
  9. php 转义 回车 空格 file put content,为什么在服务器上php里执行file_put_contents创建文件返回是false呢,文件目录已经设置为777的权限了,不解...
  10. mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库