微信公衆平臺開發新手教程(圖文具體解釋)

由於微信的大熱。爲了更好的方便使用微信的用戶查詢一些信息。這篇文章是入門級的微信公衆平臺開發教程,需要的朋友可以參考下php

在這篇新手教程中,咱們假定你已經有了PHP語言程序、MySQL數據庫、計算機網絡通信及XML語言基礎。假設你尚未,那麼請先學習相關知識。html

咱們將使用微信公衆帳號方倍工做室(帳號:pondbaystudio,二維碼在最底部)做爲解說的樣例。web

這篇新手教程將引導你完畢例如如下任務:數據庫

建立百度雲平臺應用啓用微信公衆平臺開發模式獲取訂閱、文字、圖片、語音、視頻消息回覆文本、圖文及音樂消息程序開發
 api

建立百度雲應用微信

申請帳號網絡

登陸http://developer.baidu.com/bae 。使用郵箱或者手機註冊一個帳號,註冊需要同一時候綁定手機並且驗證郵箱。

建立應用app

註冊並登陸成功之後。點擊右上側的。彈出例如如下窗體。微信公衆平臺

 

應用名稱本身隨便填寫一個,接入方式選擇「手機web應用」,而後點擊肯定。ide

說明:在下面的教程中。您可以將所有我填寫爲pondbay的地方改成你的一個對應的名稱。假設您沒有想好名稱,最簡單的方法就是qq這兩個字符+qq號碼,比方方倍工做室的QQ是1354386063,那麼就將"pondbay"改成"qq1354386063"

 

選擇「雲環境(BAE)」,

在新的窗體中。填寫應用域名的名稱,環境類型選擇PHP,其它依據本身需要選擇或者使用上圖默認值,而後點擊肯定

注意:此處填寫的域名將要在如下填寫URL時用到。

可以先保存下來。

建立版本號

在版本號管理中,點擊建立新版本號

版本填寫0,而後保存。



上傳代碼

將下面代碼中的token改成你的名稱。並另存爲index.php。

注意:此處填寫的Token將要在如下填寫URL時用到。可以先保存下來。

複製代碼代碼例如如下:

<?php
/*
    方倍工做室 http://www.cnblogs.com/txw1958/
    CopyRight 2013  www.doucube.com  All Rights Reserved
*/

define("TOKEN", "pondbay");

$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $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 ){
            return true;
        }else{
            return false;
        }
    }
}
?

>

而後將其壓縮成zip格式

這樣會生成一個index.zip的文件。

回來版本號管理中

選擇包上傳更新

選擇剛纔壓縮好的zip包,點擊上傳。

肯定生效,並且點擊 ,點擊後例如如下圖。

百度雲應用的建立就成功了。

 

 

微信公衆平臺開發模式

高級功能

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

登陸微信公衆平臺後臺。選擇高級功能

進入後就看到兩種模式

咱們需要關閉編輯模式。點擊編輯模式的進入

滑動關閉

 

開發模式

進入開發模式裏面

 點擊成爲開發人員

彈出URL和Token填寫框

此處的URL爲建立百度雲應用的域名。包含後面的duapp.com。而Token爲index.php中定義的值。

URL:   http://pondbay.duapp.com
Token:  pondbay

填寫例如如下圖,

 提交成功

再滑動右上角啓用button。

至此,你已經成功啓用開發模式。

接收消息類型

眼下普通用戶能向公衆帳號推送五種格式的消息:文本(包含表情)、語音、圖片、視頻、位置、連接。名片發送會失敗。
如下就這五種分別具體解釋例如如下:

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[/::)/::)/::)/::)/::)]]></Content>
<MsgId>5837051792978241864</MsgId>
</xml>

XML格式解說

複製代碼代碼例如如下:

ToUserName 消息接收方微信號,通常爲公衆平臺帳號微信號
FromUserName 消息發送方微信號
CreateTime 消息建立時間
MsgType 消息類型;文本消息爲text
Content 消息內容
MsgId 消息ID號可以看出,文本和表情的消息類型均爲文本
[html]

2. 圖片
發送圖片

後臺格式:

