創(chuàng)建過程就需要做簽名校驗,描述如下:
?
公眾平臺用戶提交信息后,我們將以GET請求方式請求到填寫的Url上,并且?guī)纤膫€參數(shù):
* signature — 微信加密簽名
* timestamp — 時間戳
* nonce — 隨機數(shù)
* echostr — 隨機字符串
開發(fā)者通過檢驗signature對網(wǎng)址接入合法性進行校驗。若此次GET請求原樣返回echostr參數(shù)內(nèi)容,則接入生效,否則接入失敗。驗證signature將結(jié)合開發(fā)者填寫的token參數(shù)、timestamp參數(shù)和nonce參數(shù)等,加密流程:
* 將token、timestamp、nonce三個參數(shù)進行字典序排序
* 將三個參數(shù)字符串拼接成一個字符串進行SHA1加密
* 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信。
代碼:
<? $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,所以設(shè)置HTTP_RAW_POST_DATA,然后可以讀取數(shù)據(jù).
ToUserName 消息接收方微信號,一般為公眾平臺賬號微信號
FromUserName 消息發(fā)送方微信號
CreateTime 消息創(chuàng)建時間
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; } ?>
Atas ialah kandungan terperinci 微信接口開發(fā)的詳細介紹. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)