8、推送component_verify_ticket协议

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

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

<span style="font-family:SimSun;font-size:12px;">            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 2015-07-05 10:16 59人阅读 评论(0) 收藏的更多相关文章

  1. DateTime日期格式获取 分类: C# 2014-04-15 10:36 233人阅读 评论(0) 收藏

    c#.net 获取时间年月日时分秒格式 //获取日期+时间 DateTime.Now.ToString();            // 2008-9-4 20:02:10 DateTime.Now. ...

  2. iOS开发:创建真机调试证书 分类: ios相关 2015-04-10 10:22 149人阅读 评论(0) 收藏

    关于苹果iOS开发,笔者也是从小白过来的,经历过各种困难和坑,其中就有关于开发证书,生产证书,in_house证书,add_Hoc证书申请过程中的问题,以及上架发布问题.今天就着重说一下关于针对于苹果 ...

  3. Java获取项目中的路径 分类: Java Game 2014-08-14 10:17 122人阅读 评论(0) 收藏

    在项目中经常需要获取某个文件的路径: 在这里提供一些获取路径的方法.. 1.此种方式获取的路径,是当前类所在的路径: UserDAOTest.class.getResource("UserD ...

  4. 善用VS中的Code Snippet来提高开发效率 分类: C# 2015-01-22 11:06 69人阅读 评论(0) 收藏

    前言  在谈谈VS中的模板中,我介绍了如何创建项目/项模板,这种方式可以在创建项目时省却不少重复性的工作,从而提高开发效率.在创建好了项目和文件后,就得开始具体的编码了,这时又有了新的重复性工作,就是 ...

  5. iOS Socket第三方开源类库 ----AsyncSocket 分类: ios相关 ios技术 2015-03-11 22:14 59人阅读 评论(0) 收藏

    假如你也是一个java程序员,而你又不是很懂Socket. 下面我的这篇文章也许能帮助你一些. http://xiva.iteye.com/blog/993336 首先我们写好上面文章中的server ...

  6. IOS第三方数据库--FMDB 分类: ios技术 2015-03-01 09:38 57人阅读 评论(0) 收藏

    iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...

  7. 【搜索引擎Jediael开发笔记】V0.1完整代码 2014-05-26 15:16 443人阅读 评论(0) 收藏

    详细代码请见 E:\Project\[重要]归档代码\SearchEngine归档代码 或 https://code.csdn.net/jediael_lu/jediael/tree/10991c83 ...

  8. NYOJ-86 找球号(一)AC 分类: NYOJ 2014-02-02 10:45 160人阅读 评论(0) 收藏

    NO.1 单纯的傻傻的代码: #include<stdio.h> long long num[100000005]={0}; int main(){ int n, m, k; scanf( ...

  9. Nginx平台构架 分类: Nginx 2015-07-13 10:55 205人阅读 评论(0) 收藏

    深入理解Nginx模块发开与架构解析读书笔记. nginx在启动后,在unix系统中会以daemon的方式(可以手动关闭 nginx.conf daemon off)在后台运行,后台进程包含一个mas ...

随机推荐

  1. Jmeter插件监控服务器性能

    处理利用jmeter实施监控压测时受压机的各项性能 操作步骤: 施压机上的jmeter/lib/ext中放入下载的插件包 jmeter-plugins-perfmon-2.1.jar 受压机上放入Se ...

  2. MySQL查看已安装的编译参数

    MySQL5.1.x版本 cat $path/bin/mysqlbug|grep configure MySQL5.5.x

  3. [Java] JSP笔记 - EL、JSTL 常用标签

    一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...

  4. 20155324王鸣宇对C语言课程回顾及对Java的展望

    # 第二次预备作业 你有什么技能比大多人(超过90%以上)更好? 针对这个技能的获取你有什么成功的经验? 与老师博客中的学习经验有什么共通之处? 我谦虚的说整个2015级五系英雄联盟这个游戏我最厉害( ...

  5. 他山之石——vs2013 安装与部署及程序打包

    C#打包需要这个:InstallShield 2013 Limited Edition for Visual Studio  .下载地址: InstallShield 2013 Limited Edi ...

  6. java从基础知识(十)java多线程(上)

    线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元.另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点 ...

  7. (转)CString截取字符串全攻略

    附:去掉空格方法 CString str("e w r we  中华ADF 华AG中"); newstr=str.Replace(" ", "&quo ...

  8. Spring MVC返回Map格式JSON数据

    问题描述: ajax中走error : function(e) {} 问题背景: 在测试controller层时,试过了ResponseEntity<ResponseModel>这种类型返 ...

  9. protocol http not supported or disabled in libcurl apt-get

    ubuntu 14.04 碰到了这个莫名其妙的问题.谷歌了一把,解决方案如下:http://askubuntu.com/questions/683857/curl-1-protocol-https-n ...

  10. Java实现线性阈值模型(Linear Threshold Model)

    影响力传播的线性阈值模型: 网络中连接任意两个节点u,v之间的边都有权重,任意一个节点它的各个邻居节点的边的权重之和为1,即 N(v):neighbors of v. 网络中的节点分为已激活节点和未激 ...