這篇文章主要介紹了微信接口開發(fā)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的尼元陽(yáng)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
創(chuàng)建過(guò)程就需要做簽名校驗(yàn),描述如下:
公眾平臺(tái)用戶提交信息后,我們將以GET請(qǐng)求方式請(qǐng)求到填寫的Url上,并且?guī)纤膫€(gè)參數(shù):
* signature — 微信加密簽名
* timestamp — 時(shí)間戳
* nonce — 隨機(jī)數(shù)
* echostr — 隨機(jī)字符串
開發(fā)者通過(guò)檢驗(yàn)signature對(duì)網(wǎng)址接入合法性進(jìn)行校驗(yàn)。若此次GET請(qǐng)求原樣返回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對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信。
代碼:
<? $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ù)為對(duì)象,另外發(fā)現(xiàn)POST方法不是urlencode,所以設(shè)置HTTP_RAW_POST_DATA,然后可以讀取數(shù)據(jù).
ToUserName 消息接收方微信號(hào),一般為公眾平臺(tái)賬號(hào)微信號(hào)
FromUserName 消息發(fā)送方微信號(hào)
CreateTime 消息創(chuàng)建時(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)對(duì)象函數(shù),可能最近這一兩年入行的不太清楚XML函數(shù) //數(shù)據(jù)從對(duì)象取出 $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ā)信息來(lái)了,不是空白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!"; //輸入信息有問(wèn)題,提示輸入! } } else { echo ""; exit; } ?>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“微信接口開發(fā)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
新聞名稱:微信接口開發(fā)的示例分析
文章鏈接:http://jinyejixie.com/article8/gpgdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、營(yíng)銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、企業(yè)建站、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)