Home  >  Article  >  WeChat Applet  >  Introduction to text automatic reply in PHP WeChat development

Introduction to text automatic reply in PHP WeChat development

高洛峰
高洛峰Original
2017-03-13 14:04:151441browse

This article introduces relevant information on text automatic reply in PHP WeChat development. Interested friends can refer to it

First, go to the WeChat public platform to register an account (there are quite a few things to fill in for registration) (more), after registering, log in. You can see the "Developer Center" on the left. It seems that you need to complete some information before opening the Developer Center. Just follow the steps to complete it. After entering the developer center, first edit

Introduction to text automatic reply in PHP WeChat development

to modify the configuration. When modifying the configuration, pay attention to:

Introduction to text automatic reply in PHP WeChat development

##URL is a PHP script under your own domain name (read below for a demo of the script). This script is used to interface with the WeChat interface. For example

http://www.example.com/weixin.php

Token is a

constant defined in the above script, such as defined in your PHP script Now:

define("TOKEN", "my_weixin");

Then, when filling in the Token, you fill in abcdefgh

EncodingAESKey is For message encryption. You can write a 43-bit combination of numbers and letters yourself, or you can choose "randomly generated". Generally, randomly generated is enough.


After filling in, save (if it prompts that the token verification failed when saving, please confirm that the token is consistent and click several more times to save).

After saving, click "Open" next to the modified configuration.


Then, you can edit your PHP script. (If you don’t have your own domain name, you can use Sina Cloud’s free SAE, and it is best to complete the real-name authentication)

The demo script is as follows: follow the public platform (for example, after the subscription account), the function is: enter hehe and return hello world!!! If you enter other characters, return to heeh and try.


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

If you send a message, the system prompts: This public platform is temporarily unable to provide services, please try again later. Then there is probably a problem with the code syntax. Check

grammar errors and try again.

Attachment:

When a new user follows your official account, the information will be automatically returned: (Add this code to determine $keyword Before).

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

The above is the detailed content of Introduction to text automatic reply in PHP WeChat development. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn