Heim  >  Artikel  >  WeChat-Applet  >  Entwicklung eines öffentlichen WeChat-Kontos in PHP (3) PHP implementiert eine einfache WeChat-Textkommunikation

Entwicklung eines öffentlichen WeChat-Kontos in PHP (3) PHP implementiert eine einfache WeChat-Textkommunikation

黄舟
黄舟Original
2018-05-15 16:28:561979Durchsuche

Vor der WeChat-Entwicklung müssen Sie ein Token festlegen. Dieses wird von WeChat festgelegt und kann beliebig festgelegt werden, um die WeChat-Kommunikation zu implementieren. Hier ist eine WeChat-Klasse, die von jemand anderem geschrieben wurde und ziemlich gute Funktionen hat. Der Code weixin.class.php lautet wie folgt:

<?php
class Weixin
{
 public $token = &#39;&#39;;//token
 public $debug = false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据
 public $setFlag = false;
 public $msgtype = &#39;text&#39;; //(&#39;text&#39;,&#39;image&#39;,&#39;location&#39;)
 public $msg = array();
 
 public function __construct($token,$debug)
 {
 $this->token = $token;
 $this->debug = $debug;
 }
//获得用户发过来的消息(消息内容和消息类型 )
 public function getMsg()
 {
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 
 if (!empty($postStr)) {
  $this->msg = (array)simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);
  $this->msgtype = strtolower($this->msg[&#39;MsgType&#39;]);
 }
 }
//回复文本消息
 public function makeText($text=&#39;&#39;)
 {
 $CreateTime = time();
 $FuncFlag = $this->setFlag ? 1 : 0;
 $textTpl = "<xml>
  <ToUserName><![CDATA[{$this->msg[&#39;FromUserName&#39;]}]]></ToUserName>
  <FromUserName><![CDATA[{$this->msg[&#39;ToUserName&#39;]}]]></FromUserName>
  <CreateTime>{$CreateTime}</CreateTime>
  <MsgType><![CDATA[text]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  <FuncFlag>%s</FuncFlag>
  </xml>";
 return sprintf($textTpl,$text,$FuncFlag);
 }
 
//根据数组参数回复图文消息
 public function makeNews($newsData=array())
 {
 $CreateTime = time();
 $FuncFlag = $this->setFlag ? 1 : 0;
 $newTplHeader = "<xml>
  <ToUserName><![CDATA[{$this->msg[&#39;FromUserName&#39;]}]]></ToUserName>
  <FromUserName><![CDATA[{$this->msg[&#39;ToUserName&#39;]}]]></FromUserName>
  <CreateTime>{$CreateTime}</CreateTime>
  <MsgType><![CDATA[news]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  <ArticleCount>%s</ArticleCount><Articles>";
 $newTplItem = "<item>
  <Title><![CDATA[%s]]></Title>
  <Description><![CDATA[%s]]></Description>
  <PicUrl><![CDATA[%s]]></PicUrl>
  <Url><![CDATA[%s]]></Url>
  </item>";
 $newTplFoot = "</Articles>
  <FuncFlag>%s</FuncFlag>
  </xml>";
 $Content = &#39;&#39;;
 $itemsCount = count($newsData[&#39;items&#39;]);
 $itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公众平台图文回复的消息一次最多10条
 if ($itemsCount) {
  foreach ($newsData[&#39;items&#39;] as $key => $item) {
  if ($key<=9) {
   $Content .= sprintf($newTplItem,$item[&#39;title&#39;],$item[&#39;description&#39;],$item[&#39;picurl&#39;],$item[&#39;url&#39;]);
  }
  }
 }
 $header = sprintf($newTplHeader,$newsData[&#39;content&#39;],$itemsCount);
 $footer = sprintf($newTplFoot,$FuncFlag);
 return $header . $Content . $footer;
 }
 public function reply($data)
 {
 
 echo $data;
 }
 public function valid()
 {
 if ($this->checkSignature()) {
  if( $_SERVER[&#39;REQUEST_METHOD&#39;]==&#39;GET&#39; )
  {
  echo $_GET[&#39;echostr&#39;];
  exit;
  }
 }else{
  
  exit;
 }
 }
 private function checkSignature()
 {
 $signature = $_GET["signature"];
 $timestamp = $_GET["timestamp"];
 $nonce = $_GET["nonce"];
 
 $tmpArr = array($this->token, $timestamp, $nonce);
 sort($tmpArr);
 $tmpStr = implode( $tmpArr );
 $tmpStr = sha1( $tmpStr );
 
 if( $tmpStr == $signature ){
  return true;
 }else{
  return false;
 }
 }
 
}
?>

Anschließend wird die Baidu-SVN-Adresse zum Erstellen der Datei weixinapi.php verwendet. Diese wird entsprechend Ihrer Hintergrundeinstellung benannt.

<?php
define("TOKEN", "");
define(&#39;DEBUG&#39;, false);
include_once(&#39;weixin.class.php&#39;);
require_once("db.php");
  
$weixin = new Weixin(TOKEN,DEBUG);//实例化
$weixin->getMsg();
$type = $weixin->msgtype;//消息类型
$keyword = $weixin->msg[&#39;Content&#39;];//获取的文本
if ($type===&#39;text&#39;) {
$reply = $weixin->makeText($key);
}elseif($type===&#39;event&#39;){//第一次关注推送事件
 $reply = $weixin->makeText("欢迎关注");
}else{//其他类型
$reply = $weixin->makeText("暂时没有图片,声音,地理位置等功能,后续开发会增加,感谢你关注");
}

$weixin->reply($reply);

Auf diese Weise wird ein Beispiel implementiert. Konzentrieren Sie sich hier zunächst auf Ereignisantworten, Nicht-Text-Antworten und Textantworten.
Die spezifischen Implementierungsfunktionen werden in der Textantwort beschrieben.
Andere Funktionen werden vorerst nicht implementiert und die konkrete Entwicklung wird im nächsten Abschnitt besprochen.

Das Obige ist der Inhalt der PHP-WeChat-Entwicklung für öffentliche Konten (3) PHP zur Implementierung einer einfachen WeChat-Textkommunikation. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). )!

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