Maison  >  Article  >  Applet WeChat  >  Introduction détaillée au développement de l'interface WeChat

Introduction détaillée au développement de l'interface WeChat

高洛峰
高洛峰original
2017-03-24 14:12:232292parcourir

Le processus de création nécessite une vérification de signature, qui est décrite comme suit :

Une fois que l'utilisateur de la plateforme publique aura soumis les informations, nous les demanderons à l'URL renseignée par requête GET. , et apportez quatre paramètres :

* signature — signature cryptée WeChat

* horodatage — horodatage

* nonce — nombre aléatoire

* echostr — chaîne aléatoire

Les développeurs vérifient la légalité de l'accès à l'URL en vérifiant la signature. Si cette requête GET renvoie le contenu du paramètre echostr tel quel, l'accès prendra effet, sinon l'accès échouera. La signature de vérification sera combinée avec le paramètre token, le paramètre timestamp et le paramètre nonce renseignés par le développeur. Le processus de cryptage est le suivant :

* Trier les trois paramètres token, timestamp et nonce par ordre lexicographique

* Trier les trois paramètres Les chaînes de paramètres sont fusionnées en une seule chaîne pour le cryptage SHA1

* La chaîne cryptée obtenue par le développeur peut être comparée à la signature pour identifier que la demande provient de WeChat.

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;  
        }  
?>

Cependant, WeChat n'utilise pas json pour transmettre des données :

Simplexml_load_string doit donc être utilisé pour charger des données XML comme un objet. De plus, on constate que la méthode POST n'est pas un urlencode, donc HTTP_RAW_POST_DATA est défini, puis les données peuvent être lues

ToUserName WeChat ID du destinataire du message, généralement l'ID WeChat du public. compte de plateforme

FromUserName WeChat ID de l'expéditeur du message

Heure de création du message CreateTime

Le message texte MsgType est un texte

Contenu du message de contenu

<?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;  
}  
 
 
?>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn