微信自动回复图片 api标准接口的 php代码

微信自动回复图片 api标准接口的 php代码

实现的功能:客户在公众号上回复关键字,公众号自动回复一张图片

在微信开发的页面上,设置好触发的关键词,及触发后跳转到指定的接口地址,如http://www.aaa.com/picture.php

然后在网站服务器上创建picture.php文件,文件代码如下:

<?php
$wechatObj = new wechat();
$wechatObj->responseMsg();
class wechat {
        public function responseMsg() {

                //---------- 接 收 数 据 ---------- //

                $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据

                //用SimpleXML解析POST过来的XML数据
                $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);

                $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
                $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>
                <Image>
                <MediaId><![CDATA[%s]]></MediaId>
                </Image>
                <FuncFlag>0</FuncFlag>
                </xml>";

                $msgType = "image"; //消息类型
                $contentStr = '填写你上传图片的MediaID'; //返回消息内容

                //格式化消息模板
                $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
                echo $resultStr; //输出结果
        }
}
?>

这样,在微信服务号上输入对应的关键字,服务号上就会返回对应的图片。

MediaID的获取方法:
登陆微信公众平台->开发者工具->在线接口调试工具
接口类型选:基础支持
先获取access_token
access_token每次登陆都会变更

获取access_token后,接口列表选择多媒体文件上传接口
填入access_token,type选择image,media选择要回复的图片,图片上传成功后,就会返回一个MediaID,把它填入上面的代码中就可以了。

我用的如下代码。。。不知道哪里错了 PHP小白 token验证是通过的 目的是关注公众号后自动发一个图文 求助啊 正确的应该怎么写 <?php define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data $tmpstr = $postArr; //处理消息,并设置回复类型 $postObj = simplexml_load_string($postArr); if(strtolower($postObj->MsgType)=='event'){ if (strtolower($postObj->MsgType) == "text" && trim($postObj->Content == "单图文")){ $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $array = array( array( "title"=>"XXX", "description"=>"XXXXXXX", "picUrl"=>"httpXXXXn1.jpg", "url"=>"httpsXXX.com/", ), ); $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>".count($array)."</ArticleCount> <Articles>"; foreach ($array as $key => $v) { $template .= "<item> <Title><![CDATA[".$v['title']."]]></Title> <Description><![CDATA[".$v['description']."]]></Description> <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl> <Url><![CDATA[".$v['url']."]]></Url> </item>"; } $template.= "</Articles></xml>"; $time = time(); echo sprintf( $template,$toUser,$fromUser,$time,"news"); }else { echo ""; 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; } } } ?>
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页