亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - PHP開發微信無法獲取到signature,timestamp,nonce

瀏覽:119日期:2022-09-25 14:42:14

問題描述

<?php namespace HomeController;use ThinkController;define('TOKEN','weixin');/* *微信的入口文件 */class WechatController extends Controller {

protected $User; //微信用戶對象 protected $app_id; protected $secret;/*通用入口 構造方法 *aunthor:caodi *date:2015-09-25 */public function _initialize() { $this->app_id = C('APPID'); $this->secret = C('APPSECRET');}/*微信入口 *author:caodi *date:2015-09-22 */public function wechat() { DLOG('微信入口記錄的時間','run','caodi'); if ($_GET[’echostr’] != NULL ) { echo $_GET[’echostr’];exit; } //微信只會在第一次在URL中帶echostr參數,以后就不會帶這個參數了 if ($this->checkSignature()) { //success!$postStr = $GLOBALS['HTTP_RAW_POST_DATA'];//extract post dataif (!empty($postStr)) { libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); $this->$User = $postObj; //根據消息類型將信息分發 $this->route($postObj); //exit; //以下為測試用的 $toUsername = $postObj->ToUserName; $fromUsername = $postObj->FromUserName; $keyword = trim($postObj->Content); $msyType = trim($postObj->MsgType); //消息類型 $event = trim($postObj->Event); //事件類型 $time = time(); $result = json_encode($postObj); DLOG('消息的參數'.$result,'run','caodi'); $textTpl = '<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>'; if ($event == 'subscribe') {$msgType = 'text';$contentStr = date('Y-m-d H:i:s',time());$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr; }} } else {echo 'error'; }}/*wechat身份驗證 *author:caodi *date:2015-09-22 */public function checkSignature() { //you must define TOKEN by yourselfif (!defined('TOKEN')) {throw new Exception('TOKEN is not defined!'); } $nonce = $_GET['nonce']; $token = TOKEN; $timestamp = $_GET['timestamp']; $signature = $_GET['signature']; echo $signature.'<br/>'; echo $timestamp.'<br/>'; echo $nonce.'<br/>';$tmpArr = array($token,$timestamp,$nonce); sort($tmpArr,SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if ($tmpStr == $signature) {return true;echo 'true'; } else {return false;echo 'false'; }}/*根據微信的消息類型來進行的分發 *author:caodi *date:2015-09-23 */public function route($postObj) { $msgType = trim($postObj->MsgType); DLOG('mygtype='.$msgType,'run','caodi'); switch ($msgType) {//(1)接受的為消息推送case 'text': $this->reponse_text($postObj); break;case 'image': $this->reponse_image($postObj); break;case 'voice': $this->reponse_voice($postObj); break;//(2)接受的為事件推送case 'event': $event = $postObj->Event; DLOG('event='.$event,'run','caodi'); switch ($event) {case 'subscribe': $this->subscribe($postObj); break;case 'unsubscribe': $this->unsubscribe($postObj); break;//自定義菜單的事件功能 } }}/*微信用戶關注微信號事件(獲取用戶的基本信息存入到用戶表中去) *author:caodi *date:2015-09-23 */public function subscribe($postObj) { $open_id = $postObj->FromUserName; $create_time = $postObj->CreateTime; $UserDao = M('user'); //(1)根據用戶的open_id去 https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN $access_token = 'RQ4fmRD-a2JflW7_9-mmefNkHnK35aoZHHXn9PoB_vqDfxVWdT8XNbtfv5F1v1yK_b81Xar3So4gRLdlX6QxJfa5fGApcOAeLI_Fx3h9hxGjkNhUgADXidNBKIi5EjanHOZjADAVCN'; $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$open_id.'&lang=zh_CN'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求保存的結果到字符串還是輸出在屏幕上,非0表示保存到字符串中 curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //對認證來源的檢查,0表示阻止對證書的合法性檢查 $result = curl_exec($ch); DLOG('result'.$result,'run','caodi'); curl_close($ch); $user_info = json_decode($result,true); //(2)將得到的用戶信息保存到數據庫中去 $data = array(); $data[’user_nick’] = $user_info[’nickname’]; $user_info[’sex’] = $user_info[’sex’] == 0 ? 1 : $user_info[’sex’]; //將性別為0的轉化為默認的男性 $data[’user_sex’] = $user_info[’sex’]; $data[’user_avatar’] = $user_info[’headimgurl’]; $data[’user_type’] = 1;//用戶類型 1-普通用戶 2-助理 $open_id = json_decode($open_id,true); $data[’wx_open_id’] = $user_info[’openid’]; $data[’user_app_version’] = 'wechat9.0'; $data[’user_platform’] = 'wechat'; //當前使用的設備平臺 $data[’user_create_time’] = date('Y-m-d H:i:s',time()); $result = $UserDao->add($data); DLOG('sql= '.$UserDao->getlastsql(),'run','caodi'); if($result === false) {DLOG('數據庫插入失敗','run','caodi');exit; }}/*自定義菜單的生成 *author:caodi *date:2015-09-24 */public function create_menu(){ include_once(APP_PATH.'Common/Conf/menu_config.php'); $data = $menu_config; $access_token = 'RQ4fmRD-a2JflW7_9-mmefNkHnK35aoZHHXn9PoB_vqDfxVWdT8XNbtfv5F1v1yK_b81Xar3So4gRLdlX6QxJfa5fGApcOAeLI_Fx3h9hxGjkNhUgADXidNBKIi5EjanHOZjADAVCN'; $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); var_dump($result); exit;}/*通過OAuth2.0的網頁授權(自定義菜單中,獲取用戶的openID同時進入我的任務頁) *author:caodi *date:2015-09-24 */public function my_task () { $code = $_GET[’code’]; $oprn_id = $this->code_to_openID($code); var_dump($code); echo 'caodi'.'<br>'; echo '<center><h1>{$open_id}</h1></center>';}/*由OAuth2.0獲取到的code轉化成用戶的openID *author:caodi *date:2015-09-24 */public function code_to_openID($code) { if (empty($code) == true) {DLOG('獲取的code為空','run','caodi');exit; } $appid = $this->app_id; $secret = $this->secret; $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); DLOG('由OAuth2.0獲取到的code轉化成用戶的openID的結果='.$result,'run','caodi'); curl_close($ch); $user_info = json_decode($result,true); $open_id = $user_info[’openid’]; return $open_id;}

}?>

