热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信公众号开发之微信公共平台消息回复类

微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,下面给各位分享一个。初次接触的时候写的一些,有点乱…也没去整理…ps—最近都不想工作了,各种烦...
微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,下面给各位分享一个。

初次接触的时候写的一些,有点乱…也没去整理…

ps—最近都不想工作了,各种烦,午饭也没吃,就是想表达一下我过的不好。—请忽略个人情绪往下看。


                  
                  
                  %s
                  
                  
                  %d
                  ";
        $resultStr = sprintf($xmlText, $object->FromUserName, $object->ToUserName, time() , $content, $flag);
        echo $resultStr;
        exit();
    }
    /*
     *图片消息回复
     *@param array object
     *@param string url
     *@return string
    */
    public function resImage($object, $media_id) {
        $xmlImage = "";
        $xmlImage.= "";
        $xmlImage.= "";
        $xmlImage.= "%s";
        $xmlImage.= "";
        $xmlImage.= "";
        $xmlImage.= "";
        $resultStr = sprintf($xmlImage, $object->FromUserName, $object->ToUserName, time() , $media_id);
        echo $resultStr;
        exit();
    }
    /*
     *图文消息回复
     *@param array object
     *@param array newsData 二维数组 必须包含[Title][Description][PicUrl][Url]字段
     *@return string
    */
    public function resNews($object, $newsData = array()) {
        $CreateTime = time();
        $FuncFlag = 0;
        $newTplHeader = "
        FromUserName}]]>
        ToUserName}]]>
        {$CreateTime}
        
        
        %s";
        $newTplItem = "
      
      
      
      
      ";
        $newTplFoot = "
      %s
      ";
        $COntent= '';
        $itemsCount = count($newsData);
        $itemsCount = $itemsCount <10 ? $itemsCount : 10; //微信公众平台图文回复的消息一次最多10条
        if ($itemsCount) {
            foreach ($newsData as $key => $item) {
                if ($key <= 9) {
                    $Content.= sprintf($newTplItem, $item[&#39;Title&#39;], $item[&#39;Description&#39;], $item[&#39;PicUrl&#39;], $item[&#39;Url&#39;]);
                }
            }
        }
        $header = sprintf($newTplHeader, 0, $itemsCount);
        $footer = sprintf($newTplFoot, $FuncFlag);
        echo $header . $Content . $footer;
        exit();
    }
    /*
     *音乐消息回复
     *@param array object
     *@param array musicContent 二维数组 包含[Title][Description][MusicUrl][HQMusicUrl]字段
     *@return string
    */
    public function resMusic($object, $musicCOntent= array()) {
        $xmlMusic = "
                    
                    
                    %s
                    
                    
     
                    
                    
                    
                    
                    ";
        if (empty($musicContent[0][&#39;HQMusicUrl&#39;])) {
            $musicContent[0][&#39;HQMusicUrl&#39;] = $musicContent[0][&#39;MusicUrl&#39;];
        }
        $resultStr = sprintf($xmlMusic, $object->FromUserName, $object->ToUserName, time() , $musicContent[0][&#39;Title&#39;], $musicContent[0][&#39;Description&#39;], $musicContent[0][&#39;MusicUrl&#39;], $musicContent[0][&#39;HQMusicUrl&#39;]);
        echo $resultStr;
        exit();
    }
    /*
     *上传多媒体文件接口
     *@param
     *@param array mediaArr filename、filelength、content-type
     *@return object
    */
    public function uploadMedia($accessToken, $type = &#39;image&#39;, $mediaArr) {
        $url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=" . $accessToken . "&type=" . $type;
        $doPost = self::curlPost($mediaArr, $url);
        return $doPost;
    }
    /*
     *GPS,谷歌坐标转换成百度坐标
     *@param lnt
     *@param lat
     *@return array
    */
    public function mapApi($lng, $lat, $type) {
        $map = array();
        if ($type == &#39;gps&#39;) {
            $url = "http://map.yanue.net/gpsApi.php?lat=" . $lat . "&lng=" . $lng;
            $res = json_decode(file_get_contents($url));
            $map[&#39;lng&#39;] = $res->baidu->lng;
            $map[&#39;lat&#39;] = $res->baidu->lat;
        }
        if ($type == &#39;google&#39;) {
            $url = "http://api.map.baidu.com/ag/coord/convert?from=2&to=4&mode=1&x=" . $lng . "&y=" . $lat;
            $res = json_decode(file_get_contents($url));
            $map[&#39;lng&#39;] = base64_decode($res[0]->x);
            $map[&#39;lat&#39;] = base64_decode($res[0]->y);
        }
        return $map;
    }
    /**************************************************************
     *
     *  使用特定function对数组中所有元素做处理
     *  @param  string  &$array     要处理的字符串
     *  @param  string  $function   要执行的函数
     *  @return boolean $apply_to_keys_also     是否也应用到key上
     *  @access public
     *
     *************************************************************/
    public function arrayRecursive(&$array, $function, $apply_to_keys_also = false) {
        static $recursive_counter = 0;
        if (++$recursive_counter > 1000) {
            die(&#39;possible deep recursion attack&#39;);
        }
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                self::arrayRecursive($array[$key], $function, $apply_to_keys_also);
            } else {
                $array[$key] = $function($value);
            }
            if ($apply_to_keys_also && is_string($key)) {
                $new_key = $function($key);
                if ($new_key != $key) {
                    $array[$new_key] = $array[$key];
                    unset($array[$key]);
                }
            }
        }
        $recursive_counter--;
    }
    /**************************************************************
     *
     *  将数组转换为JSON字符串(兼容中文)
     *  @param  array   $array      要转换的数组
     *  @return string      转换得到的json字符串
     *  @access public
     *
     *************************************************************/
    public function JSON($array) {
        self::arrayRecursive($array, &#39;urlencode&#39;, true);
        $json = json_encode($array);
        return urldecode($json);
    }
    /*
     *创建菜单
     *
    */
    public function creatMenu($shop_id, $data) {
        $jsOnArray= self::JSON($data);
        $AccessToken = self::accessToken($weiXin[0][&#39;key&#39;], $weiXin[0][&#39;secret&#39;]);
        $MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $AccessToken;
        return self::curlPost($jsonArray, $MENU_URL);
    }
    /*
     *客服消息回复
     *@param array jsonArray Array {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}
     *@return string
    */
    public function customService($jsonArray, $hash) {
        if (empty($jsonArray)) {
            return false;
        }
        $db = M();
        $sql = "select * from bbc_wechats where hash=&#39;" . $hash . "&#39;";
        $weChast = $db->query($sql);
        $AccessToken = self::accessToken($weChast[0][&#39;key&#39;], $weChast[0][&#39;secret&#39;]);
        $TokenUrl = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $AccessToken;
        $CustomRes = self::curlPost($jsonArray, $TokenUrl);
        return $CustomRes;
    }
    /*
    
    *获取access_token
    *@return objectStr
    */
    public function accessToken($appid, $secret) {
        $access_token = BBCcache::getCache(&#39;accesstoken&#39; . $appid);
        if ($access_token) {
            $AccessTokenRet = $access_token;
        } else {
            $TookenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
            $AccessTokenRes = @file_get_contents($TookenUrl);
            $AccessToken = json_decode($AccessTokenRes);
            $AccessTokenRet = $AccessToken->access_token;
            BBCcache::setCache(&#39;accesstoken&#39; . $appid, $AccessToken->access_token, 3600);
        }
        return $AccessTokenRet;
    }
    /*
     *向远程接口POST数据
     *@data Array {"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}
     *@return objectArray
    */
    public function curlPost($data, $url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_USERAGENT, &#39;Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)&#39;);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $info = curl_exec($ch);
        if (curl_errno($ch)) {
            echo &#39;Errno&#39; . curl_error($ch);
        }
        curl_close($ch);
        return json_decode($info);
    }
    //根据经纬度计算距离和方向
    function getRadian($d) {
        return $d * M_PI / 180;
    }
    function getDistance($lat1, $lng1, $lat2, $lng2) {
        $EARTH_RADIUS = 6378.137; //地球半径
        $lat1 = getRadian($lat1);
        $lat2 = getRadian($lat2);
        $a = $lat1 - $lat2;
        $b = getRadian($lng1) - getRadian($lng2);
        $v = 2 * asin(sqrt(pow(sin($a / 2) , 2) + cos($lat1) * cos($lat2) * pow(sin($b / 2) , 2)));
        $v = round($EARTH_RADIUS * $v * 10000) / 10000;
        return $v;
    }
}
?>


教程网址:

欢迎收藏∩_∩但请保留本文链接。

推荐阅读
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
author-avatar
辽宁何氏医学院高明月
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有