您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)微信公眾號(hào)完整開(kāi)發(fā)的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
這篇文章介紹的內(nèi)容是關(guān)于微信公眾號(hào)開(kāi)發(fā)完整教程一,有著一定的參考價(jià)值,現(xiàn)在分享給大家,有需要的朋友可以參考一下
因?yàn)楣ぷ鞯男枰@一兩年對(duì)微信公眾號(hào)和小程序,項(xiàng)目制作的比較多。所以我才打算寫一篇全面的制作教程,當(dāng)然了,最好的教程是微信工作平臺(tái)的文檔。我這里只是講述一下我的工作中的制作流程。所有相關(guān)文章的源碼,我托管在我自己的github上面,歡迎關(guān)注:地址點(diǎn)擊打開(kāi)鏈接。接下來(lái)開(kāi)始我們的教程。
微信:即時(shí)聊天的軟件,屬于一對(duì)一的關(guān)系
微信公眾平臺(tái):屬于一對(duì)多的關(guān)系。
訂閱號(hào):針對(duì)個(gè)人或媒體每天可以群發(fā)1條信息,默認(rèn)不具有自定義菜單。服務(wù)器號(hào):針對(duì)企業(yè)或銀行每月可以群發(fā)4條信息,默認(rèn)具有自定義菜單。運(yùn)營(yíng)主體是組織(比如企業(yè)、媒體、公益組織)的,可以申請(qǐng)服務(wù)號(hào)。運(yùn)營(yíng)主體是組織和個(gè)人的可以申請(qǐng)訂閱號(hào),但是個(gè)人不能申請(qǐng)服務(wù)號(hào)。
1、編輯模式:直接使用微信公眾平臺(tái)所提供的后臺(tái)操作進(jìn)行用戶交互。編輯模式可以使用在如下的場(chǎng)景:不具備開(kāi)發(fā)能力的運(yùn)營(yíng)者,主要是進(jìn)行品牌宣傳、新聞媒體、自助客服的公眾賬號(hào),運(yùn)營(yíng)初期,不需要特別多的功能,開(kāi)發(fā)模式系統(tǒng)升級(jí),故障等特殊情況
2、開(kāi)發(fā)者模式:直接使用接口代碼實(shí)現(xiàn)用戶的交流
注冊(cè)公眾平臺(tái),擁有線上服務(wù)器
原理:
選擇對(duì)象選擇素材進(jìn)行群發(fā):
啟用自定義菜單,并開(kāi)啟:
點(diǎn)擊查看,進(jìn)入設(shè)置界面:
上述講述的主要是編輯模式的使用,我想很多人應(yīng)該都會(huì)使用,其實(shí)和我們平常在論壇編輯文章和帖子差不多。
原理:
注意:在開(kāi)啟開(kāi)發(fā)者模式之后編輯模式中部分功能不能正常使用。即開(kāi)發(fā)者模式跟編輯模式存在沖突。進(jìn)入設(shè)置界面:
修改配置:
設(shè)置結(jié)果如下圖:填寫上你的服務(wù)器文件地址,token,點(diǎn)擊提交,驗(yàn)證即可。如果提交并驗(yàn)證通過(guò),就進(jìn)入到開(kāi)發(fā)者模式
public function valid(){ //獲取隨機(jī)字符串 $echoStr = input("echostr"); if($echoStr){ // 驗(yàn)證接口的有效性,由于接口有效性的驗(yàn)證必定會(huì)傳遞echostr 參數(shù) if($this ->checkSignature()){ echo $echoStr; exit; } }else{ $this->responseMsg(); } } protected function checkSignature() { // 微信加密簽名 $signature = input("signature"); $timestamp = input("timestamp");//時(shí)間戳 $nonce =input("nonce");//隨機(jī)數(shù) $token = "weixin"; //token值,必須和你設(shè)置的一樣 $tmpArr =array($token,$timestamp,$nonce); sort($tmpArr,SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr =sha1($tmpStr); if($tmpStr == $signature){ return true; }else{ return false; } }
關(guān)于上述代碼中的變量來(lái)源,微信都有詳細(xì)的說(shuō)明,我搭建的公眾號(hào)使用的是PHP7.0版本,TP5.0框架。在這里說(shuō)明一下。
上述代碼只會(huì)執(zhí)行一次,開(kāi)啟開(kāi)發(fā)者模式之后,就不會(huì)在執(zhí)行,只會(huì)執(zhí)行上述代碼中的
responseMsg
方法。
我們先上傳一段測(cè)試代碼試試,回復(fù)文本消息,是否有回復(fù),代碼如下:
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)頁(yè)授權(quán)的限制,所以我們可以申請(qǐng)測(cè)試賬號(hào),我這里使用的就是測(cè)試賬號(hào)。上述的開(kāi)啟開(kāi)發(fā)者模式是一樣的。只需要去申請(qǐng)一個(gè)測(cè)試賬號(hào)就好。申請(qǐng)的地方:
如果出現(xiàn)上述的代碼,說(shuō)明我們已經(jīng)測(cè)試成功。接下來(lái),我們開(kāi)始獲取access_token的值,這個(gè)參數(shù)對(duì)于我們來(lái)說(shuō)很重要。因?yàn)?/p>
access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),公眾號(hào)調(diào)用各接口時(shí)都需使用access_token。開(kāi)發(fā)者需要進(jìn)行妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。access_token是身份認(rèn)證 其他接口基本上都需要使用該值進(jìn)行驗(yàn)證。
結(jié)果如下:
結(jié)果如下:
我們開(kāi)始對(duì)上述的代碼進(jìn)行封裝,因?yàn)閍ccess_token,每天只能調(diào)用2000次,所以我們要緩存起來(lái),這樣才能達(dá)到復(fù)用的效果,
// 獲取請(qǐng)求的地址的方法
i
f(!function_exists("http_curl")){ function http_curl($url,$data =array(),$method ="get",$returnType ="json") { //1.開(kāi)啟會(huì)話 $ch = curl_init(); //2.設(shè)置參數(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í)行會(huì)話 $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"; //微信的開(kāi)發(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; } }
上述代碼就是我對(duì)這兩個(gè)方法的封裝,其中我們用到了緩存技術(shù):緩存的方法如下:
// 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è)置數(shù)據(jù) public function set($key,$value,$expire=0) { if($this->isMemcache){ $this->conn->set($key,$value,0,$expire); }else{ // Memcached擴(kuò)展的操作方式 $this->conn->set($key,$value,$expire); } } }
結(jié)合上述的三個(gè)方法,我們就可以實(shí)現(xiàn)獲取access_token的值,并保存在緩存系統(tǒng),7000s去重新獲取一次。
上述的步驟完成,我們就算是對(duì)微信公眾號(hào)的開(kāi)發(fā)的基本準(zhǔn)備全部準(zhǔn)備完畢,接下來(lái)就開(kāi)始對(duì)著微信開(kāi)發(fā)者文檔進(jìn)行開(kāi)發(fā)和數(shù)據(jù)的替換了。第一節(jié)先講述到這里.....
相關(guān)文章推薦:
1.微信公眾號(hào)開(kāi)發(fā)完整教程二
2.微信公眾號(hào)開(kāi)發(fā)完整教程三
3.微信公眾號(hào)開(kāi)發(fā)完整教程四
相關(guān)視頻推薦:
1.php微信接口開(kāi)發(fā)實(shí)戰(zhàn)項(xiàng)目視頻教程 聊天機(jī)器人+微信支付
2.開(kāi)發(fā)微信小程序視頻教程
關(guān)于“微信公眾號(hào)完整開(kāi)發(fā)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。