91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 開發社區微信服務號實戰圖解

發布時間:2020-06-03 09:04:46 來源:網絡 閱讀:442 作者:powertoolsteam 欄目:web開發

本博文就月初剛上線的微信服務號,圖文進行總結分享給大家。

去年年底,我所在的團隊討論要開發微信號,話題由此拉開:

原來有一個3年前注冊的微信號,但是后臺操作無法從“訂閱號”變更為“服務號”,隨即找騰訊的客服溝通,客服還算是熱情,mm耐心的告之系統已經更新,對于無法升級的微信號,只能重新注冊----“*#*(*¥)¥K30#$e&#)”,一陣抓狂后,只能重新注冊了,下面就開始從注冊到內部需求討論,到開發的圖文總結。

Step1:微信注冊

在微信公眾號官網:https://mp.weixin.qq.com,點擊注冊

PHP 開發社區微信服務號實戰圖解

如上圖所示,微信號由郵箱注冊,每個郵箱僅能申請一種帳號:服務號、訂閱號或企業號。

      • 基本信息

      • 郵箱激活

      • 選擇類型

      • 信息登記

      • 公眾號信息

這里按照說明輸入公司信息即可,本次我們選擇的是認證服務號的選項:

PHP 開發社區微信服務號實戰圖解

為了認證服務號,需要支付300元/年,這個步驟稍微麻煩一些:財務打款、等待7個工作日、郵遞發票等。

需要注意的是,微信的認證不是騰訊官方,是其委托方的第三方,這個剛開始的時候還比較差異。

PHP 開發社區微信服務號實戰圖解

 

在完成后的認證后,認證信息如下(略過中間掃描公司的營業執照、掃描蓋公章的認證協議等細節):

PHP 開發社區微信服務號實戰圖解

認證后的微信(帶金色對鉤的是本次開發的微信):

           PHP 開發社區微信服務號實戰圖解PHP 開發社區微信服務號實戰圖解

 

Step2:微信文檔&API學習

微信開發和學習使用ComponentOne控件一樣,需要做第一件事件是看微信官方的文檔、API、demo樣例代碼,這樣能極大減少走彎路的風險。

備注:原計劃看幾本熱銷的微信開發書籍,后來因為時間原因放棄了。

PHP 開發社區微信服務號實戰圖解

登陸微信后臺,點擊左側的“開發者中心”,右側出現的“開發者文檔”、“在線接口調試工具”即是微信官方提供的文檔和API利器,在開發過程中,會反復、多次使用,這2個是非常重要的資料。

在公眾號“開發者中心”中,把AppID和AppSecret記下來,后面會多次用到。

PHP 開發社區微信服務號實戰圖解

微信的官方文檔,首先從上往下通讀一遍:

PHP 開發社區微信服務號實戰圖解

在文檔的開始,微信官方就提供了PHP示例代碼,下載地址。 且其明確的告之,微信公眾號接口只支持80接口.

官方文檔寫的非常細,如獲取access token是基于HTTP請求,用的是GET方式,其他的文檔請直接參閱文檔

access_token是公眾號的全局唯一票據,公眾號調用各接口時都需使用access_token。開發者需要進行妥善保存。access_token的存儲至少要保留512個字符空間。access_token的有效期目前為2個小時,需定時刷新,重復獲取將導致上次獲取的access_token失效。

http請求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

PHP 開發社區微信服務號實戰圖解

 
備注:access_token的有效時間是7200s,既需要自行做一個緩存,2小時刷新一次access_token; 我在這里用的是文件的緩存方式,添加了時間戳。
 

Step3:開發環境搭建

這節,我們著手搭建環境。

首先選擇http://git.oschina.net 搭建源碼托管環境,OSC提供了免費的私有項目,配合使用TortoiseGit-1.8.11.0-64bit,使得搭建源碼托管環境非常簡單。另外,其在國內訪問Git速度超快(贊一個!)

接著安裝軟件,配置電腦開發環境:

    • Windows 8.1 64位 中文版

    • JetBrains PhpStorm 8.0.2

    • SQL Server 2008

    • PHP 5

為了方便測試,和公司網管溝通,把微信的***.gcpowertools.com.cn/ 80端口映射到我的局域網電腦。事后證明,這種本地調試方法非常高效,極大了提高了開發、調試效率。最后,為了方便調試微信數據,需要寫log進行日志呈現,這里我使用的是讀寫文件的方式。

