PHP编程:微信公众号开发之文本消息自动回复php代码

前端之家收集整理的这篇文章主要介绍了PHP编程:微信公众号开发之文本消息自动回复php代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

《微信公众号开发之文本消息自动回复PHP代码》要点:
本文介绍了微信公众号开发之文本消息自动回复PHP代码,希望对您有用。如果有疑问,可以联系我们。

本文实例为大家分享PHP微信文本消息自动回复代码,供大家参考,具体内容如下PHP学习

1.PHP示例代码下载
 下载地址1:http://xiazai.jb51.net/201608/yuanma/PHPwx(jb51.net).rar
 下载地址2:https://mp.weixin.qq.com/wiki/home/index.html(开始开发-》接入指南-》PHP示例代码下载) 

微信公众号开发之文本消息自动回复php代码

2.wx_sample.PHP初始代码

<?PHP
/**
 * wechat PHP test
 */
//define your token
define("TOKEN","weixin");
$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)){
 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,the best way is to check the validity of xml by yourself */
 libxml_disable_entity_loader(true);
  $postObj = simplexml_load_string($postStr,'SimpleXMLElement',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()
 {
 // you must define TOKEN by yourself
 if (!defined("TOKEN")) {
 throw new Exception('TOKEN is not defined!');
 }
 
 $signature = $_GET["signature"];
 $timestamp = $_GET["timestamp"];
 $nonce = $_GET["nonce"];
 
 $token = TOKEN;
 $tmpArr = array($token,$timestamp,$nonce);
 // use SORT_STRING rule
 sort($tmpArr,SORT_STRING);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );
 
 if( $tmpStr == $signature ){
 return true;
 }else{
 return false;
 }
 }
}
?>

3.调用回复信息方法
 在wx_sample.PHP文件中注释掉$wechatObj->valid();,在其下增加一句“$wechatObj->responseMsg();”.

<?PHP
/**
 * wechat PHP test
 */
//define your token
define("TOKEN","weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();//接口验证
$wechatObj->responseMsg();//调用回复消息方法
class wechatCallbackapiTest
{
 public function valid()
 {
 $echoStr = $_GET["echostr"];
 //valid signature,SORT_STRING);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );
 
 if( $tmpStr == $signature ){
 return true;
 }else{
 return false;
 }
 }
}
?>

4.关键词自动回复和关注回复
 $keyword保存着用户微信端发来的文本信息.
 官方开发者文档:https://mp.weixin.qq.com/wiki/home/index.html(消息管理-》接收消息-接收事件推送-》1.关注/取消关注事件)

微信公众号开发之文本消息自动回复php代码

关注事件与一般的文本消息有两处不同,一是MsgType值是event,二是增加了Event值是subscribe.由于官方文档(最初的wx_sample.PHP)没有提取这个参数,需要我们自己提取.在程序中增加两个变量$msgType和$event.

猜你在找的微信公众号相关文章