問題解答

回答1:

if ($_GET[’echostr’] != NULL ) {

echo $_GET[’echostr’]; exit;}對接的時候打印一下post和get。。不會沒有的

標簽: 微信
相關文章:
主站蜘蛛池模板: 偷窥自拍清纯唯美 | 欧美综合视频在线 | 激情婷婷丁香 | 亚洲一区二区三区高清视频 | 亚洲欧美日韩中文综合v日本 | 九九在线精品视频 | 国产三级日本三级美三级 | 99青青草| 综合久久久久6亚洲综合 | 日批网站在线观看 | jiucao在线观看精品 | 日本与大黑人xxxx | 男女叼嘿视频大全免费看 | 国产精品亚洲一区二区三区在线播放 | 三级国产精品一区二区 | 91中文字幕在线视频 | 自偷自拍三级全三级视频 | 色综合久久中文 | 美日韩一区二区 | 日本a毛片在线播放 | 精品视频一区二区三区四区五区 | 中日韩欧美中文字幕毛片 | 性福宝向日葵视频 | 国产精品久久久久久久久免费hd | 韩国一级特黄清高免费大片 | 新久草在线 | 免费黄a | 那一个欧美一级毛片 | 欧美日韩一区在线观看 | 免费超级淫片日本高清视频 | 大陆一级黄色片 | 午夜国产福利视频一区 | 手机在线看片日韩 | 欧美色欧美亚洲另类二区 | 毛片免费网站 | 国产精品亚洲欧美一区麻豆 | 久操青青 | 三级黄色免费片 | 国内在线观看精品免费视频 | 一区二区三区福利视频 | 久久亚洲私人国产精品 |