Heim >WeChat-Applet >WeChat-Entwicklung >Detaillierte Einführung in die WeChat-Schnittstellenentwicklung

Detaillierte Einführung in die WeChat-Schnittstellenentwicklung

高洛峰
高洛峰Original
2017-03-24 14:12:232390Durchsuche

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[&#39;signature&#39;];  
        $timestamp = $_GET[&#39;timestamp&#39;];  
        $nonce = $_GET[&#39;nonce&#39;];      
                  
        $token = TOKEN;  
        $tmpArr = array($token, $timestamp, $nonce);  
        sort($tmpArr);  
        $tmpStr = implode( $tmpArr );  
        $tmpStr = sha1( $tmpStr );  
          
        if( $tmpStr == $signature ){  
            return $_GET[&#39;echostr&#39;];  
        }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, &#39;SimpleXMLElement&#39;, 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn