亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

點擊菜單一時 并沒有推送事件給用戶 是什么問題?


<?php
class IndexAction extends Action {

public function __construct(){

}

public function index(){
//獲得參數 signature nonce token timestamp echostr
$nonce ? ? = $_GET['nonce'];
$token ? ? = 'imooc';
$timestamp = $_GET['timestamp'];
$echostr ? = $_GET['echostr'];
$signature = $_GET['signature'];
//形成數組,然后按字典序排序
$array = array();
$array = array($nonce, $timestamp, $token);
sort($array);
//拼接成字符串,sha1加密 ,然后與signature進行校驗
$str = sha1( implode( $array ) );
if( $str ?== $signature && $echostr ){
//第一次接入weixin api接口的時候
echo ?$echostr;
exit;
}else{
$this->reponseMsg();
}
}
// 接收事件推送并回復
public function reponseMsg(){
//1.獲取到微信推送過來post數據(xml格式)
$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
//2.處理消息類型,并設置回復類型和內容
$postObj = simplexml_load_string( $postArr );
//判斷該數據包是否是訂閱的事件推送
if( strtolower( $postObj->MsgType) == 'event'){
//如果是關注 subscribe 事件
if( strtolower($postObj->Event == 'subscribe') ){
//回復用戶消息(單圖文)
$arr = array(
array(
'title'=>'離開,也許是夢想的開始',
'description'=>"Dream Road",
'picUrl'=>'http://pic.365j.com/article/image/201310/16/632c380466.jpg',
'url'=>'http://huaban.com/',
)
);
//1.實例化模型
$indexModel = new IndexModel;
$indexModel->responseSubscribe($postObj,$arr);



//回復用戶消息(純文本格式)
/*$toUser ? = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time ? ? = time();
$msgType ?= ?'text';
$content ?= '歡迎關注我們的微信公眾賬號'.$postObj->FromUserName.'-'.$postObj->ToUserName;
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info ? ? = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;*/
}
}
if(strtolower($postObj->Event) == 'click'){
//如果是自定義菜單中的event->click
if(strtolower($postObj->EventKey) =='item1'){
$content="這是item1菜單的事件推送";
}
if(strtolower($postObj->EventKey) =='songs'){
$content="這是歌曲菜單的事件推送";
}

$indexModel = new IndexModel;
$indexModel ->responseText($postObj,$content);
}


//用戶發送tuwen1關鍵字的時候,回復一個單圖文
if( strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='tuwen' ){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$arr = array(
array(
'title'=>'imooc',
'description'=>"imooc is very cool",
'picUrl'=>'http://www.xianlaiwan.cn/static/img/common/logo.png',
'url'=>'http://www.xianlaiwan.cn',
),
array(
'title'=>'hao123',
'description'=>"hao123 is very cool",
'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
'url'=>'http://www.hao123.com',
),
array(
'title'=>'qq',
'description'=>"qq is very cool",
'picUrl'=>'http://www.xianlaiwan.cn/static/img/common/logo.png',
'url'=>'http://www.qq.com',
),
);
//1.實例化模型
$indexModel = new IndexModel;
$indexModel->responseNews($postObj,$arr);
/*$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach($arr as $k=>$v){
$template .="<item>
<Title><![CDATA[".$v['title']."]]></Title>
<Description><![CDATA[".$v['description']."]]></Description>
<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
<Url><![CDATA[".$v['url']."]]></Url>
</item>";
}

$template .="</Articles>
</xml> ";
echo sprintf($template, $toUser, $fromUser, time(), 'news');*/

//注意:進行多圖文發送時,子圖文個數不能超過10個
}else{
switch( trim($postObj->Content) ){
case 1:
$content = '您輸入的數字是1';
break;
case 2:
$content = '您輸入的數字是2';
break;
case 3:
$content = '您輸入的數字是3';
break;
case 4:
$content = "<a href='http://www.xianlaiwan.cn'>慕課</a>";
break;
case '英文':
$content = 'imooc is ok';
break;
case 5:
? ?$content = 'sdk is very good';
break;
default:
$content = '沒有找到相關信息';
break;
}

//實例化對象
$indexModel = new IndexModel();
$indexModel->responseText($postObj,$content);
/*$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
//注意模板中的中括號 不能少 也不能多
$fromUser = $postObj->ToUserName;
$toUser ? = $postObj->FromUserName;
$time ? ? = time();
// $content ?= '18723180099';
$msgType ?= 'text';
echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);*/

}//if end
}//reponseMsg end

/*function http_curl(){
//獲取imooc
//1.初始化curl
$ch = curl_init();
$url = 'http://www.baidu.com';
//2.設置curl的參數
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//3.采集
$output = curl_exec($ch);
//4.關閉
curl_close($ch);
var_dump($output);
}*/

function http_curl($url,$type='get',$res='json',$arr=''){
//獲取imooc
//1.初始化curl
$ch = curl_init();
//2.設置curl的參數
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($type == 'post'){
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $arr);
}
//3.采集
$output = curl_exec($ch);
//4.關閉
curl_close($ch);
if($res == 'json'){
if(curl_error($ch)){
return curl_errno($ch);
}
else{
return json_decode($output,ture);
}

}
var_dump($output);
}

