Der Erstellungsprozess erfordert eine Signaturüberprüfung, die wie folgt beschrieben wird:
Nachdem der Benutzer der öffentlichen Plattform die Informationen übermittelt hat, fordern wir sie per GET-Anfrage an die ausgefüllte URL an und bringen vier Parameter mit:
* Signatur – WeChat-verschlüsselte Signatur
* Zeitstempel – Zeitstempel
* Nonce – Zufallszahl
* Echostr – Zufallszeichenfolge
Entwickler überprüfen die Rechtmäßigkeit des URL-Zugriffs durch Überprüfung der Signatur. Wenn diese GET-Anfrage den Inhalt des Echostr-Parameters unverändert zurückgibt, wird der Zugriff wirksam, andernfalls schlägt der Zugriff fehl. Die Verifizierungssignatur wird mit den vom Entwickler eingegebenen Token-Parametern, Zeitstempel-Parametern und Nonce-Parametern kombiniert. Der Verschlüsselungsprozess ist:
* Sortieren Sie die drei Parameter Token, Zeitstempel und Nonce in lexikografischer Reihenfolge
* Sortieren Sie die drei Parameter. Parameterzeichenfolgen werden für die SHA1-Verschlüsselung zu einer Zeichenfolge zusammengefügt.
* Die vom Entwickler erhaltene verschlüsselte Zeichenfolge kann mit der Signatur verglichen werden, um zu identifizieren, dass die Anfrage von WeChat stammt.
Code:
<? $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; } ?>
WeChat verwendet jedoch kein JSON zum Übertragen von Daten:
Daher muss simplexml_load_string verwendet werden, um XML-Daten als zu laden ein Objekt. Außerdem wird festgestellt, dass die POST-Methode kein URL-Code ist, daher wird HTTP_RAW_POST_DATA festgelegt, und dann können die Daten gelesen werden.
ToUserName WeChat-ID des Nachrichtenempfängers, normalerweise die WeChat-ID der Öffentlichkeit Plattformkonto
FromUserName WeChat-ID des Nachrichtensenders
CreateTime-Erstellungszeit der Nachricht
MsgType Textnachricht ist Text
Inhalt Nachrichteninhalt
<?php $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //符合微信的POST规范 if (!emptyempty($postStr)) { $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //XML转对象函数,可能最近这一两年入行的不太清楚XML函数 //数据从对象取出 $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $CreateTime = $postObj->CreateTime; $MsgType = $postObj->MsgType; $Content = $postObj->Content; $keyword = trim($postObj->Content); //安全Trim $time = time(); //XML数据体 $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 )) //如果发信息来了,不是空白POST,微信规定立即回复,不用推送. { $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; } ?>
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die WeChat-Schnittstellenentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!