創(chuàng)建過程就需要做簽名校驗(yàn),描述如下:
?
公眾平臺(tái)用戶提交資訊後,我們將以GET請求方式請求到填寫的Url上,並且?guī)纤膫€(gè)參數(shù):
* signature — 微信加密簽章
* timestamp — 時(shí)間戳
* nonce — 隨機(jī)數(shù)字
* echostr — 隨機(jī)字串
開發(fā)者透過檢驗(yàn)signature對網(wǎng)址存取合法性進(jìn)行校驗(yàn)。若此次GET請求原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。驗(yàn)證signature將結(jié)合開發(fā)者填寫的token參數(shù)、timestamp參數(shù)和nonce參數(shù)等,加密流程:
* 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
* 將三個(gè)參數(shù)字串拼接成一個(gè)字串進(jìn)行SHA1加密
* 開發(fā)者取得加密後的字串可與signature對比,標(biāo)識(shí)該請求來自微信。
程式碼:
<? $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 $_GET['echostr']; }else{ return false; } ?>
然而,微信不走json途徑傳遞資料:
?
所以要用simplexml_load_string裝XML資料為物件,另外發(fā)現(xiàn)POST方法不是urlencode,所以設(shè)定HTTP_RAW_POST_DATA,然後可以讀取資料.
ToUserName 訊息接收方微訊號(hào),一般為公眾平臺(tái)帳號(hào)微訊號(hào)
FromUserName 訊息傳送方微訊號(hào)
CreateTime 訊息建立時(shí)間
MsgType 文字訊息為text
Content 訊息內(nèi)容
<?php $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //符合微信的POST規(guī)范 if (!emptyempty($postStr)) { $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //XML轉(zhuǎn)對象函數(shù),可能最近這一兩年入行的不太清楚XML函數(shù) //數(shù)據(jù)從對象取出 $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $CreateTime = $postObj->CreateTime; $MsgType = $postObj->MsgType; $Content = $postObj->Content; $keyword = trim($postObj->Content); //安全Trim $time = time(); //XML數(shù)據(jù)體 $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(!emptyempty( $keyword )) //如果發(fā)信息來了,不是空白POST,微信規(guī)定立即回復(fù),不用推送. { $msgType = "text"; //定義類型 $contentStr = "Hello World,I am Tater!"; //回復(fù) $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); //記住,Tpl是要載入的 echo $resultStr; //輸出,以便微信抓! } else { echo "What are you say!"; //輸入信息有問題,提示輸入! } } else { echo ""; exit; } ?>
以上是微信介面開發(fā)的詳細(xì)介紹的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)