微信實驗三、微信公衆號開發者PHP入門

製作人:陳曉華   qq:78976932   微信號:chen-jeo

開源項目:https://github.com/chenxhjeo,個人博客:http://blog.csdn.net/u013487761

技術QQ羣名稱:豆豆諮詢,羣號:625686304

微信公衆號名稱:豆豆諮詢,微信公衆號:douAsk

初建日期:2017.03.29,修改日期:2017.03.30

一、實驗目的 

1、掌握微信公衆號後臺開發PHP入門。 

二、實驗內容

1、成爲微信開發者;

2、在家、寢室、實驗室等環境,配置開發環境;

3、在微信PHP後臺驗證。 

4、PHP接收用戶輸入以及回送消息。 

三、實驗步驟及過程 

由於手機端特性(例如內存小)與微信廣泛應用,微信開發與應用成爲當前的開發熱點。但微信公衆號存在一些侷限,例如難以通過查詢功能得到想要的結果。以下我們將引導大家如何成爲微信公衆號的開發者。

1、如何成爲微信開發者,即取得開發者密鑰。

1)在微信後臺(通過https://mp.weixin.qq.com登錄)點擊開發->基本配置,打開基本配置頁面,如下所示。


2)生成AppSecret(應用密鑰):需要完成三個步驟,如圖所示:


a)身份確認:二維碼掃描,授權設置開發者密鑰。

b)密碼驗證:輸入登錄密碼和驗證碼,如下圖所示。


c)查看AppSecret(微信爲AppSecert,哈哈,是不是英語寫錯了?):注意保存好你的AppID和AppSecret,如下圖所示。


2、在家、寢室、實驗室、公網等環境,配置開發環境。

如果您在家、寢室、實驗室等環境,想配置開發環境,那麼請關注“豆豆諮詢”公衆號,我們將傳遞給您具體的手冊及工具。

1)這裏假設您具有公網地址或者域名,則配置URL(服務器地址)、Token(令牌)、EncodingAESKey(消息加密密鑰)、消息加密方式,如下圖所示。


2)填寫URL(服務器地址)、Token(令牌)、EncodingAESKey(消息加密密鑰)、消息加密方式信息。分別解釋如下:

a)URL是你服務器的地址,具有驗證、接收消息、發送消息等功能的服務器,分別支持80端口和443端口。

b)Token是自己設定的令牌,必須爲英文或者數字,長度爲3-32字符。

c)EncodingAESKey爲消息加密密鑰,隨機產生,由43位字符組成,字符範圍爲A-Z,a-z,0-9。

d)消息加密方式:根據業務需要,可以設定明文模式、兼容模式、安全模式,系統推薦安全模式。我們以明文模式簡化開發流程,如下圖所示。


注意:微信開放平臺賬號的綁定在內測中。

3、在微信PHP後臺驗證。 主要涉及到驗證消息,具體PHP代碼如下:

<?php

//define yourtoken

define("TOKEN","weixin");

echo"I'am already Waiting for something...S.";

$wechatObj =new wechatCallbackapiTest();

$wechatObj->valid();//驗證消息

classwechatCallbackapiTest

{

         public function valid()

    {

        $echoStr = $_GET["echostr"];

        //valid signature , option

        if($this->checkSignature()){

                echo$echoStr;

                exit;

        }

    }

         private function checkSignature()

         {

        // you must define TOKEN by yourself

        if (!defined("TOKEN")) {

            throw new Exception('TOKEN is notdefined!');

        }

        $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;

                  }

         }

}

?>

4、在微信PHP後臺接收用戶輸入的消息和回送給用戶的消息。微信要求必須在5秒之內得到回覆,如果沒有得到回覆,則嘗試三次。PHP接收消息和發送消息代碼描述如下:

privatefunction is_utf8($str)//判斷是否是utf8編碼

    {

             returnpreg_match('//u', $str);

    }

 

    public function responseMsg()

    {

                  //get post data, May be due tothe different environments

                  $postStr =$GLOBALS["HTTP_RAW_POST_DATA"];

          //extractpost data

                  if (!empty($postStr)){

               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);

                        $content = trim($postObj->Content);//消息內容json_encode($postObj->Content);

                        $contentStr = '你發送的信息是:接收人:'.$toUsername.',發送人:'.$fromUsername.',消息類型:'.$MsgType.',消息內容:'.$content.' ';

                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername,$time, $msgType, $contentStr);

                        if ($this->is_utf8($resultStr)) {

                                 //$resultStr = $resultStr;

                        } else {

                                 //$resultStr = iconv('gb2312', 'UTF-8//IGNORE',$resultStr);

                        }

                        echo $resultStr;

                }else{

                        echo "Input something...";

                }

        }else {

                echo"";

                exit;

        }

    }


四、常見錯誤

1、驗證不通過:在windows開發,主要由於編碼的差異導致驗證不通過,如果你遇到了類似問題還無法解決,請成爲關注“豆豆諮詢”公衆號,我們將爲您解答問題。

2、接收和發送中文信息,有時候會出現亂碼,原因也是同上所示。解決方法是採用utf-8編碼。如果你遇到了類似問題還無法解決,請成爲關注“豆豆諮詢”公衆號,我們將爲您解答問題。

五、技術服務


1、如果有疑問或者需要幫助,請加入QQ羣(羣名稱:豆豆諮詢,羣號:625686304);或者公衆號douAsk,公衆號名稱爲“豆豆諮詢”。掃描以下二維碼,關注“豆豆諮詢”


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章