[code]
<xml><ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName>
<FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName>
<CreateTime>1359028479</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[http://mmsns.qpic.cn/mmsns/L4qjYtOibuml238YYBcfS2FQ8JtNN69Bc4bbbscvQRrljbedVjlMEAA/0]]></PicUrl>
<MsgId>5836982871638042400</MsgId>
</xml>

XML格式解說

複製代碼代碼例如如下:

ToUserName 消息接收方微信號,通常爲公衆平臺帳號微信號
FromUserName 消息發送方微信號
CreateTime 消息建立時間
MsgType 消息類型。圖片消息爲image
PicUrl 圖片連接地址,可以用HTTP GET獲取
MsgId 消息ID號 

3. 語音
發送語音

後臺格式:

複製代碼代碼例如如下:

<xml>
 <ToUserName><![CDATA[gh_680bdefc8c5d]]></ToUserName>
 <FromUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></FromUserName>
 <CreateTime>1359028025</CreateTime>
 <MsgType><![CDATA[voice]]></MsgType>
 <MediaId><![CDATA[hGm9wmKth8RO_tuv5k9fJkSbovXWzZVYwG2jSsL7ukCqq6q1SiLzYnFEngFNUijs]]></MediaId>
 <Format><![CDATA[amr]]></Format>
 <MsgId>5836980921722890003</MsgId>
</xml>

XML格式解說

複製代碼代碼例如如下:

ToUserName 消息接收方微信號,通常爲公衆平臺帳號微信號
FromUserName 消息發送方微信號
CreateTime 消息建立時間
MsgType 消息類型;語音消息爲voice
MediaId 媒體ID
Format 語音格式,這裏爲amr
MsgId 消息ID號附:AMR接口簡單介紹
全稱Adaptive Multi-Rate,主要用於移動設備的音頻。壓縮比比較大。但相對其它的壓縮格式質量比較差,由於多用於人聲,通話,效果仍是很是不錯的。 

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 消息發送方微信號
CreateTime 消息建立時間
MsgType 消息類型。視頻消息爲video
MediaId 媒體ID
ThumbMediaId 媒體縮略ID?
MsgId 消息ID號 原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 

5. 位置
發送位置

後臺格式:

複製代碼代碼例如如下:

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

XML格式解說

複製代碼代碼例如如下:

 ToUserName 消息接收方微信號。通常爲公衆平臺帳號微信號
 FromUserName 消息發送方微信號
 CreateTime 消息建立時間
 MsgType 消息類型。地理位置爲location
 Location_X 地理位置緯度
 Location_Y 地理位置經度
 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[分享一款應用給你 -方倍神圖]]></Title> 
<Description><![CDATA[方倍神圖爲您提供夫妻相測試,親子鑑定等新鮮、好玩的圖片測試功能]]></Description> 
<Url><![CDATA[http://israel.duapp.com/web/photo.php]]></Url> 
<MsgId>5839907284805129867</MsgId> 
</xml>

XML格式解說

複製代碼代碼例如如下:

 ToUserName 消息接收方微信號,通常爲公衆平臺帳號微信號
 FromUserName 消息發送方微信號
 CreateTime 消息建立時間
 MsgType 消息類型,連接爲link
 Title 圖文消息標題
 Description 圖文消息描寫敘述
 Url 點擊圖文消息跳轉連接
 MsgId 消息ID號

發送消息類型

眼下公衆帳號能向普通用戶推送三種格式的消息:文本、圖文、音樂。

當中圖文消息包含單條圖文消息和多條圖文消息,展現方式有一點點不一樣。
另外。回覆的消息支持星標操做:經過填寫FuncFlag字段爲1來對回覆消息作星標操做後。可以在實時消息的星標消息分類中找到相應的推送消息。

如下就這幾種分別具體解釋例如如下:

1. 文本消息格式
回覆文本

後臺格式:

複製代碼代碼例如如下:

<xml>
<ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName>
<FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName>
<CreateTime>1359036631</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[★★★★豆立方★★★★ 微信公衆平臺上最好玩的圖片及視頻應用]]></Content>
<FuncFlag>0</FuncFlag>
</xml>

XML格式解說

複製代碼代碼例如如下:

 FromUserName 消息發送方
 ToUserName 消息接收方
 CreateTime 消息建立時間
 MsgType 消息類型。文本消息必須填寫text
 Content 消息內容,限制大小在2048字節,字段爲空爲不合法請求
 FuncFlag 星標字段 
 

2. 圖文消息格式
2.1 單條圖文消息
回覆單條圖文


後臺格式:

複製代碼代碼例如如下:

<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[【天津】天氣實況 ]]></Title>
            <Description><![CDATA[溫度:3℃ 溼度:43﹪ 風速:西南風2級]]></Description>
            <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/banner.jpg]]></PicUrl>
            <Url><![CDATA[]]></Url>
        </item>
    </Articles>
    <FuncFlag>0</FuncFlag>
</xml>

2.2 多條圖文消息

