微信第三方平台定时接收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实现了 ...
随机推荐
- ftp org.apache.commons.net.ftp.FTPClient 判断文件是否存在
String path = "/SJPT/ONPUT/HMD_TEST/" ; FtpTool.getFTPClient().changeWorkingDirectory(path ...
- MongoVue中Collections无法显示的问题
问题描述: 通过Python向MongoDB写入数据后,MongoVue中Collections无法显示的问题 原因: Mongodb 3.0之后默认的 storageEngine为wiredTige ...
- vue2.0环境搭建
1.安装node.js(官网) 2.安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 3.安装webpack ...
- 【Java EE 学习 79 上】【mybatis 基本使用方法】
一.简介 mybatis类似于hibernate,都是简化对数据库操作的框架,但是和hibernate不同的是,mybatis更加灵活,整体来说框架更小,这体现在它需要我们手写SQL语句,而hiber ...
- (转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
string strCon = "Provider=Microsoft.ACE.OLEDB.12.0;data source=" + filePath + ";Exten ...
- haproxy+keepalived
global_defs { router_id LVS_DEVEL } vrrp_script chk_haproxy { script "killall -0 haproxy" ...
- 【leetcode】Palindrome Number
题目简述: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could n ...
- 移动端js知识总结
1.如果使用jquery绑定touch事件的话,获取touchstart,touchmove的触点坐标用 e.originalEvent.targetTouches[0].pageX, 获取touch ...
- Axure 自适应视图
假设B为A的子视图 继承: A更新 文字内容.交互事件.禁用: 位置.尺寸.样式.交互样式 时, B都会继承响应更新变化 B更新 文字内容.交互事件.禁用时,A也会更新 B更新 位置.尺寸.样式.交互 ...
- react native AsyncStorage的使用
如果现在有一个需求,是要把用户的账号密码保存到本地,大家会怎么做的呢?如果在android中,我相信一大部分人会想到SharedPreferences,这是一个以键值对的形式进行存储的.那如果在rea ...