Maison  >  Article  >  développement back-end  >  Solution à l'échec de la vérification du jeton de développement WeChat

Solution à l'échec de la vérification du jeton de développement WeChat

韦小宝
韦小宝original
2018-03-14 13:21:095776parcourir

Cet article décrit la solution à l'échec de la vérification des jetons pendant le développement de WeChat. Si vous êtes intéressé par le développement de WeChat ou si vous avez rencontré un échec de vérification des jetons et que vous ne parvenez pas à le résoudre, vous pouvez lire cet article ! Sans plus attendre, entrons dans le vif du sujet !

WeChatConfiguration du mini programmeL'échec de la vérification du jeton se produit généralement lors de l'envoi de messages Cette erreur est due au fait qu'il n'y a aucun retour sur votre page d'interface. donné à l'interface WeChat, Les internautes ont également donné quelques solutions, mais certaines peuvent être configurées avec succès, et d'autres ne le sont pas. Vous trouverez ci-dessous deux types de codes phpvérification d'interface fournis par les internautes qui sont plus faciles à configurer avec succès.

Exemple de code 1 (ma vérification peut réussir) :

<?php  
//1. 将timestamp , nonce , token 按照字典排序  
$timestamp = $_GET[&#39;timestamp&#39;];  
$nonce = $_GET[&#39;nonce&#39;];  
$token = "你自定义的Token值";  
$signature = $_GET[&#39;signature&#39;];  
$array = array($timestamp,$nonce,$token);  
sort($array);  
  
//2.将排序后的三个参数拼接后用sha1加密  
$tmpstr = implode(&#39;&#39;,$array);  
$tmpstr = sha1($tmpstr);  
  
//3. 将加密后的字符串与 signature 进行对比, 判断该请求是否来自微信  
if($tmpstr == $signature)  
{  
    echo $_GET[&#39;echostr&#39;];  
    exit;  
}

Exemple de code 2 :

<?php  
/** 
  * wechat php test 
  */  
  
//define your token  
define("TOKEN", "自定义token");  
$wechatObj = new wechatCallbackapiTest();  
$wechatObj->valid();  
  
class wechatCallbackapiTest  
{  
    public function valid()  
    {  
        $echoStr = $_GET["echostr"];  
  
        //valid signature , option  
        if($this->checkSignature()){  
            echo $echoStr;  
            exit;  
        }  
    }  
  
    public function responseMsg()  
    {  
        //get post data, May be due to the different environments  
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
  
        //extract post data  
        if (!empty($postStr)){  
                  
                $postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);  
                $fromUsername = $postObj->FromUserName;  
                $toUsername = $postObj->ToUserName;  
                $keyword = trim($postObj->Content);  
                $time = time();  
                $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(!empty( $keyword ))  
                {  
                    $msgType = "text";  
                    $contentStr = "Welcome to wechat world!";  
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
                    echo $resultStr;  
                }else{  
                    echo "Input something...";  
                }  
  
        }else {  
            echo "";  
            exit;  
        }  
    }  
          
    private function checkSignature()  
    {  
        $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 true;  
        }else{  
            return false;  
        }  
    }  
}  
  
?>

Choisissez l'un des deux exemples de codes ci-dessus à télécharger directement Sur votre serveur, remplissez le jeton personnalisé correspondant (jeton) dans l'URL dans la configuration du message (écrivez l'adresse du serveur du fichier PHP dans l'adresse du serveur). La clé de cryptage du message peut être générée aléatoirement. Mode de compatibilité, le format des données dépend de vos préférences personnelles (J'ai rempli JSON). Ensuite, cliquez simplement sur Soumettre. Si l'image suivante apparaît, cela signifie que la vérification a réussi :



Tout le monde a rencontré Erreurs de vérification des jetons. Vous pouvez y jeter un œil ! Vous aider à résoudre les problèmes de jetons plus rapidement !

Recommandations associées :

Explication détaillée du jeton de l'interface de l'application

Comment définir l'URL et le jeton de l'applet WeChat

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