国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

微信公眾號開發總結

2019-11-15 01:34:53
字體:
來源:轉載
供稿:網友
微信公眾號開發總結

最近公司用到了微信公眾平臺,所以研究了一下微信公眾號的開發技術,總體來說比較簡單,結合現有的平臺核技術,實現起來非常方便。

首先先來了解一下微信公眾平臺。

“微信,是一個生活方式”,這是微信的自我評價,是不是覺得如果那天不在朋友圈里分享一下自己的最新狀態,并且收到幾個贊和評價的話,會覺得空虛寂寞呢?它實實在在的改變了我們的生活方式。

“微信,也是一個生意方式”,在微信成為我們日常必備之app的同時,它同樣具備巨大的的商業或許不應該稱為潛力,因為有很多人已經獲利,名人們在微信上開設公眾賬戶來吸金,商家來做推廣,服務行業借此拓展渠道,甚至微信已經支持支付了, 還有越來越的自媒體在微信平臺涌現出來。這篇文章就是介紹如何快速的成為公眾平臺開發者,由于個人只能申請訂閱號,因此本文是以訂閱號為例。關于訂閱號和服務號的區別,請參見微信公眾平臺服務號、訂閱號的相關說明

從微信用戶角度簡單來說:

訂閱號主要用于信息輻射,典型的如各家新聞媒體。服務號主要由于自助服務,典型的如招商銀行。

申請公眾平臺賬戶
  • 微信公眾平臺填寫注冊信息
  • 按照提示激活郵箱

  • 上傳個人照片,需要有清晰的身份證照片

  • 選擇公眾賬戶的類型,對于個人賬戶只能選擇訂閱號

  • 最后你會看到自己賬戶的所有信息,請上傳賬號的頭像,否則無法完成開發者的申請

  • 等待審核通過,這個過程大約需要2~3天,當你收到如下通知,那么恭喜你,你已經成功的申請到了微信公眾賬戶了

關于微信公眾帳號注冊的步驟就不再多說了,可以找到大量的圖文教程。

帳號注冊成功之后,需要驗證自己的服務器,如果你沒有自己的服務器,那可以用新浪SAE或者百度BAE,本文采用的是新浪SAE平臺來搭建服務器。

注冊過程略,使用新浪SAE創建應用,可以選擇應用開發框架,選項中有比較熱門的開發框架,選擇微信公眾平臺phpSDK,點擊后跳轉到介紹頁面,點擊安裝框架,系統會生成一個搭建好的微信公眾平臺應用,為了方便開發,我們可以使用svn來管理此應用代碼,關于svn搭建可參見sae代碼部署手冊。

使用新浪SAE是比較方便的,如果我們有自己的服務器,可以把代碼clone到自己的服務器上,下面來看一下代碼

