微信第三方平台定时接收component_verify_ticket
背景:
获取第三方平台令牌(component_access_token),增加了component_verify_ticket参数。component_verify_ticket由公众平台每隔10分钟,持续推送给第三方平台方(在创建公众号第三方平台审核通过后,才会开始推送)。
目标:
接收微信服务器推送的component_verify_ticket
文档说明:(参见微信开放平台文档)
推送component_verify_ticket协议
在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密(详细请见【消息加解密接入指引】),接收到后必须直接返回字符串success。
于是在开放平台管理中心中寻找“授权事件接收URL”,如下图。

截获微信推送component_verify_ticket的POST请求地址:
http://[授权事件接收URL]?encrypt_type=aes
×tamp=1438521627
&nonce=33431792
&msg_signature=xxxxxx
&signature=xxxxxxx
请求内容格式:
<xml>
<AppId><![CDATA[AppId]]></AppId>
<Encrypt><![CDATA[加密XML]]></Encrypt>
</xml>
知晓了微信推送xml的格式,接下来要做的就是解密xml,于是继续阅读文档,(参见 微信开放平台 消息加解密指引)
关于解密,微信公众平台提供了c++, php, java, python, c# 5种语言的示例代码(点击下载)
这里基于php版本的示例代码来实现PHP接收component_verify_ticket(基于CI框架)
/**
*“授权事件接收URL”每隔10分钟接收component_verify_ticket
**/
public function ticket(){
require_once(DPL_LIBS.'wx/wxBizMsgCrypt.php');
$wx = new WXBizMsgCrypt($this->token, $this->encodingAesKey, $this->appId); $inputs = (object)array(
'encrypt_type' => '',
'timestamp' => '',
'nonce' => '',
'msg_signature' => '',
'signature' => ''
);
foreach ($inputs as $key => &$value) {
$tmp = $this->input->get($key);
if (!empty($tmp)){
$value = $tmp;
}
}
$this->save_key_value('component_verify_ticket_get',json_encode($inputs)); $fp = fopen("php://input","r");
if (isset($fp) && !empty($fp)){
$this->post_xml = stream_get_contents($fp);
if (empty($this->post_xml)){
return;
}
}
$this->save_key_value('component_verify_ticket_post',$this->post_xml); $this->xml = str_replace('AppId', 'ToUserName', $this->post_xml); $msg_xml = '';
$errCode = $wx->decryptMsg($inputs->msg_signature, $inputs->timestamp, $inputs->nonce, $this->xml, $msg_xml); $componentVerifyTicket = $this->parse_xml($msg_xml,'ComponentVerifyTicket'); $this->save_key_value('component_verify_ticket',$componentVerifyTicket);
if ($errCode == 0){
echo "success";
}else{
}
return;
}
分享请注明:
原文出自http://www.cnblogs.com/wenki/p/4700828.html
微信第三方平台定时接收component_verify_ticket的更多相关文章
- 微信第三方平台解密报错:Illegal key size
今天在交接别人代码的时候遇到的,微信第三方平台解密报的错误,原因: 如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size ...
- 微信第三方平台获取component_verify_ticket
官方文档说明: 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_verify_ticket.第三方平台方在收到tic ...
- 公众号第三方平台开发 获取 component_verify_ticket 2015-07-05 10:16 59人阅读 评论(0) 收藏
8.推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_veri ...
- 微信第三方平台开头篇--MVC代码(第三方获取ticket和公众号授权)
微信公众号授权给开放平台 公众号授权给第三方平台的技术实现流程比较简单 这个步骤遗漏了开头获取第三方平台自己的accessToken 先说下流程 如何注册开放平台的第三方信息看截图 其他不说了,此文只 ...
- 微信第三方平台代公众号发起网页授权 48001 api unauthorized 问题
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&gr ...
- 【小程序】基于.NET CORE2.1 的 微信开放平台 第三方平台开发 教程一 准备工作
微信第三方平台概述 公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,开放给所有通过开发者资质认 ...
- 微信公众账号第三方平台全网发布源码(java)- 实战测试通过
第一部分:微信第三方平台配置
- 微信开放平台开发-授权、全网发布(PHP)
这两天做了微信开发平台的开发,梳理下... 浙江百牛信息技术bainiu.ltd整理发布于博客园 先看看授权的流程: 第一步:接收component_verify_ticket: 1.微信服务器每隔1 ...
- JeeWx 微信管家平台
.平台简介 Jeewx是一款开源.免费的微信管家系统(多触点管理平台),2014年荣获CSDN开发商大会第一名.采用JAVA语言,支持微信公众号.微信企业号.支付宝服务窗等多触点管理.Jeewx实现了 ...
随机推荐
- 使用Java的Frame类编写的QQ登录界面
public static void main(String[] args) { Frame f = new Frame(); //关闭窗体 f.addWindowListener(new Windo ...
- CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target 解决办法
产生这个问题的原因是最新版本的CocoaPods把Podfile文件的书写格式改变了,官网推荐用如下格式书写: platform :ios, '8.0' use_frameworks! target ...
- C#网络编程数据传输中封装数据帧头的方法
在C/S端编程的时候,经常要在C端和S端之间传数据时自定义一下报文的帧头,如果是在C/C++,封装帧头是一件很简单的事情,直接把unsigned char *强转为struct就行,但是在C#中,并没 ...
- IE不能上网,但是其他浏览器可以
打开IE_工具_internet选项_连接_局域网设置_(勾选)自动检测配置其它的勾去掉,确定.
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
一.背景 最近因为公司项目性能需要,我们考虑把以前基于的log4j的日志系统重构成基于Slf4j和log4j2的日志系统,因为,使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见 ...
- jquery简单的轮播效果!
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- for_each(c++11)
http://www.cplusplus.com/reference/algorithm/for_each/ template<class InputIterator, class Functi ...
- 【Java EE 学习 73】【数据采集系统第五天】【参与调查】【导航处理】【答案回显】【保存答案】
一.参与调查的流程 单击导航栏上的“参与调查”按钮->EntrySurveyAction做出相应,找到所有的Survey对象并转发到显示所有survey对象的页面上供用户选择->用户单击其 ...
- Datazen自定义地图
Datazen的地图数据定义主要以ESRI的Shape文件格式为主,这是现如今被广泛使用的一种地图数据格式.在Datazen中,自定义地图需要提供如下两个地图数据定义文件: SHP文件提供地图的位置数 ...
- 使用Solr索引MySQL数据
环境搭建 1.到apache下载solr,地址:http://mirrors.hust.edu.cn/apache/lucene/solr/ 2.解压到某个目录 3.cd into D:\Solr\s ...