這篇文章主要介紹了微信接口開發(fā)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目前成都創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設、域名、雅安服務器托管、網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、高陽網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。創(chuàng)建過程就需要做簽名校驗,描述如下:
公眾平臺用戶提交信息后,我們將以GET請求方式請求到填寫的Url上,并且?guī)纤膫€參數(shù):
* signature — 微信加密簽名
* timestamp — 時間戳
* nonce — 隨機數(shù)
* echostr — 隨機字符串
開發(fā)者通過檢驗signature對網(wǎng)址接入合法性進行校驗。若此次GET請求原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。驗證signature將結合開發(fā)者填寫的token參數(shù)、timestamp參數(shù)和nonce參數(shù)等,加密流程:
* 將token、timestamp、nonce三個參數(shù)進行字典序排序
* 將三個參數(shù)字符串拼接成一個字符串進行SHA1加密
* 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信。
代碼:
$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途徑傳遞數(shù)據(jù):
所以要用simplexml_load_string裝XML數(shù)據(jù)為對象,另外發(fā)現(xiàn)POST方法不是urlencode,所以設置HTTP_RAW_POST_DATA,然后可以讀取數(shù)據(jù).
ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號
FromUserName 消息發(fā)送方微信號
CreateTime 消息創(chuàng)建時間
MsgType 文本消息為text
Content 消息內(nèi)容
FromUserName; $toUsername = $postObj->ToUserName; $CreateTime = $postObj->CreateTime; $MsgType = $postObj->MsgType; $Content = $postObj->Content; $keyword = trim($postObj->Content); //安全Trim $time = time(); //XML數(shù)據(jù)體 $textTpl = ""; if(!emptyempty( $keyword )) //如果發(fā)信息來了,不是空白POST,微信規(guī)定立即回復,不用推送. { $msgType = "text"; //定義類型 $contentStr = "Hello World,I am Tater!"; //回復 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); //記住,Tpl是要載入的 echo $resultStr; //輸出,以便微信抓! } else { echo "What are you say!"; //輸入信息有問題,提示輸入! } } else { echo ""; exit; } ?> %s 0
感謝你能夠認真閱讀完這篇文章,希望小編分享的“微信接口開發(fā)的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設公司,,關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!