這篇文章將為大家詳細講解有關微信公眾號完整開發(fā)的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、武山網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5高端網(wǎng)站建設、商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為武山等各大城市提供網(wǎng)站開發(fā)制作服務。
這篇文章介紹的內(nèi)容是關于微信公眾號開發(fā)完整教程一,有著一定的參考價值,現(xiàn)在分享給大家,有需要的朋友可以參考一下
因為工作的需要,這一兩年對微信公眾號和小程序,項目制作的比較多。所以我才打算寫一篇全面的制作教程,當然了,最好的教程是微信工作平臺的文檔。我這里只是講述一下我的工作中的制作流程。所有相關文章的源碼,我托管在我自己的github上面,歡迎關注:地址點擊打開鏈接。接下來開始我們的教程。
微信:即時聊天的軟件,屬于一對一的關系
微信公眾平臺:屬于一對多的關系。
訂閱號:針對個人或媒體每天可以群發(fā)1條信息,默認不具有自定義菜單。服務器號:針對企業(yè)或銀行每月可以群發(fā)4條信息,默認具有自定義菜單。運營主體是組織(比如企業(yè)、媒體、公益組織)的,可以申請服務號。運營主體是組織和個人的可以申請訂閱號,但是個人不能申請服務號。
1、編輯模式:直接使用微信公眾平臺所提供的后臺操作進行用戶交互。編輯模式可以使用在如下的場景:不具備開發(fā)能力的運營者,主要是進行品牌宣傳、新聞媒體、自助客服的公眾賬號,運營初期,不需要特別多的功能,開發(fā)模式系統(tǒng)升級,故障等特殊情況
2、開發(fā)者模式:直接使用接口代碼實現(xiàn)用戶的交流
注冊公眾平臺,擁有線上服務器
原理:
選擇對象選擇素材進行群發(fā):
啟用自定義菜單,并開啟:
點擊查看,進入設置界面:
上述講述的主要是編輯模式的使用,我想很多人應該都會使用,其實和我們平常在論壇編輯文章和帖子差不多。
原理:
注意:在開啟開發(fā)者模式之后編輯模式中部分功能不能正常使用。即開發(fā)者模式跟編輯模式存在沖突。進入設置界面:
修改配置:
設置結(jié)果如下圖:填寫上你的服務器文件地址,token,點擊提交,驗證即可。如果提交并驗證通過,就進入到開發(fā)者模式
public function valid(){ //獲取隨機字符串 $echoStr = input("echostr"); if($echoStr){ // 驗證接口的有效性,由于接口有效性的驗證必定會傳遞echostr 參數(shù) if($this ->checkSignature()){ echo $echoStr; exit; } }else{ $this->responseMsg(); } } protected function checkSignature() { // 微信加密簽名 $signature = input("signature"); $timestamp = input("timestamp");//時間戳 $nonce =input("nonce");//隨機數(shù) $token = "weixin"; //token值,必須和你設置的一樣 $tmpArr =array($token,$timestamp,$nonce); sort($tmpArr,SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr =sha1($tmpStr); if($tmpStr == $signature){ return true; }else{ return false; } }
關于上述代碼中的變量來源,微信都有詳細的說明,我搭建的公眾號使用的是PHP7.0版本,TP5.0框架。在這里說明一下。
上述代碼只會執(zhí)行一次,開啟開發(fā)者模式之后,就不會在執(zhí)行,只會執(zhí)行上述代碼中的
responseMsg
方法。
我們先上傳一段測試代碼試試,回復文本消息,是否有回復,代碼如下:
public function responseMsg() { //get post data, May be due to the different environments $postStr = file_get_contents('php://input'); //extract post data if (!empty($postStr)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $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(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } }else { echo ""; exit; } }
結(jié)果如下:
,由于微信的網(wǎng)頁授權的限制,所以我們可以申請測試賬號,我這里使用的就是測試賬號。上述的開啟開發(fā)者模式是一樣的。只需要去申請一個測試賬號就好。申請的地方:
如果出現(xiàn)上述的代碼,說明我們已經(jīng)測試成功。接下來,我們開始獲取access_token的值,這個參數(shù)對于我們來說很重要。因為
access_token是公眾號的全局唯一接口調(diào)用憑據(jù),公眾號調(diào)用各接口時都需使用access_token。開發(fā)者需要進行妥善保存。access_token的存儲至少要保留512個字符空間。access_token的有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的access_token失效。access_token是身份認證 其他接口基本上都需要使用該值進行驗證。
結(jié)果如下:
結(jié)果如下:
我們開始對上述的代碼進行封裝,因為access_token,每天只能調(diào)用2000次,所以我們要緩存起來,這樣才能達到復用的效果,
// 獲取請求的地址的方法
i
f(!function_exists("http_curl")){ function http_curl($url,$data =array(),$method ="get",$returnType ="json") { //1.開啟會話 $ch = curl_init(); //2.設置參數(shù) curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); if($method!="get"){ curl_setopt($ch,CURLOPT_POST,TRUE); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } curl_setopt($ch,CURLOPT_URL,$url); //執(zhí)行會話 $json = curl_exec($ch); curl_close($ch); if($returnType == "json"){ return json_decode($json,true); } return $json; } } if(!function_exists('get_access_token')){ function get_access_token() { $appid = "wx1ba8f59d9e2c0be0"; //微信的appid $secret ="9e65155599fb9ec047455e197ff6e121"; //微信的開發(fā)者密鑰 // 讀取緩存中的內(nèi)容 include_once "MyMemcache.php"; //引入緩存方法文件 $obj = new \MyMemcache("47.104.71.253"); $value = $obj ->get($appid); if(!$value){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret; $result = http_curl($url); $value = $result['access_token']; $obj->set($appid,$value,7000); } return $value; } }
上述代碼就是我對這兩個方法的封裝,其中我們用到了緩存技術:緩存的方法如下:
// memcache操作類
class MyMemcache{ public $conn; public $isMemcache =true; public function __construct($host="127.0.0.1",$port='11211') { // 建立連接 if(class_exists('MyMemcache')){ $obj =new \Memcache(); }else{ $this ->isMemcache =false; $obj =new \Memcached(); } $obj ->addServer($host,$port); $this ->conn =$obj; } //獲取數(shù)據(jù) public function get($key) { return $this->conn->get($key); } //設置數(shù)據(jù) public function set($key,$value,$expire=0) { if($this->isMemcache){ $this->conn->set($key,$value,0,$expire); }else{ // Memcached擴展的操作方式 $this->conn->set($key,$value,$expire); } } }
結(jié)合上述的三個方法,我們就可以實現(xiàn)獲取access_token的值,并保存在緩存系統(tǒng),7000s去重新獲取一次。
上述的步驟完成,我們就算是對微信公眾號的開發(fā)的基本準備全部準備完畢,接下來就開始對著微信開發(fā)者文檔進行開發(fā)和數(shù)據(jù)的替換了。第一節(jié)先講述到這里.....
相關文章推薦:
1.微信公眾號開發(fā)完整教程二
2.微信公眾號開發(fā)完整教程三
3.微信公眾號開發(fā)完整教程四
相關視頻推薦:
1.php微信接口開發(fā)實戰(zhàn)項目視頻教程 聊天機器人+微信支付
2.開發(fā)微信小程序視頻教程
關于“微信公眾號完整開發(fā)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)站標題:微信公眾號完整開發(fā)的示例分析
網(wǎng)頁路徑:http://bm7419.com/article44/iehpee.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、用戶體驗、網(wǎng)站設計公司、云服務器、ChatGPT、關鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)