日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信平台开发教程

發(fā)布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信平台开发教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html

關(guān)鍵字:微信公眾平臺開發(fā)
作者:方倍工作室

?

在這篇微信公眾平臺開發(fā)教程中,我們假定你已經(jīng)有了PHP語言程序、MySQL數(shù)據(jù)庫、計算機(jī)網(wǎng)絡(luò)通訊、及HTTP/XML/CSS/JS等基礎(chǔ)。

我們將使用微信公眾賬號方倍工作室作為講解的例子,二維碼見底部。

本系列教程將引導(dǎo)你完成如下任務(wù):

  • 創(chuàng)建新浪云計算平臺應(yīng)用
  • 啟用微信公眾平臺開發(fā)模式
  • 了解數(shù)據(jù)收發(fā)原理及消息格式
  • 開發(fā)實現(xiàn)微信天氣預(yù)報功能
  • ?

    第一章 申請服務(wù)器資源

    創(chuàng)建新浪云計算應(yīng)用

    申請賬號

    我們使用SAE新浪云計算平臺作為服務(wù)器資源,并且申請PHP環(huán)境+MySQL數(shù)據(jù)庫作為程序運行環(huán)境。
    申請地址為:

    http://www.sinacloud.com/

    直接點擊上述網(wǎng)址,可以看到右上角微博登錄的鏈接。

    點擊進(jìn)入之后,使用新浪微博賬號登錄?

    登錄之后,按照提示注冊個人信息即可。?

    ?

    創(chuàng)建新應(yīng)用?http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?

    回到首頁,在菜單頂部選擇?控制臺?,再選擇?云應(yīng)用SAE?

    進(jìn)入SAE應(yīng)用列表

    點擊下側(cè)的創(chuàng)建新應(yīng)用,這時會彈出提示, 禁止放置違法違規(guī)內(nèi)容,點擊繼續(xù)創(chuàng)建,彈出如下窗口。

    選擇一個未使用的appid,如果老是已經(jīng)被使用不知道該什么好,就填寫你的QQ號或者手機(jī)號吧。

    填寫二級域名AppID、應(yīng)用名稱、驗證碼,開發(fā)語言選擇PHP5.3,全部應(yīng)用和框架下面選擇第一個【PHP 空應(yīng)用】。然后點擊左下方的創(chuàng)建應(yīng)用

    ?

    應(yīng)用創(chuàng)建成功。并自動跳轉(zhuǎn)到應(yīng)用列表中,可以看到已經(jīng)有剛才創(chuàng)建的1354386063這個應(yīng)用。

    創(chuàng)建數(shù)據(jù)庫?

    點擊剛才創(chuàng)建的應(yīng)用名稱,進(jìn)入應(yīng)用主頁。

    在左側(cè)的數(shù)據(jù)庫服務(wù)中找到MySQL

    點擊進(jìn)入MySQL類型選擇,這里選擇獨享型MySQL

    在創(chuàng)建獨享型MySQL中,使用微型配置,然后點擊“確認(rèn)初始化

    底部將顯示任務(wù)進(jìn)度。

    等任務(wù)完成之后,再點擊銷毀MySQL按鈕,

    這樣創(chuàng)建并銷毀一次,可以多獲得200云豆。以后使用的時候,可以使用免費的共享型MySQL或者使用收費但更穩(wěn)定強(qiáng)大的獨享型MySQL。

    創(chuàng)建版本?http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?

    點擊剛才創(chuàng)建的應(yīng)用名稱,進(jìn)入應(yīng)用主頁。

    點擊左側(cè)的應(yīng)用管理下面的代碼管理

    ?

    在代碼管理中,選擇使用SVN托管的方式,不要使用git的方式。

    跳轉(zhuǎn)到代碼管理

    點擊右側(cè)的“創(chuàng)建版本”

    版本號默認(rèn)為1,點擊創(chuàng)建,有時會彈出安全登錄,需要輸入安全密碼,如果不知道或者忘記了,就點里面的找回密碼,重新設(shè)置一下。:

    驗證通過之后,如下所示

    到這里,就成功創(chuàng)建了一個域名URL為?http://1354386063.sinaapp.com/?的應(yīng)用了,記住你的這個URL,后面將會用到。

    ?原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?

    上傳代碼?http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?

    下述代碼是一個微信接口文件,看不懂沒有關(guān)系,你可以暫時不用弄明白它的意思。

    如果想弄明白,可以購買《微信公眾平臺開發(fā)最佳實踐》,在該書中第25頁~第27頁有詳細(xì)講解。

    <?php /*方倍工作室 http://www.cnblogs.com/txw1958/CopyRight 2013 www.doucube.com All Rights Reserved */define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) {$wechatObj->valid(); }else{$wechatObj->responseMsg(); }class wechatCallbackapiTest {public function valid(){$echoStr = $_GET["echostr"];if($this->checkSignature()){header('content-type:text');echo $echoStr;exit;}}private function checkSignature(){$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}public function responseMsg(){$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){$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($keyword == "?" || $keyword == "?"){$msgType = "text";$contentStr = date("Y-m-d H:i:s",time());$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}}else{echo "";exit;}} } ?>

    我們將使用上述代碼與微信公眾平臺對接。

    將上述代碼用專業(yè)的軟件存為utf-8格式的index.php文件后再使用WinRAR壓縮為index.zip,

    或者直接下載方倍工作室已經(jīng)壓縮好的index.zip文件。點此進(jìn)入下載

    回到SAE的代碼管理界面中。

    再選擇“上傳代碼包”,點擊上傳文件,選擇剛才的index.zip文件,點擊上傳,上傳成功后中間是一個綠色的橫條,如下所示

    如果沒有綠色的橫條,表示上傳失敗,需要重試。可以考慮在Chrome瀏覽器下重試一下。

    點擊編輯代碼按鈕,

    ?有時候需要輸入自己的安全密碼,如果不記得了就點擊“找回密碼”。

    安全驗證成功后繼續(xù)之前的操作。

    我們可以看到index.php已經(jīng)上傳成功,雙擊可以查看編輯里面的代碼

    新浪云應(yīng)用的創(chuàng)建就成功了。

    ?

    實名認(rèn)證

    新浪SAE要求用戶上傳身份證進(jìn)行實名認(rèn)證才可以正常使用,在左側(cè)菜單列表中可以找到“實名認(rèn)證”這一標(biāo)簽可進(jìn)行實名認(rèn)證操作。實名認(rèn)證過程是免費的。認(rèn)證以后每月免費有5G的流量。認(rèn)證審核需要1~3個工作日。

    來不及準(zhǔn)備身份證照片的話可以先繼續(xù)下面的內(nèi)容,改天再來進(jìn)行實名認(rèn)證。但在使用過程中會受點影響。

    如果不進(jìn)行實名認(rèn)證,SAE會在回復(fù)的內(nèi)容中會帶上干擾的html內(nèi)容信息,從而導(dǎo)致Token驗證失敗或者該公眾號暫時無法提供服務(wù),請稍后再試。

    實名認(rèn)證需要填的信息如下


    實名認(rèn)證成功后,將如下圖所示。

    充值(本步驟可選擇性進(jìn)行)

    新浪云SAE實行的是配額免費+超額付費的方式,相關(guān)標(biāo)準(zhǔn)請查看SAE價格體系介紹。初期對于大部分用戶來說免費配額已夠用,如果您將來使用量比較大建議預(yù)先至少充值100元獲得10000云豆,以免超額后應(yīng)用被禁用而影響業(yè)務(wù)。

    第二章 啟用開發(fā)模式

    微信公眾平臺開發(fā)模式

    高級功能

    微信公眾平臺地址:https://mp.weixin.qq.com?

    登錄微信公眾平臺后臺,在左側(cè)列表中最下方,找到“ 基本配置 ”,點擊進(jìn)入

    進(jìn)入服務(wù)器配置填寫框。

    點擊“修改配置”按鈕

    此處的URL為上篇中介紹的云應(yīng)用的域名,而Token在index.php中定義為weixin。EncodingAESKey則不用填,點擊“隨機(jī)生成”讓自動生成一個,消息加解密方式選擇“明文模式”,然后點擊“提交”按鈕。

    ?

    在彈出的提示框中,點擊“確定”

    配置修改后如圖所示,再點擊“啟用”按鈕

    詢問“是否確定開啟服務(wù)器配置”,點擊“確定”

    如果提示“token驗證失敗”,可以先重次幾次,微信服務(wù)器有時候不穩(wěn)定。并確保你的SAE已經(jīng)上傳身份證通過實名認(rèn)證!

    如果還是失敗,請先用微信調(diào)試器測試一下url和token是否正確,點此查看詳細(xì)測試方法。

    成功啟用后如圖。

    恭喜,你成功啟用開發(fā)模式。

    ?

    自動回復(fù)

    在上面的例子中,實現(xiàn)了一個發(fā)送“?”就能回復(fù)當(dāng)前時間的功能。
    效果如下:

    至此,你的微信公眾平臺賬號已經(jīng)實現(xiàn)自動回復(fù)了。?

    ?

    第三章 數(shù)據(jù)收發(fā)原理及消息數(shù)據(jù)格式

    ?

    ★?本章是理論部分,初學(xué)者會比較難以理解,不用太過追究。

    開發(fā)模式成為開發(fā)者時的消息校驗原理

    在開發(fā)者首次提交驗證申請時,微信服務(wù)器將發(fā)送GET請求到填寫的URL上,并且?guī)纤膫€參數(shù)(signature、timestamp、nonce、echostr),開發(fā)者通過對簽名(即signature)的效驗,來判斷此條消息的真實性。

    此后,每次開發(fā)者接收用戶消息的時候,微信也都會帶上前面三個參數(shù)(signature、timestamp、nonce)訪問開發(fā)者設(shè)置的URL,開發(fā)者依然通過對簽名的效驗判斷此條消息的真實性。效驗方式與首次提交驗證申請一致。

    參數(shù)描述
    signature微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。
    timestamp時間戳
    nonce隨機(jī)數(shù)
    echostr隨機(jī)字符串

    開發(fā)者通過檢驗signature對請求進(jìn)行校驗(下面有校驗方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。

    加密/校驗流程如下: 1. 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序 2. 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密 3. 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信

    啟用接口是由代碼中的checkSignature()函數(shù)來實現(xiàn)校驗的。如果對這一原理難以理解,可以暫時不用深究,繼續(xù)看下面

    ?

    成為開發(fā)者后消息收發(fā)時的原理

    上一章節(jié)中圖,當(dāng)用戶發(fā)送一個“?”時,系統(tǒng)回復(fù)了一個時間

    這一原理的消息流程圖如下所示。

    從上圖可以看出,用戶在發(fā)送一個?后,微信服務(wù)器將組裝一個消息發(fā)送給我們自己的服務(wù)器,自己的服務(wù)器然后回復(fù)一個時間,并且將該時間也按一定的規(guī)則組裝,回復(fù)給公眾賬號,公眾賬號再回復(fù)給用戶,在這個收發(fā)過程中,發(fā)送方和接收方進(jìn)行了調(diào)換(ToUserName和FromUserName值互換),收發(fā)都是以xml格式在后臺進(jìn)行傳輸?shù)?#xff0c;

    所以掌握各種消息類型的接收回復(fù)就是進(jìn)行微信公眾平臺開發(fā)的基礎(chǔ)

    下面對前面所述的各種消息類型講解其XML數(shù)據(jù)包的格式。

    ?

    各種收發(fā)消息的XML數(shù)據(jù)包分析

    接收消息

    1. 文本(包括表情)
    接收文本及表情

    文字后臺格式:

    <xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName><FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName><CreateTime>1359028446</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[測試文字]]></Content><MsgId>5836982729904121631</MsgId> </xml>

    表情后臺格式

    <xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName> <CreateTime>1359044526</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[/::)/::~/::B/::|/:8-)]]></Content> <MsgId>5837051792978241864</MsgId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號 FromUserName 消息發(fā)送方微信號 CreateTime 消息創(chuàng)建時間 MsgType 消息類型;文本消息為text Content 消息內(nèi)容 MsgId 消息ID號

    可以看出,文本和表情的消息類型均為文本

    2. 圖片
    接收圖片

    后臺格式:

    <xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName> <CreateTime>1359028479</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[http://mmbiz.qpic.cn/mmbiz/L4qjYtOibummHn90t1mnaibYiaR8ljyicF3MW7XX3BLp1qZgUb7CtZ0DxqYFI4uAQH1FWs3hUicpibjF0pOqLEQyDMlg/0]]></PicUrl> <MsgId>5836982871638042400</MsgId> <MediaId><![CDATA[PGKsO3LAgbVTsFYO7FGu51KUYa07D0C_Nozz2fn1z6VYtHOsF59PTFl0vagGxkVH]]></MediaId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號 FromUserName 消息發(fā)送方微信號 CreateTime 消息創(chuàng)建時間 MsgType 消息類型;圖片消息為image PicUrl 圖片鏈接地址,可以用HTTP GET獲取 MsgId 消息ID號

    3. 語音
    接收語音

    后臺格式:

    <xml><ToUserName><![CDATA[gh_d035bb259cf5]]></ToUserName><FromUserName><![CDATA[owEUGj4BW8yeWRvyEERiVGKwAF1Q]]></FromUserName><CreateTime>1364883809</CreateTime><MsgType><![CDATA[voice]]></MsgType><MediaId><![CDATA[JfmCezZ3Cwp0FwUvMADwwhvp-XScuvpictubpw0c6ALyA8tj3HLU4PoXzMpIY72P]]></MediaId><Format><![CDATA[amr]]></Format><MsgId>5862131322594912688</MsgId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號 FromUserName 消息發(fā)送方微信號 CreateTime 消息創(chuàng)建時間 MsgType 消息類型;語音消息為voice MediaId 媒體ID Format 語音格式,這里為amr MsgId 消息ID號 附:AMR接口簡介 全稱Adaptive Multi-Rate,主要用于移動設(shè)備的音頻,壓縮比比較大,但相對其他的壓縮格式質(zhì)量比較差,由于多用于人聲,通話,效果還是很不錯的。

    4. 視頻

    接收視頻

    后臺格式:

    xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName> <CreateTime>1359028186</CreateTime> <MsgType><![CDATA[video]]></MsgType> <MediaId><![CDATA[DBVFRIj29LB2hxuYpc0R6VLyxwgyCHZPbRj_IIs6YaGhutyXUKtFSDcSCPeoqUYr]]></MediaId> <ThumbMediaId><![CDATA[mxUJ5gcCeesJwx2T9qsk62YzIclCP_HnRdfTQcojlPeT2G9Q3d22UkSLyBFLZ01J]]></ThumbMediaId> <MsgId>5836981613212624665</MsgId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號 FromUserName 消息發(fā)送方微信號 CreateTime 消息創(chuàng)建時間 MsgType 消息類型;視頻消息為video MediaId 媒體ID ThumbMediaId 媒體縮略ID? MsgId 消息ID號

    5. 位置

    接收位置

    后臺格式:

    <xml> <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName> <CreateTime>1359036619</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>22.539968</Location_X> <Location_Y>113.954980</Location_Y> <Scale>16</Scale> <Label><![CDATA[中國廣東省深圳市南山區(qū)華僑城深南大道9789號 郵政編碼: 518057]]></Label> <MsgId>5837017832671832047</MsgId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號FromUserName 消息發(fā)送方微信號CreateTime 消息創(chuàng)建時間MsgType 消息類型,地理位置為locationLocation_X 地理位置緯度Location_Y 地理位置經(jīng)度Scale 地圖縮放大小Label 地理位置信息MsgId 消息ID號

    6. 鏈接

    接收鏈接

    后臺格式:

    <xml> <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName> <FromUserName><![CDATA[oIDrpjl2LYdfTAM-oxDgB4XZcnc8]]></FromUserName> <CreateTime>1359709372</CreateTime> <MsgType><![CDATA[link]]></MsgType> <Title><![CDATA[微信公眾平臺開發(fā)者的江湖]]></Title> <Description><![CDATA[陳坤的微信公眾號這段時間大火,大家..]]></Description> <Url><![CDATA[http://israel.duapp.com/web/photo.php]]></Url> <MsgId>5839907284805129867</MsgId> </xml>

    XML格式講解

    ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號FromUserName 消息發(fā)送方微信號CreateTime 消息創(chuàng)建時間MsgType 消息類型,鏈接為linkTitle 圖文消息標(biāo)題Description 圖文消息描述Url 點擊圖文消息跳轉(zhuǎn)鏈接MsgId 消息ID號

    ?

    回復(fù)消息

    只介紹三種格式的消息:文本、圖文、音樂。其中圖文消息包括單條圖文消息和多條圖文消息,展示方式有一點點不同。

    1. 文本消息格式
    回復(fù)文本

    后臺格式:

    <xml> <ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName> <FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName> <CreateTime>1359036631</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[【深圳】天氣實況 溫度:27℃ 濕度:59% 風(fēng)速:東北風(fēng)3級 11月03日 周日 27℃~23℃ 小雨 東北風(fēng)4-5級 11月04日 周一 26℃~21℃ 陣雨 微風(fēng) 11月05日 周二 27℃~22℃ 陰 微風(fēng)]]></Content> <FuncFlag>0</FuncFlag> </xml>

    XML格式講解

    FromUserName 消息發(fā)送方ToUserName 消息接收方CreateTime 消息創(chuàng)建時間MsgType 消息類型,文本消息必須填寫textContent 消息內(nèi)容,大小限制在2048字節(jié),字段為空為不合法請求FuncFlag 星標(biāo)字段

    ?
    2. 圖文消息格式
    2.1 單條圖文消息
    回復(fù)單條圖文


    后臺格式:

    <xml><ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName><FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName><CreateTime>1359011899</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[[蘋果產(chǎn)品信息查詢]]></Title><Description><![CDATA[序列號:USE IMEI NUMBER IMEI號:358031058974471 設(shè)備名稱:iPhone 5C 設(shè)備顏色: 設(shè)備容量: 激活狀態(tài):已激活 電話支持:未過期[2014-01-13] 硬件保修:未過期[2014-10-14] 生產(chǎn)工廠:中國]]></Description><PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/banner.jpg]]></PicUrl><Url><![CDATA[]]></Url></item></Articles><FuncFlag>0</FuncFlag> </xml>

    2.2 多圖文消息

    回復(fù)多圖文

    后臺數(shù)據(jù)格式

    <xml><ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName><FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName><CreateTime>1359011829</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>5</ArticleCount><Articles><item><Title><![CDATA[【深圳】天氣實況 溫度:3℃ 濕度:43﹪ 風(fēng)速:西南風(fēng)2級]]></Title><Description><![CDATA[]]></Description> <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/banner.jpg]]></PicUrl><Url><![CDATA[]]></Url></item><item><Title><![CDATA[06月24日 周四 2℃~-7℃ 晴 北風(fēng)3-4級轉(zhuǎn)東南風(fēng)小于3級]]></Title><Description><![CDATA[]]></Description><PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d00.gif]]></PicUrl><Url><![CDATA[]]></Url></item><item><Title><![CDATA[06月25日 周五 -1℃~-8℃ 晴 東南風(fēng)小于3級轉(zhuǎn)東北風(fēng)3-4級]]></Title><Description><![CDATA[]]></Description><PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d00.gif]]></PicUrl><Url><![CDATA[]]></Url></item><item><Title><![CDATA[06月26日 周六 -1℃~-7℃ 多云 東北風(fēng)3-4級轉(zhuǎn)東南風(fēng)小于3級]]></Title><Description><![CDATA[]]></Description> <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d01.gif]]></PicUrl><Url><![CDATA[]]></Url></item><item><Title><![CDATA[06月27日 周日 0℃~-6℃ 多云 東南風(fēng)小于3級轉(zhuǎn)東北風(fēng)3-4級]]></Title><Description><![CDATA[]]></Description> <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d01.gif]]></PicUrl><Url><![CDATA[]]></Url></item></Articles><FuncFlag>0</FuncFlag> </xml>

    XML格式講解

    FromUserName 消息發(fā)送方ToUserName 消息接收方CreateTime 消息創(chuàng)建時間MsgType 消息類型,圖文消息必須填寫newsContent 消息內(nèi)容,圖文消息可填空ArticleCount 圖文消息個數(shù),限制為10條以內(nèi)Articles 多條圖文消息信息,默認(rèn)第一個item為大圖Title 圖文消息標(biāo)題Description 圖文消息描述PicUrl 圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80Url 點擊圖文消息跳轉(zhuǎn)鏈接 FuncFlag 星標(biāo)字段

    ?3. 音樂消息

    回復(fù)音樂消息

    后臺格式:

    <xml><ToUserName><![CDATA[ollB4jqgdO_cRnVXk_wRnSywgtQ8]]></ToUserName><FromUserName><![CDATA[gh_b629c48b653e]]></FromUserName><CreateTime>1372310544</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[最炫民族風(fēng)]]></Title><Description><![CDATA[鳳凰傳奇]]></Description><MusicUrl><![CDATA[http://zj189.cn/zj/download/music/zxmzf.mp3]]></MusicUrl><HQMusicUrl><![CDATA[http://zj189.cn/zj/download/music/zxmzf.mp3]]></HQMusicUrl></Music><FuncFlag>0</FuncFlag> </xml>

    XML格式講解

    ToUserName 接收方帳號(收到的OpenID) FromUserName 開發(fā)者微信號 CreateTime 消息創(chuàng)建時間 MsgType 消息類型,此處為musicTitle 音樂標(biāo)題Description 音樂描述MusicUrl 音樂鏈接HQMusicUrl 高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂 FuncFlag 位0x0001被標(biāo)志時,星標(biāo)剛收到的消息。

    ?

    事件消息類型

    目前用戶在關(guān)注和取消關(guān)注,以及點擊菜單的時候會自動向公眾平臺發(fā)送事件推送消息:

    1. 關(guān)注事件

    <xml><ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName><FromUserName><![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]></FromUserName><CreateTime>1372307736</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[subscribe]]></Event><EventKey><![CDATA[]]></EventKey> </xml>

    2. 取消關(guān)注事件

    <xml><ToUserName><![CDATA[gh_b629c48b653e]]></ToUserName><FromUserName><![CDATA[ollB4jqgdO_cRnVXk_wRnSywgtQ8]]></FromUserName><CreateTime>1372309890</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[unsubscribe]]></Event><EventKey><![CDATA[]]></EventKey> </xml>

    3. 菜單點擊事件

    <xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName><FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName><CreateTime>1377886191</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[CLICK]]></Event><EventKey><![CDATA[天氣深圳]]></EventKey> </xml>

    XML格式講解

    ToUserName 接收方微信號 FromUserName 發(fā)送方微信號,若為普通用戶,則是一個OpenID CreateTime 消息創(chuàng)建時間 MsgType 消息類型,event Event 事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(自定義菜單點擊事件) EventKey 事件KEY值,與自定義菜單接口中KEY值對應(yīng)

    ?

    ?

    ?第四章 實現(xiàn)天氣預(yù)報功能

    ?

    這一章里,我們來實現(xiàn)微信上的天氣預(yù)報功能,我們使用方倍工作室的天氣預(yù)報接口,其接口為

    http://apix.sinaapp.com/weather/

    這個接口的參數(shù)appkey為公眾號原始id,參數(shù)city為城市名

    例如,查詢深圳的天氣預(yù)報時,將city值做urlencode,最終訪問的url為

    http://apix.sinaapp.com/weather/?appkey=trialuser&city=%E6%B7%B1%E5%9C%B3

    返回的內(nèi)容如下

    [{"Title": "深圳天氣預(yù)報","Description": "","PicUrl": "","Url": ""},{"Title": "【實況】溫度18℃ 濕度59%% 東北風(fēng)2級 發(fā)布時間:08:55","Description": "","PicUrl": "","Url": ""},{"Title": "【舒適】建議著長袖T恤、襯衫加單褲等服裝。年老體弱者宜著針織長袖襯衫、馬甲和長褲。","Description": "","PicUrl": "","Url": ""},{"Title": "11月19日 周三 晴 23℃~17℃ 無持續(xù)風(fēng)向 微風(fēng) 日出日落:06:38~17:39","Description": "","PicUrl": "http://discuz.comli.com/weixin/weather/icon/d00.jpg","Url": ""},{"Title": "11月20日 周四 多云 25℃~17℃ 無持續(xù)風(fēng)向 微風(fēng) 日出日落:06:39~17:38","Description": "","PicUrl": "http://discuz.comli.com/weixin/weather/icon/d01.jpg","Url": ""},{"Title": "11月21日 周五 多云 26℃~18℃ 無持續(xù)風(fēng)向 微風(fēng) 日出日落:06:40~17:38","Description": "","PicUrl": "http://discuz.comli.com/weixin/weather/icon/d01.jpg","Url": ""} ]

    我們在微信中調(diào)用這一接口來獲取天氣預(yù)報信息,實現(xiàn)代碼如下

    <?php /*方倍工作室CopyRight 2014 All Rights Reserved */define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest(); if (!isset($_GET['echostr'])) {$wechatObj->responseMsg(); }else{$wechatObj->valid(); }class wechatCallbackapiTest {//驗證簽名public function valid(){$echoStr = $_GET["echostr"];$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode($tmpArr);$tmpStr = sha1($tmpStr);if($tmpStr == $signature){echo $echoStr;exit;}}public function responseMsg(){$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){$this->logger("R ".$postStr);$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$RX_TYPE = trim($postObj->MsgType);$result = "";switch ($RX_TYPE){case "event":$result = $this->receiveEvent($postObj);break;case "text":$result = $this->receiveText($postObj);break;}$this->logger("T ".$result);echo $result;}else {echo "";exit;}}private function receiveEvent($object){switch ($object->Event){case "subscribe":$content = "歡迎關(guān)注方倍工作室 ";break;}$result = $this->transmitText($object, $content);return $result;}private function receiveText($object){$keyword = trim($object->Content);$url = "http://apix.sinaapp.com/weather/?appkey=".$object->ToUserName."&city=".urlencode($keyword); $output = file_get_contents($url);$content = json_decode($output, true);$result = $this->transmitNews($object, $content);return $result;}private function transmitText($object, $content){if (!isset($content) || empty($content)){return "";}$textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>";$result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);return $result;}private function transmitNews($object, $newsArray){if(!is_array($newsArray)){return "";}$itemTpl = " <item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item> ";$item_str = "";foreach ($newsArray as $item){$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);}$newsTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[news]]></MsgType> <Content><![CDATA[]]></Content> <ArticleCount>%s</ArticleCount> <Articles> $item_str</Articles> </xml>";$result = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));return $result;}private function logger($log_content){} } ?>

    上述代碼的下載地址為?http://pan.baidu.com/s/1gdsyHWJ,同樣的方法,可將代碼上傳到SAE上。

    在公眾賬號中使用的命令如下:

  • 發(fā)送城市名稱,如“深圳”,可以查詢該城市的天氣
  • 在你的公眾賬號輸入相應(yīng)的命令,實現(xiàn)效果類似如下所示:

    ?

    ?

    第五章 小結(jié)

    ?

    總的來說,通過本教程,你得到了以下收獲:

    • 1. 你通過本教程得到了一個免費的新浪云計算空間,云計算哦
    • 2. 你成功啟用了開發(fā)模式,并且實現(xiàn)了時間的自動回復(fù)
    • 3. 你了解了微信公眾平臺開發(fā)的原理,并且熟悉了各種消息及發(fā)送是怎么一回事
    • 4. 你使用方倍工作室的天氣預(yù)報接口,實現(xiàn)了一個微信公眾平臺上的天氣預(yù)報功能。

    接下來該做什么呢?你可以學(xué)習(xí)開發(fā)一些基礎(chǔ)的常用功能,推薦:方倍工作室 編寫,機(jī)械工業(yè)出版社 出版的《微信公眾平臺開發(fā)最佳實踐?第2版》,里面包含很多php開發(fā)技巧、數(shù)據(jù)庫使用、及近30項微信公眾平臺實用功能或技術(shù) 。?

    點擊圖標(biāo)購買

    ?

    ?

    學(xué)習(xí)完這一層次之后,你可以開始自己勝任一個中小型的微信公眾平臺賬號功能的開發(fā)了。

    如果你沒有PHP及Mysql方面的開發(fā)基礎(chǔ),我們也建議你購買《PHP和MySQL Web開發(fā)(原書第4版)》,該書被評為“PHP和MySQL程序員的最佳參考書”,

    點擊圖標(biāo)購買

    ?

    捐贈我們
    方倍工作室一直在致力于幫助開發(fā)人員更加快速方便的進(jìn)行微信公眾平臺的開發(fā),如果您對我們的成果表示認(rèn)同并且覺得對你有所幫助,歡迎您對我們捐贈^_^。

    ?

    ?原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html?

    ?

    ============================================

    ★微信官方推薦閱讀的100本圖書 點擊進(jìn)入查看
    ★微信公眾平臺開發(fā)教程——新手入門 點擊進(jìn)入
    【熱門】★微信公眾平臺開發(fā)(111) 現(xiàn)金紅包、裂變紅包、企業(yè)付款
    ☆微信付費開發(fā)聯(lián)系QQ 1354386063 ☆微信開發(fā)技術(shù)交流QQ群91553195
    分類: 微信開發(fā), 開發(fā)教程 好文要頂 關(guān)注我 收藏該文聯(lián)系我 方倍工作室
    關(guān)注 - 4
    粉絲 - 2249 +加關(guān)注 85 1 (請您對文章做出評價) ? 上一篇:微信公眾平臺開發(fā)(42)情侶相夫妻相
    ? 下一篇:淘寶天貓店鋪微信公眾平臺建設(shè)指南

    轉(zhuǎn)載于:https://www.cnblogs.com/lvchenfeng/p/5196178.html

    總結(jié)

    以上是生活随笔為你收集整理的微信平台开发教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。