Home > php教程 > php手册 > Text automatic reply for PHP WeChat development,

Text automatic reply for PHP WeChat development,

WBOY
Release: 2016-07-06 14:24:58
Original
1937 people have browsed it

Automatic text reply for PHP WeChat development,

First of all, go to the WeChat public platform to register an account (there are a lot of things to fill in for registration). After registration, 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, go to edit first

Modify the configuration. When modifying the configuration, please note:


The 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. For example, it is defined in your PHP script:

define("TOKEN", "my_weixin");

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

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

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

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’s best to complete real-name authentication)
The script of the demo is as follows: follow the public platform (for example, after the subscription account), the function is: enter hehe to return hello world!!! If you enter other characters, return to enter 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 == 'hehe'){
    $contentStr = 'hello world!!!';
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
    echo $resultStr;
    exit();            
   }else{
    $contentStr = '输入hehe试试';
    $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;
 }
 }
}
Copy after login

If you send a message, the system prompts: This public platform is temporarily unavailable, please try again later. Then there is probably a problem with the code syntax. Check for syntax errors and try again.

Attachment:

When a new user follows your official account, automatically return information: (Add this code before judging $keyword).

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

The above is the entire content of this article. I hope it will be helpful to everyone’s study. I also hope that everyone will support Bangke Home.

Related labels:
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template