首先定義一個Wechat的基類

  1 <?php  2 /**  3  * 微信公眾平臺 PHP SDK  4  *  5  * @author hanc <congcongsky2010@Gmail.com>  6  */  7   8   /**  9    * 微信公眾平臺處理類 10    */ 11   class Wechat { 12  13     /** 14      * 調試模式,將錯誤通過文本消息回復顯示 15      * 16      * @var boolean 17      */ 18     PRivate $debug; 19  20     /** 21      * 以數組的形式保存微信服務器每次發來的請求 22      * 23      * @var array 24      */ 25     private $request; 26  27     /** 28      * 初始化,判斷此次請求是否為驗證請求,并以數組形式保存 29      * 30      * @param string $token 驗證信息 31      * @param boolean $debug 調試模式,默認為關閉 32      */ 33     public function __construct($token, $debug = FALSE) { 34       if ($this->isValid() && $this->validateSignature($token)) { 35         exit($_GET['echostr']); 36       } 37  38       $this->debug = $debug; 39       set_error_handler(array(&$this, 'errorHandler')); 40       // 設置錯誤處理函數,將錯誤通過文本消息回復顯示 41  42       $xml = (array) simplexml_load_string($GLOBALS['HTTP_RAW_POST_DATA'], 'SimpleXMLElement', LIBXML_NOCDATA); 43  44       $this->request = array_change_key_case($xml, CASE_LOWER); 45       // 將數組鍵名轉換為小寫,提高健壯性,減少因大小寫不同而出現的問題 46     } 47  48     /** 49      * 判斷此次請求是否為驗證請求 50      * 51      * @return boolean 52      */ 53     private function isValid() { 54       return isset($_GET['echostr']); 55     } 56  57     /** 58      * 判斷驗證請求的簽名信息是否正確 59      * 60      * @param  string $token 驗證信息 61      * @return boolean 62      */ 63     private function validateSignature($token) { 64       $signature = $_GET['signature']; 65       $timestamp = $_GET['timestamp']; 66       $nonce = $_GET['nonce']; 67  68       $signatureArray = array($token, $timestamp, $nonce); 69       sort($signatureArray); 70  71       return sha1(implode($signatureArray)) == $signature; 72     } 73  74     /** 75      * 獲取本次請求中的參數,不區分大小 76      * 77      * @param  string $param 參數名,默認為無參 78      * @return mixed 79      */ 80     protected function getRequest($param = FALSE) { 81       if ($param === FALSE) { 82         return $this->request; 83       } 84  85       $param = strtolower($param); 86  87       if (isset($this->request[$param])) { 88         return $this->request[$param]; 89       } 90  91       return NULL; 92     } 93  94     /** 95      * 用戶關注時觸發,用于子類重寫 96      * 97      * @return void 98      */ 99     protected function onSubscribe() {}100 101     /**102      * 用戶取消關注時觸發,用于子類重寫103      *104      * @return void105      */106     protected function onUnsubscribe() {}107     108     /**109      * 用戶自動上報地理位置觸發,用于子類重寫110      *111      * @return void112      */113     protected function onAutoloaction() {}114       115     /**116      * 用戶點擊菜單時觸發,用于子類重寫117      *118      * @return void119      */120     protected function onClick() {}121     122     /**123      * 用戶點擊跳轉鏈接時觸發,用于子類重寫124      *125      * @return void126      */127     protected function onView() {}128 129     /**130      * 收到文本消息時觸發,用于子類重寫131      *132      * @return void133      */134     protected function onText() {}135 136     /**137      * 收到圖片消息時觸發,用于子類重寫138      *139      * @return void140      */141     protected function onImage() {}142 143     /**144      * 收到地理位置消息時觸發,用于子類重寫145      *146      * @return void147      */148     protected function onLocation() {}149 150     /**151      * 收到鏈接消息時觸發,用于子類重寫152      *153      * @return void154      */155     protected function onLink() {}156     /**157      * 收到語音消息時觸發,用于子類重寫158      *159      * @return void160      */161     protected function onVoice() {}162 163     /**164      * 收到未知類型消息時觸發,用于子類重寫165      *166      * @return void167      */168     protected function onUnknown() {}169 170     /**171      * 回復文本消息172      *173      * @param  string  $content  消息內容174      * @param  integer $funcFlag 默認為0,設為1時星標剛才收到的消息175      * @return void176      */177     protected function responseText($content, $funcFlag = 0) {178       exit(new TextResponse($this->getRequest('fromusername'), $this->getRequest('tousername'), $content, $funcFlag));179     }180 181     /**182      * 回復音樂消息183      *184      * @param  string  $title       音樂標題185      * @param  string  $description 音樂描述186      * @param  string  $musicUrl    音樂鏈接187      * @param  string  $hqMusicUrl  高質量音樂鏈接,Wi-Fi 環境下優先使用188      * @param  integer $funcFlag    默認為0,設為1時星標剛才收到的消息189      * @return void190      */191     protected function responseMusic($title, $description, $musicUrl, $hqMusicUrl, $funcFlag = 0) {192       exit(new MusicResponse($this->getRequest('fromusername'), $this->getRequest('tousername'), $title, $description, $musicUrl, $hqMusicUrl, $funcFlag));193     }194 195     /**196      * 回復圖文消息197      * @param  array   $items    由單條圖文消息類型 NewsResponseItem() 組成的數組198      * @param  integer $funcFlag 默認為0,設為1時星標剛才收到的消息199      * @return void200      */201     protected function responseNews($items, $funcFlag = 0) {202       exit(new NewsResponse($this->getRequest('fromusername'), $this->getRequest('tousername'), $items, $funcFlag));203     }204     /**205      * 回復語音識別消息206      * @param  array   $recognition  系統接收到語音后識別的字符串207      * @param  integer $funcFlag     默認為0,設為1時星標剛才收到的消息208      * @return void209      */210     protected function responseVoice($recognition, $funcFlag = 0) {211       exit(new TextResponse($this->getRequest('fromusername'), $this->getRequest('tousername'), $recognition, $funcFlag));212     }213 214     /**215      * 分析消息類型,并分發給對應的函數216      *217      * @return void218      */219     public function run() {220       switch ($this->getRequest('msgtype')) {221 222         case 'event':223           switch ($this->getRequest('event')) {224 225             case 'subscribe':226               $this->onSubscribe();227               break;228 229             case 'unsubscribe':230               $this->onUnsubscribe();231               break;232               233             case 'LOCATION':234               $this->onAutoloaction();235               break;236               237             case 'CLICK':238               $this->onClick();239               break;240               241             case 'VIEW':242               $this->onView();243               b
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泸西县| 翁源县| 汉沽区| 理塘县| 个旧市| 陕西省| 兴和县| 信阳市| 潜山县| 西昌市| 海安县| 赤壁市| 大新县| 瑞丽市| 上栗县| 兴义市| 囊谦县| 公主岭市| 蕲春县| 寻乌县| 富阳市| 临城县| 台北市| 汉阴县| 嘉祥县| 洛浦县| 西丰县| 安陆市| 巴彦淖尔市| 河池市| 肥乡县| 桦南县| 乌苏市| 明水县| 温宿县| 凤凰县| 祁连县| 闽清县| 青神县| 平原县| 云龙县|