加入收藏 | 设为首页 | 会员中心 | 我要投稿 92站长网 (https://www.92zz.com.cn/)- 语音技术、视频终端、数据开发、人脸识别、智能机器人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

教你如何用php实现简单微信文本通讯

发布时间:2023-10-04 16:32:23 所属栏目:PHP教程 来源:互联网
导读:   这篇文章主要讲解了“如何用php实现简单微信文本通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用php实
  这篇文章主要讲解了“如何用php实现简单微信文本通讯”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用php实现简单微信文本通讯”吧!
 
  一、准备工作
 
  注册开发者账号并创建应用
 
  在进入微信公众平台开发页面之前,需要有一个微信账号和一个已认证的公众号。创建公众号后需要到“开发-基本配置”页面获取公众号的AppID和AppSecret,同时在“服务器配置”中设置开发者模式的url和token。
 
  安装必要的PHP库
 
  使用PHP实现微信通讯需要安装PHP的curl扩展库和simplexml扩展库。在Linux系统下,使用命令 sudo apt-get install php-curl php-simplexml 即可进行安装。
 
  搭建开发环境
 
  使用任何一种代码编辑器搭建开发环境,建议使用PHPStorm或Sublime Text。代码中用到的URL和Token等需要与微信公众号的配置相对应。
 
  二、获取微信用户发送的文本消息
 
  在微信公众号的“服务器配置”中必须配置URL和Token,URL指向我们编写的php接收消息的处理程序,Token是与URL对应的身份验证。
 
  文本消息的接受和处理过程如下:
 
  验证消息的确来自微信服务器
 
  当用户向公众号发送消息时,在微信服务器端会将消息发送到您事先填写的URL上,如果在“服务器配置”中开启了“接收消息并打印消息加密前的XML”选项,则会马上在页面上打印出这个XML文件。以下代码就是用来验证消息是否来自微信服务器的函数。
 
  define("TOKEN", "weixin");
 
  $wechatObj = new wechatCallbackapiTest();
 
  if (!isset($_GET['echostr'])) {
 
  $wechatObj->responseMsg();
 
  } else {
 
  $wechatObj->valid();
 
  }
 
  class wechatCallbackapiTest
 
  {
 
  public function valid()
 
  {
 
  $echoStr = $_GET["echostr"];
 
  if ($this->checkSignature()) {
 
  echo $echoStr;
 
  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;
 
  }
 
  }
 
  }
 
  以上代码逻辑非常简单,当我们访问这个php处理程序时,如果访问带有echostr参数的url,会执行valid()函数。在这个函数里判断signature的值是否合法,如果合法则返回 echostr的值。如果访问的url没有echostr参数,那么直接执行 responseMsg()函数。
 
  回复文本消息
 
  回复文本消息需要在微信公众号“服务器配置”中配置URL和Token,URL指向我们编写的php处理程序,Token是与URL对应的身份验证。
 
  private function receiveText($postObj)
 
  {
 
  $content = "欢迎您关注XX公司官方微信公众号,我们会竭诚为您服务!";
 
  $fromUsername = $postObj->FromUserName;
 
  $toUsername = $postObj->ToUserName;
 
  $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>";
 
  $msgType = "text";
 
  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $content);
 
  echo $resultStr;
 
  }
 
  以上代码里的receiveText函数可以接收用户发送的文本消息,并回复固定的欢迎文字。您可以根据业务需求更改回复的文本内容。
 

(编辑:92站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章