function writeLogBegin($msg = "begin log..............")
{
    $logFile = date('Y-m-d') . '.txt';
    $msg = date('Y-m-d H:i:s') . ' >>> ' . $msg . "\r\n";
    file_put_contents("c:\\log.txt", $msg);
}

 

Step4:微信開發

首先,結合業務特點,規劃微信底部的自定義菜單。

PHP 開發社區微信服務號實戰圖解

小技巧:自定義菜單不用寫代碼,用微信官方自帶的調試頁面即可完成。

 

規劃好自定義菜單后,POST JSON到微信服務器,可直接使用微信公眾平臺接口調試工具。

PHP 開發社區微信服務號實戰圖解

保存生成的access_token, 類似如下的文本:

vU2rq8nzdXZWmcS3jO1OAZzRL5dnm3OIlsPF8ZCKHkTGfrG8f87QpwYa4mBpkTvnuy0pQJsfyq_L5xLIqPSoIBIqdsVAaKOuEgBrPpQ4

 

接著選擇“自定義菜單”,輸入剛才保存的access_token,輸入如下的JSON字符串:

{
      "button":[    
      {    
           "name":"學習中心",    
           "sub_button":[    
            {    
               "type":"click",    
               "name":"聯系葡萄城",    
               "key":"101"    
            }]

       },    
       {    
           "name":"我的服務",    
           "sub_button":[    
            {    
                "type": "view",    
                "name": "最新動態",    
                "url": "https://open.weixin.qq.com/connect/oauth3/authorize?appid=wx9665cf3fcdaee2f1&redirect_uri=http://www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"    
            },    
            {
                "type": "view",    
                "name":"最新版本",    
                "url": "https://open.weixin.qq.com/connect/oauth3/authorize?appid=wx9665cf3fcdaee2f1&redirect_uri=http://www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"    
            },    
            {    
                "type":"click",    
                "name":"金牌服務查詢",    
                "key":"102"    
            },    
            {    
                "type":"click",    
                "name":"金牌服務條款",    
                "key":"103"    
            }

            ]    
       },    
       {    
           "name":"GCDN社區",    
           "sub_button":[    
           {    
               "type":"click",    
               "name":"每日簽到",    
               "key":"104"    
            },    
            {    
               "type":"click",    
               "name":"信息查詢",    
               "key":"105"    
            },    
            {    
               "type":"click",    
               "name":"我的帖子",    
               "key":"106"    
            },    
            {    
               "type":"click",    
               "name":"熱門問答",    
               "key":"107"    
            },    
            {

                "type":"view",    
                "name":"禮品兌換",    
                "url":"https://open.weixin.qq.com/connect/oauth3/authorize?appid=wx9665cf3fcdaee2f1&redirect_uri=http://www.gcpowertools.com.cn&response_type=code&scope=snsapi_base&state=118#wechat_redirect"    
            }]    
       }]    
}

PHP 開發社區微信服務號實戰圖解

 

備注:創建自定義菜單后,由于微信客戶端緩存,需要24小時微信客戶端才會展現出來。建議測試時可以嘗試取消關注公眾賬號后再次關注,則可以看到創建后的效果。

接著,我們進行核心的功能開發。

微信服務號的核心圍繞GCDN社區,故“GCDN社區”子菜單有5個二級菜單,其中每日簽到、信息查詢、我的帖子、禮品兌換功能需要首先綁定自己的GCDN賬號GCDN賬號。

PHP 開發社區微信服務號實戰圖解

依據上面的邏輯,綁定GCDN賬號是前提環節,故需要開發綁定功能。 綁定功能,做了一個頁面,通過a標簽跳轉,用戶在輸入用戶名、密碼后進行GCDN鑒權驗證,驗證通過存儲在表:包含GCDN ID、微信的OpenID,既完成賬號綁定。

PHP 開發社區微信服務號實戰圖解

后面的多個功能,通過這個表,可從微信的OpenID獲得GCDN ID,繼而可以使用GCDN論壇中的個人信息。

 

每日簽到功能

打開論壇頁面,在底部可看到目前GCDN使用的引擎較早,是Discuz!NT 3.6.711版本,故X3.1版本中時尚的簽到功能是沒有的。針對這個遺憾,本次微信開發做了彌補:用戶可通過微信的簽到完成這個功能。

PHP 開發社區微信服務號實戰圖解

 

GCDN回帖微信通知

這是另外一個特色功能:無需操作,只需要綁定GCDN賬號,當你在GCDN的發帖有人回復時,會自動收到微信通知。

