微信接口自动回复

<?php
/*
 http://fanyi.youdao.com/openapi.do?keyfrom=weifan&key=791593512&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本 
    方倍工作室 http://www.cnblogs.com/txw1958/
    CopyRight 2013 www.doucube.com  All Rights Reserved
*/
traceHttp();

define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET[‘echostr‘])) {
    $wechatObj->valid();
}else{
    $wechatObj->responseMsg();
}

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;
        }
    }

    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        //simplexml_load_string() 函数把 XML 字符串载入对象中。
        if (!empty($postStr)){
            $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>";
                        //sprintf() 函数把格式化的字符串写入一个变量中
                        //strstr() 函数搜索一个字符串在另一个字符串中的第一次出现
            if($keyword == "1")
            {
                $msgType = "text";
                $contentStr = "哈哈";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }elseif( $keyword == "A")
            {
                $msgType = "text";
                $contentStr = "OK";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }elseif( $keyword == "B")
            {
                $msgType = "text";
                $contentStr = "good";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            }else if($keyword == "fff"){
                    $msgType = "text";
                $contentStr = "asasasas!!<font color = ‘red‘>".$keyword."</font>zzzz";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
exit();

        }
        }else{
               $msgType = "text";
                $contentStr = $keyword."zzzz";
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
            exit;
        }
    }
}

function traceHttp()
{
    //“REMOTE_ADDR”:正在浏览当前页面用户的 IP 地址。 
    logger("\n\nREMOTE_ADDR:".$_SERVER["REMOTE_ADDR"].(strstr($_SERVER["REMOTE_ADDR"],‘101.226‘)? " FROM WeiXin": "Unknown IP"));
    logger("QUERY_STRING:".$_SERVER["QUERY_STRING"]);
}
function logger($log_content)
{
    if(isset($_SERVER[‘HTTP_APPNAME‘])){   //SAE
        sae_set_display_errors(false);   //
        sae_debug($log_content);   //sae_debug是保存到日志里面, 不会保存到storage里面.
        sae_set_display_errors(true);
    }else{ //LOCAL
        $max_size = 500000;
        $log_filename = "weixinlog.xml";
        if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
        file_put_contents($log_filename, date(‘Y-m-d H:i:s‘).$log_content."\r\n", FILE_APPEND);
    }
}
?>
时间: 2024-10-12 19:17:19

微信接口自动回复的相关文章

用python实现新年祝福微信的自动回复

"惦记无声,却很甘甜:问候平常,却很温暖:信任无言,却最真切:友情无形,却最珍贵:祝福简单,却常留心间!祝新春快乐!全家幸福!"每到春节,我们都会收到无数条这样的祝福微信,为了图省事也会把精彩的祝福信息群发出去,短暂的春节假期里我们不得不把大量的时间浪费在这虚情假意的客套上.忘了从哪一年开始我已经不再主动群发祝福微信了,但是收到别人群发的信息,出于礼貌还是要回复一下的.今天这篇文章就来教教大家如何用python帮助我们实现祝福微信的自动回复. 号:923414804 群里有志同道合的小

微信接口校验

1.Servlet package com.itmayiedu.servlet; import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import java.util.Map; import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Http

ecshop微信接口基础认识

ecshop微信接口基础认识,当你要学习ecshop和微信整合的时候,你就必须研究ecshop的数据结构对接以及微信数据接口的基本知识.我们知道微信其实就是通过有效的消息推送,用JSON格式的数据或者是XML格式的数据,推送到你的api上面去显示,其实就是一段XML内容.消息推送的话. ecshop和微信对接的基础接口,就是只是包含简单的消息推送接口,以及操作界面的界面定义接口,其他相关关注接口.都需要开通高级接口,论证接口才能做.发送任何消息之前,必须获取token以及验证access_tok

Force.com - 微信接口后台开发与配置

为寻找国内免费云资源作为微信后台,花了一天时间试用SinaAppEngine(SAE),调试太不方便用户体验差.新浪作为媒体公司技术功底经不起考验,亚马逊能推出AWS,新浪还不行!更好选项是百度BaiduAppEngine(BAE),但最近尽然开始收费,还是安心回到force.com,至少老外承诺免费的东西一直免费且可靠. 第一步,申请force.com账号,请至developer.force.com申请,如是www.salesforce.com申请下来的是作为客户的账号,不适合开发人员:第二步

微信接口开发之前准备工作

我是一名.net码农,最近项目需要用到微信接口开发,苦于微信官方没有.net示例,个人表示非常无解微信竟然这么无视.net的存在(让我哭会) .难道做为.net就不能开发好微信接口了吗?反问了一下,上网查了查资料,答案是否定的,也有许多大神提供很好的例子.在这里谢谢各位前辈的辛苦了(膜拜).在此,我也开始踏入了微信接口开发的工作中了,也想学习大神们的无私,特此在这里共享出我的点点滴滴,与码友一同成长. 先说说我的开发前准备吧! 1.申请注册一个公众平台(哈哈,这是必须的),如果你想要有更大更厉害

java微信接口开发java SpringMVC mybatis 后台框架 集成代码生成器开发利器

获取[下载地址]   QQ: 313596790   [免费支持更新]支持三大数据库 mysql  oracle  sqlsever   更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]A 代码生成器(开发利器);      增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成   就不用写搬砖的代码了,生成的放到项目里,可以直接运行B 阿里巴巴数据库连接池druid

java微信接口之四—上传素材

一.微信上传素材接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN 其中ACCESS_TOKEN是我们动态获取的. 发送的数据: {"articles":[ { "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXC

java微信接口之五—消息分组群发

一.微信消息分组群发接口简介 1.请求:该请求是使用post提交地址为: https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN   其中ACCESS_TOKEN是我们动态获取的.   发送的数据:(这里使用图文消息示例) { "filter":{ "group_id":"2" }, "mpnews":{ "me

java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都