微信开发源码之自动回复消息
白羽 2018-06-20 来源 :网络 阅读 1627 评论 0

摘要:本文将带你了解微信开发源码之自动回复消息,希望本文对大家学微信有所帮助。



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;
        }
    }
 
/* 接受请求 */
    public function responseMsg()
    {
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
                libxml_disable_entity_loader(true);
               $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);
$result = self::receivemsg($postObj, $RX_TYPE);
self::log($postObj);
        }else {
         echo "";
         exit;
        }
    }
/* 写入日志 */
public function log($postObj, $content=''){
@$fp = fopen("log.html","a"); 
if(empty($content)){
$fileData = '时间:'.date('Y-m-d H:i:s', time()).' 请求类型:'.$postObj->MsgType.' 事件:'.$postObj->Event.' 开发者:'.$postObj->ToUserName.' 发送方帐号:'.$postObj->FromUserName.'</br>';
}else{
$fileData = '时间:'.date('Y-m-d H:i:s', time()).' 内容:'.$content.'</br>';
}
fwrite($fp,$fileData); 
fclose($fp); 
}
/* 自动文本回复 
 * 请求类型:$postObj->MsgType
 * 请求事件:$postObj->Event
 * 开发者:$postObj->ToUserName
 * 回复账号OpenID:$postObj->FromUserName
 */
private function receivemsg($postObj, $RX_TYPE='text'){
        $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";
if($postObj->Event == "subscribe"){
$keyword = 'content_subscribe';
}elseif($postObj->Event == "unsubscribe"){
$keyword = 'content_unsubscribe';
}else{
$keyword = trim($postObj->Content);
if(empty($keyword)){
$keyword = 'content_kong';
}
}
$url = "//*****/msg.php?keyword=$keyword";
$contentStr = file_get_contents($url);
$contentStr = $contentStr.','.$postObj->MsgType;    
        $resultStr = sprintf($textTpl, $postObj->FromUserName, $postObj->ToUserName, time(), $msgType, $contentStr);
        echo $resultStr;
}
/* 验证方法 */
private function checkSignature()
{
        if (!defined("TOKEN")) {
            throw new Exception('TOKEN is not defined!');
        }
        
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
          
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
微信的接口文件 wx_sample.php
<?php// 晕大海 2014.09.26
header("Content-type: text/html; charset=utf-8");
$keyword = $_GET["keyword"];
$wechatObj = new msg();
$wechatObj->index($keyword);
class msg{
public function index($keyword)
    {
$contentStr = "Welcome to wechat world!";
if($keyword == '1'){
$contentStr = '成功了';
}elseif($keyword == '2'){
$contentStr = '你很二';
}elseif($keyword == '你好'){
$contentStr = '222222';
}elseif($keyword == 'content_subscribe'){
$contentStr = '欢迎关注';
}elseif($keyword == 'content_unsubscribe'){
$contentStr = '';
}
echo $contentStr;
    }
}

通过关键词返回不同信息文件 msg.php

时间:2014-09-26 23:10:14 请求类型:text 事件: 开发者:发送方帐号:</br>

日志文件,log.html 方面记录接口的问题


 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved