关闭

接受微信用户发来的消息

标签: php微信服务器
124人阅读 评论(0) 收藏 举报
分类:

接受微信用户发来的消息,并将消息回显给用户

思路:

首先使用 $postStr = file_get_contents(“php://input”); 接受微信服务器发送来的XML数据;
接着使用 simplexml_load_string() 函数对接受到的XML数据包进行解析 :
  $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement’, LIBXML_NOCDATA);
然后处理接受解析后的数据,即将微信用户发来的消息回显给用户.
下面代码:

<?php

$wechatObj = new wechat_php();
$wechatObj->GetTextMsg();

class wechat_php {
    public function GetTextMsg() {
        //获取服务器POST请求中的数据
        //$postStr = $GLOBALS["HTTP_POST_DATA"];
        $postStr = file_get_contents("php://input");    //获取post数据

        if (!empty($postStr)) {
            /*
             *simplexml_load_string(string, class, option, ns, is_prefix);
             * 参数:
             *  string: 需要处理的XML字符串
             *  class: 用来指定新对象的,这里通常设置为 "SimpleXMLElement", 表示用来生成<br />一个简单的XML元素
             *  options: 指定附加的Libxml参数, 通常设置为 LIBXML_NOCDATA, 表示把CDATA<br />设置为文本节点
             *  ns: 一般省略
             *  is_prefix: 一般省略
             * 返回值:
             *  返回类 SimpleXMLElement 的一个对象,该对象的属性包括XMl的数据; 如果失败,则返回false
             */
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //把XML字符串装载到对象中

            $fromUsername = $postObj->FromUserName; //微信用户名
            $toUsername = $postObj->ToUserName; //开发者微信号
            $msgType = $postObj->MsgType;   //消息类型
            $keyword = trim($postObj->Content); //文本消息内容, 该函数作用是移除字符串两端的空白字符
            $time = time(); //返回当前unix时间戳,并格式化为日期
            //回复消息的XML格式
            $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 (strtolower($msgType) != "text") {
                $msgType = "text";  //回复消息的类型
                $contentStr = "我只接受文本消息~";  //  回复的内容
            }
            else {
                if (!empty($keyword)) {
                    $msgType = "text";
                    $contentStr = "消息内容:".$keyword."\n";
                    $contentStr = $contentStr . "ToUsername" . $toUsername . "\n";
                    $contentStr = $contentStr . "fromUsername:" . $fromUsername;
                }
                else {
                    $contentStr = "请输入关键字...";
                }
            }
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            echo $resultStr;
        }
        else {
            echo "";
            exit;
        }
    }
}
?>

将以上代码命名为 index.php 并上传到你所配置服务器的URL地址下即可.

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

微信企业号验证/发送/接收消息

1.  内网映射    由于微信企业号回调模式的URL尽支持域名方式访问,估需要注册花生壳,做一个内网穿透(需要花16块钱,购买一个免费版,购买之后,第二天才能添加上域名) 2.  微信企业号 ...
  • hichinamobile
  • hichinamobile
  • 2016-07-01 17:44
  • 7033

微信公众号开发(一)——开发模式接入,消息的接收与响应

1 想自己开一个公众号,先学习一下用 Java 进行微信公众号的开发。 微信公众号的管理有开发模式和编辑模式两种,两者是互斥的。 腾讯是这么讲的: 编辑模式:编辑模式指所有的公众...
  • shuiCSDN
  • shuiCSDN
  • 2017-05-01 20:39
  • 1223

[029] 微信公众帐号开发教程第5篇-各种消息的接收与响应

前一篇文章里我们已经把微信公众平台接口中消息及相关操作都进行了封装,本章节将主要介绍如何接收微信服务器发送的消息并做出响应。 明确在哪接收消息 从微信公众平台接口消息指南中可以了解到,当用...
  • lyq8479
  • lyq8479
  • 2013-05-21 13:56
  • 172352

Netlogo微信用户转发消息模型

  • 2017-04-17 17:58
  • 49KB
  • 下载

java微信开发API解析(六)-综合运用(消息处理、自定义菜单响应处理、用户自动分组处理;包含源码)

  • 2016-04-24 20:18
  • 858KB
  • 下载

微信开发四 接受用户普通消息与回复消息

接收用户普通消息可以在官方文档中直接看                                     普通...
  • aojiancc2
  • aojiancc2
  • 2017-04-23 15:43
  • 527

微信开发四 接受用户普通消息与回复消息

微信接收用户普通消息可以在官方文档中直接看                                    ...
  • wumingwuxin
  • wumingwuxin
  • 2017-06-23 11:46
  • 60

微信公众号消息加解密方式用于接收用户发来的消息并做回应

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * Class Wx * 微信公众号...
  • lumengabc
  • lumengabc
  • 2017-08-02 10:26
  • 424

实用的微信类,用于验证token,回复图文、文本,向用户推送消息等

auth($token, $wxuser) || exit; if(IS_GET){ echo($_GET['echostr']);
  • liuzp111
  • liuzp111
  • 2015-04-08 19:42
  • 1243

JAVA微信公众号将用户消息转发到多客服

获得多客服使用权限 认证的微信服务号可以在 “公众平台-功能-添加功能插件” 看到 “多客服” 申请入口,申请开通即
  • BuFanQi_Info
  • BuFanQi_Info
  • 2018-01-04 17:22
  • 138
    个人资料
    • 访问:825次
    • 积分:113
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档