複製代碼代碼例如如下:

<xml>
    <ToUserName><![CDATA[oIDrpjqASyTPnxRmpS9O_ruZGsfk]]></ToUserName>
    <FromUserName><![CDATA[gh_680bdefc8c5d]]></FromUserName>
    <CreateTime>1359011829</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <Content><![CDATA[]]></Content>
    <ArticleCount>8</ArticleCount>
    <Articles>
        <item>
            <Title><![CDATA[【天津】天氣實況 溫度:3℃ 溼度:43﹪ 風速:西南風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℃ 晴 北風3-4級轉東南風小於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℃ 晴 東南風小於3級轉東北風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℃ 多雲 東北風3-4級轉東南風小於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℃ 多雲 東南風小於3級轉東北風3-4級]]></Title>
            <Description><![CDATA[]]></Description>
            <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d01.gif]]></PicUrl>
            <Url><![CDATA[]]></Url>
        </item>
        <item>
            <Title><![CDATA[06月28日 週一 -1℃~-8℃ 多雲 東北風3-4級轉南風小於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月29日 週二 1℃~-5℃ 多雲 南風小於3級轉3-4級]]></Title>
            <Description><![CDATA[]]></Description>
            <PicUrl><![CDATA[http://www.doucube.com/weixin/weather/icon/d01.gif]]></PicUrl>
            <Url><![CDATA[]]></Url>
        </item>
        <item>
            <Title><![CDATA[方倍工做室 版權所有]]></Title>
            <Description><![CDATA[]]></Description>
            <PicUrl><![CDATA[]]></PicUrl>
            <Url><![CDATA[]]></Url>
        </item>
    </Articles>
    <FuncFlag>0</FuncFlag>
</xml>

XML格式解說

複製代碼代碼例如如下:

FromUserName 消息發送方
 ToUserName 消息接收方
 CreateTime 消息建立時間
 MsgType 消息類型,圖文消息必須填寫news
 Content 消息內容,圖文消息可填空
 ArticleCount 圖文消息個數,限制爲10條之內
 Articles 多條圖文消息信息。默認第一個item爲大圖
  Title 圖文消息標題
  Description 圖文消息描寫敘述
  PicUrl 圖片連接,支持JPG、PNG格式,較好的效果爲大圖640*320,小圖80*80
  Url 點擊圖文消息跳轉連接
FuncFlag 星標字段


3. 音樂消息

後臺格式:

複製代碼代碼例如如下:

<xml>
    <ToUserName><![CDATA[ollB4jqgdO_cRnVXk_wRnSywgtQ8]]></ToUserName>
    <FromUserName><![CDATA[gh_b629c48b653e]]></FromUserName>
    <CreateTime>1372310544</CreateTime>
    <MsgType><![CDATA[music]]></MsgType>
    <Music>
        <Title><![CDATA[最炫民族風]]></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     開發人員微信號
CreateTime     消息建立時間
MsgType          消息類型,此處爲music
    Title       音樂標題
    Description 音樂描寫敘述
    MusicUrl     音樂連接
    HQMusicUrl     高質量音樂連接,WIFI環境優先使用該連接播放音樂
FuncFlag     位0x0001被標誌時。星標剛收到的消息。

事件消息類型

眼下用戶在關注和取消關注的時候會本身主動向公衆平臺發送事件推送消息:

1. 關注事件

複製代碼代碼例如如下:

<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. 取消關注事件

複製代碼代碼例如如下:

<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 發送方微信號。若爲普通用戶,則是一個OpenID
CreateTime     消息建立時間
MsgType     消息類型,event
Event     事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(本身定義菜單點擊事件)
EventKey 事件KEY值,與本身定義菜單接口中KEY值相應

簡單的本身主動回覆

咱們在官方的樣例上作一些改動。實現了一個發送「?」就能回覆當前時間的功能。
該樣例是接收文本消息($postObj->Content),並且回覆文本消息($msgType = "text";)的。


你可以把下面代碼保存爲index.php。依照上面提供的方法又一次上傳。


代碼例如如下:

複製代碼代碼例如如下:

<?php
/*
    方倍工做室 http://www.cnblogs.com/txw1958/
    CopyRight 2013  www.doucube.com  All Rights Reserved
*/

define("TOKEN", "pondbay");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();

class wechatCallbackapiTest
{
    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 == "?")
            {
                $msgType = "text";
                $contentStr = date("Y-m-d H:i:s",time());
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }
        }else{
            echo "";
            exit;
        }
    }
}
?>


效果例如如下:

相關文章
相關標籤/搜索