這個功能的開發,主要是為了還GCDNer的一個期待:在《2013年葡萄城控件用戶滿意度調查》,論壇用戶對此類功能呼聲很高,“謝謝你們的努力和盡職盡責,我希望GCDN回帖及時些,最好有及時的短信通知功能,省的我時不時的刷新GCDN頁面,催促你們!”--某GCDN用戶。

 

實現思路如下圖所示:

PHP 開發社區微信服務號實戰圖解

 

微信通知用戶,剛開始想的是文本通知,結果發現微信公眾號的政策:如果用戶未在24小時內主動和微信互動,則無法用文本通知用戶。想到另外一個變通的辦法,各大銀行的余額動態通知功能。接著仔細找微信提供的功能,原來這種功能是“微信模板消息”。

PHP 開發社區微信服務號實戰圖解

 

這段文檔關于微信的模板消息寫的很詳細:

為了保證用戶不受到騷擾,在開發者出現需要主動提醒、通知用戶時,才允許開發者在公眾平臺網站中模板消息庫中選擇模板,選擇后獲得模板ID,再根據模板ID向用戶主動推送提醒、通知消息。

約花了半天時間,開發出的功能效果看起來還不錯(用戶是否在24小時內主動聯系,均可發送模板消息),截圖如下:

PHP 開發社區微信服務號實戰圖解

如想配置這個功能,通過回復文字指令。

    • 回復"取消提醒": 自動關閉微信通知提醒

    • 回復"開通提醒":自動開通微信通知提醒(需要你綁定GCDN賬號)

 

上面的開發過程,用到的PHP的 curl 實現HTTP GET、POST請求的源碼:

/**
 * @param $url
 * @param null $data
 * @return mixed
 */
function https_request($url, $data = null)
{
    // 模擬提交數據函數
    $curl = curl_init(); // 啟動一個CURL會話
    curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 從證書中檢查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬用戶使用的瀏覽器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
    if (!empty($data)) {
        curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的數據包
    }
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
    curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回

   

    $tmpInfo = curl_exec($curl); // 執行操作
    if (curl_errno($curl)) {
        echo 'Errno' . curl_error($curl);//捕抓異常
    }
    curl_close($curl); // 關閉CURL會話
    return $tmpInfo; // 返回數據
}

 

雷區:如果你所在電腦有代理,務必添加如下代碼:

   //使用網絡代理begin
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_PROXY, '192.168.0.1');  //替換代理地址
    curl_setopt($curl, CURLOPT_PROXYPORT, '880');      //替換代理端口
    curl_setopt($curl, CURLOPT_PROXYTYPE, 'HTTP');
    curl_setopt($curl, CURLOPT_PROXYUSERPWD, 'grapecity/r:r'); //替換代理用戶名
    //使用網絡代理end
 

Step5:開發總結

  • 近2個月的開發時間,投入了約1.5人,粗略估算有3個人月開發投入。

  • 少數的幾次非控件業務的研發,主要為了方便GCDN社區用戶的使用,橋接微信、GCDN。

  • 選擇使用PHP腳本語言不錯,微信官方用PHP作為默認微信開發腳本,另外PHP開發微信的博客非常多。

  • 完整項目經驗很重要:“坑才是大愛!”

坑的定義:有時候沒有問題,有時候有問題。100%有問題的,不叫坑,叫bug。

  • Git利器: 協作開發,牛!

  • include_onece 路徑錯誤這個坑,PHPStorm提供了足夠的智能感知,要重視。

  • include_onece 路徑用單引號,不要用雙引號

  • 團隊協力:人心齊、泰山移。微信功能的迭代,是一點一點溝通出來的。

 

小伙伴們,有微信的不妨掃一掃,看看大家還有啥需求,我們接著開發、寫博客吧:

PHP 開發社區微信服務號實戰圖解

關注微信綁定GCDN賬號,有GCDN勛章喲!

PHP 開發社區微信服務號實戰圖解


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙自县| 阿坝| 易门县| 兰西县| 泰顺县| 万载县| 长垣县| 北宁市| 台中市| 东阿县| 房产| 湖南省| 大埔区| 中山市| 定边县| 大城县| 富阳市| 连平县| 石首市| 郸城县| 清新县| 黄石市| 台前县| 安徽省| 额尔古纳市| 西平县| 大宁县| 栾城县| 连南| 清远市| 启东市| 林西县| 宣汉县| 汝阳县| 湾仔区| 莒南县| 南投市| 乐平市| 类乌齐县| 江西省| 兴仁县|