function getWxServerIp(){
$accessToken = "RwTHzNf5hNvQYwMlE2NpJEmBeJHz2Pcy93gQj4nKeVFNULRRNjsWJvwrNavMCsdMWs2UDiOllM744_DH7wu60TWquTcoz7nwUxm5pIspP70ZZZeAJAKKK";
$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$accessToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$res = curl_exec($ch);
curl_close($ch);
if(curl_errno($ch)){
var_dump(curl_error($ch));
}
$arr = json_decode($res,true);
echo "<pre>";
var_dump( $arr );
echo "</pre>";
}

//返回access-token session解決方法
public function getWxAccessToken(){
//將access-token存在session中
/*if( $_SESSION['access_token'] && $_SESSION['expire_time']>time()){
//如果access_token在session并沒有過期
return $_SESSION['access_token'];
}else{ */
//如果access_token在session不存在或者已經過期,重新獲取access_token
$appid = 'wxb3dc99a8e4ca3463';
$appsecret = ?'e981767d4002c2fc50398502460f7340';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
$res = $this->http_curl($url,'get','json');
$access_token = $res['access_token'];
//將重新獲取到的access_token存到session
$_SESSION['access_token'] = $access_token ;
$_SESSION['access_token'] = time()+7200 ;
return $access_token;
}
public function definedItem(){
? ? //創建微信菜單
//目前微信接口的調用方式都是通過curl post/get
header('content-type:text/html;charset=utf-8');
echo $access_token = $this->getWxAccessToken();
echo '<br/>';
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
$postArr = array(
'button'=>array(
array(
'name'=>urlencode('菜單一'),
'type'=>'click',
'key'=>'item1',
),//第一個一級菜單
array(
'name'=>urlencode('菜單二'),
'sub_button'=>array(
array(
'name'=>urlencode('歌曲'),
'type'=>'click',
'key'=>'songs',
),//第一個二級菜單
array(
'name'=>urlencode('電影'),
'type'=>'view',
'url'=>'http://www.baidu.com',
),//第二個二級菜單
),

),//第二個一級菜單
array(
'name'=>urlencode('菜單三'),
'type'=>'view',
'url'=>'http://www.qq.com'
),//第三個一級菜單
),
);

echo $postJson = urldecode(json_encode($postArr));
$res = $this->http_curl($url,'post','json',$postJson);
var_dump($res);

}
}//class end


正在回答

3 回答

,一 一:!

0 回復 有任何疑惑可以回復我~

 11I,,,一

0 回復 有任何疑惑可以回復我~

,,丨111
,1、:,十!一直i need ,一一十some11one1,1


丨一一一+一11一定的1
一一對應1件
一,一
個、、,
人生、i一一
氵、一直?。阂?br />


;1.、!
1一、一十i
i1
十年樹木i
一切、,ll has the

1

1,

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

點擊菜單一時 并沒有推送事件給用戶 是什么問題?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號