/**
* 微信php測試
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();//將第11行程式碼的一個類別實例化;
//$wechatObj->valid();//變數使用->存取類別中的valid()方法,下文valid()方法為驗證開發模式介面。這行作用就是驗證接口,驗證完可註解掉;
$wechatObj->responseMsg();
class wechatCallbackapiTest//定義一個類別,類為物件導向開發的封裝方式;
{
public function valid()//unction定義一個公有的名為valid的方法,即驗證介面的方法;
{
$echoStr = $_GET["echostr"];//從微信使用者端取得一個隨機signature , option
if($this->checkSignature()){//存取checkSignature簽章驗證方法,若簽章一致,輸出變數$echoStr,完整驗證 exit;
}/ /簽章及介面驗證;
}
public function responseMsg()//定義一個方法;
{
;
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data /$/L/L/L/L為每種資訊所判斷使用者/錯誤)); /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
the best way is to check the validity of entity_loader(true);
進行解析並賦予變數$postObj。 simplexml_load_string()函數用於解析XML,參數SimpleXMLElement為新物件的類,LIBXML_NOCDATA表示將CDATA設定為文字節點,CDATA標籤中的文字XML不進行解析。
$fromUsername = $postObj->FromUserName;//將微信使用者端的OpenID賦予變數$fromUsername /將公編號ID賦予變數$toUsername;
$keyword = trim($ postObj->Content);//將使用者微信發送的文字內容去除空格後給予變數$keyword;
$ j-> Event;//這是事件取得;
$textTpl = "
if($Event=="subscribe")//subscribe是收到訂閱訊息,取消訂閱事件類型,subscribe()、subscribe()
{
>
;
$contentStr = "謝謝關注,你可以回覆點什麼";
or$ $resultStr> sprint $ msgType, $contentStr);
echo $resultStr;
}///關注後自動回复文本消息
//switch($keyword)
//case "";
if(!empty( $keyword ))
{
$msgType = "text";//回覆文字訊息類型為text型,變數類型為$msgType;
//$contentStr回覆的資訊;
%s,需要5個變數進行賦值。此行程式碼為關鍵,sprintf()函數要深入理解。
echo $resultStr;//輸出回覆訊息,即發送微信;
echo "Input something...";//輸入內容,而此訊息不會送到微信端,且只在測驗時使用。
}
}else {
exit;//退出;
}
}
private function checkvate function checkS.中的簽名驗證程序,此行建立私有方法驗證簽名,這個私有的checkSignature方法,被第18行程式碼調用,官方文件為加密/校驗流程:將token,timestamp,nonce這三個參數進行字典序排序,將這三個參數字串拼接成一個字串進行shal加密,開發者獲得加密後字串可與signature對比,標示此要求來自於微信;
{
// you must !defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
= $_GET["signature"];//從用戶端取得簽章賦予變數$signature;
$timestamp = $_GET["timestamp"];//從使用者端取得時間戳記賦予變數$timestamp;
$nonce = $_GET["nonce"];
$token = TOKEN;
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);//新名排序;
$tmpStr = implode( $tmpArr );//字典排序;
$tmpStr = sha1( $tmp tmpStr == $signature ){//$tmpStr與$ signature變數同值,回傳真,否則回傳假;
return true;
}else{
}
}
?>
以上就介紹了微信開發設定檔詳細註解版,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。