Heim >WeChat-Applet >WeChat-Entwicklung >Einführung in die automatische Textantwort in der PHP-WeChat-Entwicklung

Einführung in die automatische Textantwort in der PHP-WeChat-Entwicklung

高洛峰
高洛峰Original
2017-03-13 14:04:151509Durchsuche

In diesem Artikel werden relevante Informationen zur automatischen Textantwort in der PHP-WeChat-Entwicklung vorgestellt.

Gehen Sie zunächst zur öffentlichen WeChat-Plattform, um ein Konto zu registrieren (es gibt eine ganze Reihe von Dingen). für die Registrierung auszufüllen) (mehr), nach der Registrierung loggen Sie sich ein. Sie können das „Developer Center“ auf der linken Seite sehen. Es scheint, dass Sie einige Informationen vervollständigen müssen, bevor Sie das Developer Center öffnen können. Gehen Sie nach dem Betreten des Entwicklerzentrums zunächst zu Bearbeiten

Einführung in die automatische Textantwort in der PHP-WeChat-Entwicklung

, um die Konfiguration zu ändern. Achten Sie beim Ändern der Konfiguration auf Folgendes:

Einführung in die automatische Textantwort in der PHP-WeChat-Entwicklung

URL ist ein PHP-Skript unter Ihrem eigenen Domainnamen (eine Demo des Skripts finden Sie weiter unten). Dieses Skript wird als Schnittstelle zur WeChat-Schnittstelle verwendet. Beispielsweise ist http://www.example.com/weixin.php

Token eine Konstante, die im obigen Skript definiert ist, beispielsweise in Ihrem PHP-Skript Jetzt:

define("TOKEN", "my_weixin");

Dann geben Sie beim Ausfüllen des Tokens abcdefgh ein

EncodingAESKey wird für die Nachrichtenverschlüsselung verwendet. Sie können eine 43-Bit-Kombination aus Zahlen und Buchstaben selbst schreiben oder „zufällig generiert“ wählen.

Nachdem Sie es ausgefüllt haben, speichern Sie es (wenn beim Speichern angezeigt wird, dass die Token-Verifizierung fehlgeschlagen ist, bestätigen Sie bitte, dass das Token konsistent ist, und klicken Sie noch mehrmals, um es zu speichern).

Klicken Sie nach dem Speichern neben der geänderten Konfiguration auf „Öffnen“.

Dann können Sie Ihr PHP-Skript bearbeiten. (Wenn Sie keinen eigenen Domainnamen haben, können Sie das kostenlose SAE von Sina Cloud verwenden. Am besten führen Sie die Authentifizierung mit echtem Namen durch.)
Das Demo-Skript lautet wie folgt: Folgen Sie der öffentlichen Plattform (z. B. nach dem Abonnementkonto), die Funktion ist: Geben Sie „hehe“ ein und geben Sie „Hallo Welt“ zurück!!! Wenn Sie andere Zeichen eingeben, kehren Sie zu „heeh“ zurück und versuchen Sie es.


header('content-type:text/html;charset=utf-8');

define("TOKEN", "my_weixin"); //define your token
$wx = new wechatCallbackapiTest();

if($_GET['echostr']){
 $wx->valid(); //如果发来了echostr则进行验证
}else{
 $wx->responseMsg(); //如果没有echostr,则返回消息
}


class wechatCallbackapiTest{

 public function valid(){ //valid signature , option

  $echoStr = $_GET["echostr"];
  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"]; //接收微信发来的XML数据

  //extract post data
 if(!empty($postStr)){
    
   //解析post来的XML为一个对象$postObj
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  
   $fromUsername = $postObj->FromUserName; //请求消息的用户
   $toUsername = $postObj->ToUserName; //"我"的公众号id
   $keyword = trim($postObj->Content); //消息内容
   $time = time(); //时间戳
   $msgtype = 'text'; //消息类型:文本
   $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";

  if($keyword == &#39;hehe&#39;){
    $contentStr = &#39;hello world!!!&#39;;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();            
   }else{
    $contentStr = &#39;输入hehe试试&#39;;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();
   }

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

Wenn Sie eine Nachricht senden, meldet das System Folgendes: Diese öffentliche Plattform kann vorübergehend keine Dienste bereitstellen. Bitte versuchen Sie es später erneut. Dann liegt wahrscheinlich ein Problem mit der Codesyntax vor. Überprüfen Sie den Code auf Grammatikfehler und versuchen Sie es erneut.

Anhang:

Wenn ein neuer Benutzer Ihrem offiziellen Konto folgt, werden automatisch Informationen zurückgegeben: (Fügen Sie diesen Code hinzu, um $keyword vorher zu bestimmen).

   if($postObj->MsgType == &#39;event&#39;){ //如果XML信息里消息类型为event
    if($postObj->Event == &#39;subscribe&#39;){ //如果是订阅事件
     $contentStr = "欢迎订阅misaka去年夏天!\n更多精彩内容:http://www.php.cn/";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
     echo $resultStr;
     exit();
    }
   }

Das obige ist der detaillierte Inhalt vonEinführung in die automatische Textantwort in der PHP-WeChat-Entwicklung. 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