微信公众号自定义菜单表情失效停用是怎么回事

今天看啥 热点:
微信公众号-开发者-自定义菜单-CLICK事件处理,开发者-click  想点击菜单,推送消息。功能很简单,坑了我一天时间。在此笔记。
菜单代码:
"button":[
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
"name":"菜单",
"sub_button":[
"type":"view",
"name":"搜索",
"type":"view",
"name":"视频",
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
菜单生成好了以后,如何处理&赞一下我们&相应事件呢?
引用方倍工作室的代码修改如下:
方倍工作室
CopyRight 2014 All Rights Reserved
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {
$wechatObj-&responseMsg();
$wechatObj-&valid();
class wechatCallbackapiTest
//验证签名
public function valid()
$echoStr = $_GET["echostr"];
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if($tmpStr == $signature){
echo $echoStr;
$siteURL='http://210.14.148.180/kdjy/';
public function responseMsg()
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$this-&logger("R ".$postStr);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj-&MsgType);
$result = "";
switch ($RX_TYPE)
case "event":
$result = $this-&receiveEvent($postObj);
case "text":
$result = $this-&receiveText($postObj);
$this-&logger("T ".$result);
echo $result;
private function receiveEvent($object)
switch ($object-&Event)
case "subscribe":
$content = "欢迎关注方倍工作室 ";
//------------------- 赞一下 start ------------------------
case "CLICK":
//这里是大写&CLICK&
$content = $object-&EventK // 获取key
if($content=='V1001_GOOD'){
$content = '谢谢支持!!!';
//------------------- 赞一下 end ------------------------
$result = $this-&transmitText($object, $content);
return $result;
private function receiveText($object)
$keyword = trim($object-&Content);
$url = "/weather/?appkey=".$object-&ToUserName."&city=".urlencode($keyword);
$output = file_get_contents($url);
$content = json_decode($output, true);
$result = $this-&transmitNews($object, $content);
return $result;
private function transmitText($object, $content)
if (!isset($content) || empty($content)){
return "";
$textTpl = "&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[%s]]&&/Content&
$result = sprintf($textTpl, $object-&FromUserName, $object-&ToUserName, time(), $content);
return $result;
private function transmitNews($object, $newsArray)
if(!is_array($newsArray)){
return "";
$itemTpl = "
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&
&PicUrl&&![CDATA[%s]]&&/PicUrl&
&Url&&![CDATA[%s]]&&/Url&
$item_str = "";
foreach ($newsArray as $item){
$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
$newsTpl = "&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[news]]&&/MsgType&
&Content&&![CDATA[]]&&/Content&
&ArticleCount&%s&/ArticleCount&
&Articles&
$item_str&/Articles&
$result = sprintf($newsTpl, $object-&FromUserName, $object-&ToUserName, time(), count($newsArray));
return $result;
private function logger($log_content)
加入如下代码,注意CLICK是大写。
微信api:http://mp./wiki/2/5baf56ceb86ae.html#.E7.82.B9.E5.87.BB.E8.8F.9C.E5.8D.95.E6.8B.89.E5.8F.96.E6.B6.88.E6.81.AF.E6.97.B6.E7.9A.84.E4.BA.8B.E4.BB.B6.E6.8E.A8.E9.80.81
PS:为找这个key,找了半天,我是小学生,官方不能写个demo吗?
暂无相关文章
相关搜索:
相关阅读:
相关频道:
Android教程最近更新var sogou_ad_id=731545;
var sogou_ad_height=90;
var sogou_ad_width=980;

我要回帖

更多关于 公众号自定义菜单跳转 的文章

 

随机推荐