0

0

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

php中文网

php中文网

发布时间:2016-05-25 16:39:16

|

2037人浏览过

|

来源于php中文网

原创

微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的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 = "
      <![CDATA[%s]]>
      
      
      
      ";
        $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['Title'], $item['Description'], $item['PicUrl'], $item['Url']);
                }
            }
        }
        $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
                    
                    
     <![CDATA[%s]]>
                    
                    
                    
                    
                    ";
        if (empty($musicContent[0]['HQMusicUrl'])) {
            $musicContent[0]['HQMusicUrl'] = $musicContent[0]['MusicUrl'];
        }
        $resultStr = sprintf($xmlMusic, $object->FromUserName, $object->ToUserName, time() , $musicContent[0]['Title'], $musicContent[0]['Description'], $musicContent[0]['MusicUrl'], $musicContent[0]['HQMusicUrl']);
        echo $resultStr;
        exit();
    }
    /*
     *上传多媒体文件接口
     *@param
     *@param array mediaArr filename、filelength、content-type
     *@return object
    */
    public function uploadMedia($accessToken, $type = 'image', $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 == 'gps') {
            $url = "http://map.yanue.net/gpsApi.php?lat=" . $lat . "&lng=" . $lng;
            $res = json_decode(file_get_contents($url));
            $map['lng'] = $res->baidu->lng;
            $map['lat'] = $res->baidu->lat;
        }
        if ($type == 'google') {
            $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['lng'] = base64_decode($res[0]->x);
            $map['lat'] = 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('possible deep recursion attack');
        }
        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, 'urlencode', true);
        $json = json_encode($array);
        return urldecode($json);
    }
    /*
     *创建菜单
     *
    */
    public function creatMenu($shop_id, $data) {
        $jsonArray = self::JSON($data);
        $AccessToken = self::accessToken($weiXin[0]['key'], $weiXin[0]['secret']);
        $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='" . $hash . "'";
        $weChast = $db->query($sql);
        $AccessToken = self::accessToken($weChast[0]['key'], $weChast[0]['secret']);
        $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('accesstoken' . $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('accesstoken' . $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, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        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 'Errno' . 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;
    }
}
?>


得推共享菜园系统
得推共享菜园系统

得推共享菜园系统是一款专门针对家共享菜园开发的,可以通过基地加盟,轻松实现共享菜园平台建设。系统可以支持wap\公众号\小程序\APP. 基本功能:基地管理、菜园分类、菜园订单、菜园维护、菜园动态等 管理后台: 1.网站设置:站点信息,支付配置,短信配置,邮箱配置等 2.账户管理:账户审核,实名认证,用户充值,黑名单等 3.订单管理:服务订单、确认、处理、退单

下载

教程网址:

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

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

53

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

13

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

8

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

3

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

4

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号