<?php
header("Content-type: text/html; charset=utf-8"); 
$nonce = $_GET['nonce'];
$token = 'winxin';
$timestamp = $_GET['timestamp'];
if (isset($_GET['echostr'])) {
    if (bindServerCheck()) {
        echo $_GET['echostr'];
    }
    exit();
}
responseMsg();

//消息回复
function responseMsg() {
    //1.获取到微信推送过来post数据(xml格式)
    $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
    //2.处理消息类型,并设置回复类型和内容
    $postObj = simplexml_load_string($postArr, 'SimpleXMLElement', LIBXML_NOCDATA);
    //判断该数据包是否是订阅de事件推送
    if (strtolower($postObj->MsgType) == 'event') {
        //如果是关注 subscribe事件
        if (strtolower($postObj->Event) == 'subscribe') {
            $toUser = $postObj->FromUserName;
            $fromUser = $postObj->ToUserName;
            $time = time();
            $msgType = 'text';
            $content = '欢迎关注我的微信公众号 test 123';

//修改为
              if (is_utf8($content)) {
                $content = $content;
              } else {
               $content = iconv('gb2312', 'UTF-8//IGNORE', $content);
              }

$template = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
            $info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
            echo $info;
        }
    }
}

// 开发者模式绑定校验
function bindServerCheck($token) {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $tmpArr = array(
        $token,
        $timestamp,
        $nonce
    );
    sort($tmpArr);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if ($tmpStr == $signature) {
        return true;
    } else {
        return false;
    }
}

function to_utf8($in) 

        if (is_array($in)) { 
            foreach ($in as $key => $value) { 
                $out[to_utf8($key)] = to_utf8($value); 
            } 
        } elseif(is_string($in)) { 
            if(mb_detect_encoding($in) != "UTF-8") 
                return utf8_encode($in); 
            else 
                return $in; 
        } else { 
            return $in; 
        } 
        return $out; 
}

function is_utf8($str)
{
  return preg_match('//u', $str);
}

?>

微信关注 自动回复 关注消息 php相关推荐

  1. 微信公众号免开发——被关注自动回复2条消息

    微信公众号的被关注回复,只能设置一条消息.那么如何实现被关注自动回复2条消息呢?这里分享一个公众号运营实用经验,简单易学,免费,完全不需要开发,大家一边看文章,一边实操,喜欢有用记得点个赞! &quo ...

  2. 微信公众号开发之文本消息自动回复,以及系统关注自动回复,php代码

    以tshop为例 直接上代码: 企业 cc_wx_sys表为自建,存储系统消息的配置的 字段: id type key status <?php /*** tpshop* =========== ...

  3. 微信公众号-关注取消关注后图文和普通消息自动回复

    当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本.图片.图文.语音.视频. ...

  4. 如何设置微信公众号关注后自动回复多条图文链接

    对于设置微信公众号关注后自动回复多条图文链接,第三方平台微号帮提供了粉丝关注定时推送功能实现,可以设置微信公众号关注后自动回复多条图文链接,及时帮助公众号激发关注粉丝兴趣,制作需求;可以设置关注延迟推 ...

  5. 微信公众号监听 关注/取消关注事件 消息接收与响应处理(比较细微)

    从官方文档可以看出,他做到了简简单单,但没有做到明明白白. 那么接下来我首先说下文中的url,很多人都不知道这个url,其实他就是 当这些正准备好之后,直接上代码 //微信推送事件 url@Reque ...

  6. Spring项目接入微信关注/取消关注事件监控(含代码demo,自动回复图文)

    微信官方文档地址:关注/取消关注事件 | 微信开放文档 以上,文档提到:用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL,接下来我们就来看看这个URL怎么配置. [配置步骤]: ...

  7. 微信公众号实现跟关注用户进行消息的交互功能(2)实现交互功能

    一.解析微信服务器传来的消息 因为微信服务器发送过来的是xml格式的消息,所以我们可以采用 开源框架dom4j去解析xml . 所用到的jar 包是:dom4j-1.6.1.jar 官网下载地址:ht ...

  8. 一图了解App跳转微信小程序关注公众号,推送消息

    一图了解App跳转微信小程序关注公众号,推送消息:

  9. 网站通过手机微信扫码关注直接登录系统--java版

    一.场景 1.有自己的一个网站: 2.点击登录按钮后,弹出公司公众号二维码: 3.用户扫码后,若之前没有关注公众号,需要点击关注公众号,然后直接登录系统: 4.若用户扫码后,之前已经关注过公众号,则直 ...

最新文章

  1. ps aux参数说明
  2. 9.可变参数创建不可变集合
  3. SAP WM Storage Type配置界面里的Addn to Stock
  4. 特征和工具概览(SQL Server 2008)
  5. 【控制】传递函数零极点解析
  6. 2680 Problem F: Coin Game
  7. 【java学习之路】(java框架)006.springIOC
  8. 蓝桥杯刷题 -- 第六届蓝桥杯
  9. 湖南大学操作系统期末考试之英文PPT复习提纲
  10. cad刷新快捷键_实用的CAD技巧
  11. 解决可视化界面的时候灰屏【已解决】
  12. 利用Google翻译实现网站国际化——js插件
  13. B2C商城系统优势开发源码
  14. zyf sql语句
  15. 计算机word上下左右边距,Word页边距调整设置(上下左右边距,2003-2013)
  16. 双绞线传输距离_双绞线电缆施工“潜规则”
  17. Pygame实战:多年后“魂斗罗”像素风归来 不止是经典与情怀@全体成员
  18. 产品需求文档(PRD)写作(一) 写前准备(信息结构图)
  19. 树莓派 zero 通过 max31865 连接 PT100 热电阻 测量温度
  20. 颠覆平庸 在技术上持续精进

热门文章

  1. DC音乐播放器开发日记
  2. 一个月通过大学英语四级考试
  3. 将电话号码从excel导入手机联系人
  4. 迅龙数据恢复软件真的很万能
  5. java暴力破解校园网_记一次暴力爆破校园网认证密码(附源码)
  6. React学习笔记(五)之父子组件传递参数
  7. 在laravel中集成swoole,使用hhxsv5/laravel-s扩展
  8. QQ兼容android版本6,QQ浏览器6.6.1版本支持安卓7.0 支持多项新特性
  9. 玩转数据恢复之R-Studio的使用常见问题解答
  10. 7-4 集合相似度 (25 分)