本篇文章的內容是PHP微信API的接入和關鍵字自動回复,現在分享給大家,有需要的朋友就可以參考一下本篇文章的內容了
https:// blog.csdn.net/self_realian/article/details/70849159
##公眾帳號的使用模式分類
#1,編輯模式:有微信公眾平台,提供給微信公眾帳號管理者的一個簡單的,可視化操作的介面,主要是方便微信公眾帳號管理者,能夠進行一些簡單的微信運營 #2,開發者模式:就是呼叫一些微信的公用接口,來完成一些自身業務應用程式中接入API接口步驟
1,填寫伺服器URL ,token(注意:只支援80埠 也就是http服務必須在80埠打開,才能接收傳送過來的訊息這裡的url就是指第三方伺服器的url,它的作用主要是接收微信推播的訊息這裡的token是開發者與微信公眾平台之間約定的口令,主要是用來驗證第三方伺服器真正的合法性2,驗證伺服器位址的有效性,加密/校驗流程如下:
(1)將token、timestamp、nonce三個參數進行字典序排序(這三個都是微信透過get方法傳送過來的三個參數,透過這三個參數可以來驗證請求是否來自於微信)(2)將三個參數字串拼接成一個字串進行sha1加密(3)開發者獲得加密後的字串可與signature對比,標識該請求來自微信3,關於access_token
(1)access_token與appid,appsecred的關係 當你在微信公眾平台註冊微信公眾帳號時,微信公眾平台為你產生了一個appid和appsecred,這兩個值就是你在微信公眾平台上的一個唯一標識 appid和appsecred(edd7d19a4d8c625ed1244d17f78a9165)就是用來產生access_token,access_token其實就是一個動態口令,它有時間性,以及一段時間內有效#accfess_#fess_#access_#fess_#bun.平台的一些介面的鑰匙特點:(1)唯一有效性(2)全域有效性 (至於access_token的詳解,可以進入微信,查看「開發者文件」)微信開放介面
1,取得access_token
2,取得微信伺服器位址說完這些之後,下邊就是程式碼部分。首先提醒大家,要加入自己的這些功能,首先要有一個自己的公網可以訪問的域名,沒有的可以在騰訊雲或阿里雲上申請一個(我用的框架是ThinkPHP3.2.2的)
copy
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $timestamp = $_GET['timestamp'];//timestamp其实就是一个时间戳 $nonce = $_GET['nonce'];//nonce是一个随机参数 $token = "weixin";//这个token填写你在微信公众平台上写的那个值 $signature = $_GET['signature'];//这个signature其实就是在微信公众平台已经加密好的字符串 $echostr = $_GET['echostr']; $array = array( $timestamp, $nonce, $token); sort($array); $tmpstr = implode('', $array); $tmpstr = sha1($tmpstr); if( $tmpstr == $signature && $echostr){ echo $echostr; exit; }else{ $this->reponseMsg(); } } public function reponseMsg(){ $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; $postObj = simplexml_load_string( $postArr ); if( strtolower( $postObj->MsgType) == 'event'){ //如果是关注事件(subscribe) if( strtolower($postObj->Event == 'subscribe') ){ //回复用户消息 $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $time = time(); $msgType = 'text'; $content = '欢迎关注 书旅and良玉 微信公众账号'.$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(($postObj->MsgType) == 'text' && trim($postObj->Content) == '夏目友人帐'){ $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $arr = array( array( 'title'=>'夏目友人帐', 'description'=>"此生无悔入夏目", 'picUrl'=>'http://img4.duitang.com/uploads/item/201508/16/20150816015528_X8dKY.jpeg', 'url'=>'http://www.shulvchen.cn', ), ); $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'); }else{ switch( trim($postObj->Content) ){ case 'bb': $content = '我喜欢你'; break; case '良玉': $content = '我喜欢你'; break; case '书旅': $content = '加油'; break; case 'dsdf': $content = '不愿错过他'; break; case '垒哥': $content = '垒哥已死,有事儿烧纸'; break; case '书旅and良玉': $content = 'Forever with you'; break; case '学弟': $content = '书旅是你学长'; break; default: $content = "<a href='http://www.baidu.com'>百度一下,你就知道(点击文字,进入百度)</a>"; } $template1 = "<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 = '我喜欢你'; $msgType = 'text'; echo sprintf($template1, $toUser, $fromUser,$time, $msgType, $content); } } }希望這篇部落格對跟我一樣喜歡微信開發的小菜鳥們有幫助
實例詳解Python+Slack API 如何實作聊天機器人
php呼叫介面api的方法#以上是PHP微信API的存取和關鍵字自動回复的詳細內容。更多資訊請關注PHP中文網其他相關文章!