课程大纲

  • 详解微信界面交互接口和订阅事件推送
  • access_token的作用和使用方法
  • 通过“天气查询”实例来熟悉基础接口的使用

事件推送

定义:微信公众平台推送消息到第三方服务器

开发环境搭建

关注事件推送:

<?php
/** 接受事件推送并回复* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454* 关注*/
//1.获取到微信推送过来的post过来的数据(XML格式)
/*
<xml>
<ToUserName>< ![CDATA[toUser] ]></ToUserName>
<FromUserName>< ![CDATA[FromUser] ]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType>< ![CDATA[event] ]></MsgType>
<Event>< ![CDATA[subscribe] ]></Event>
</xml>
*/
$postArr = file_get_contents('php://input');
//2.处理消息类型,并设置回复类型和内容
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
//3/判断该数据报是否是订阅的事件推送
if(strtolower($postObj->MsgType) == 'event') {//订阅/取消订阅事件//关注if(strtolower($postObj->Event) == 'subscribe'){//回复用户消息,文本回复,文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543,还有其他回复消息方式,自行测试$toUser = $postObj->FromUserName;$fromUser = $postObj->ToUserName;$time = time();$MsgType = 'text';$Content = 'Welcome To Jason World';/*<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>12345678</CreateTime><MsgType>< ![CDATA[text] ]></MsgType><Content>< ![CDATA[你好] ]></Content></xml>*///组装XML字符串给微信$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$info = sprintf($template,$toUser,$fromUser,$time,$MsgType,$Content);echo $info;}
}

消息回复的类型

  • 纯文本
  • 单图文
  • 多图文

实例

纯文本:

<?php
//文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543,还有其他回复消息方式,自行测试
$postArr = file_get_contents('php://input');
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
if(strtolower($postObj->MsgType) == 'text') {//用户输入的文字信息/*** 文本消息*/switch ($postObj->Content){//用户输入的关键字case "T1":$Content = "我是文本1";break;case "T2":$Content = "我是文本2";break;case "T3":$Content = "<a href='www.baidu.com'>百度</a>";break;default:$Content = "其他文本消息";}$ToUserName = $postObj->FromUserName;$FromUserName = $postObj->ToUserName;$CreateTime = time();$MsgType = 'text';//文本消息$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Content);echo $info;
}

单图文或者多图文:

<?php
//文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543,参考:回复图文消息
$postArr = file_get_contents('php://input');
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
if(strtolower($postObj->MsgType) == 'text') {//用户输入的文字信息/*** 单图文消息或者多图文* PS:图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200* PS:单图文才会显示图片的“描述”信息,多图文不显示* PS:多图文发送时,子图文不能超过8个*/if(trim($postObj->Content) == "tuwen1") {file_put_contents("2.log",$postObj->ToUserName);$ToUserName   = $postObj->FromUserName;$FromUserName = $postObj->ToUserName;$CreateTime   = time();$MsgType      = 'news';//图文消息$arr = [['Title' => '标题1','Description' => '描述1','PicUrl' => 'http://bull.smallzhou.cn/wx_1.jpg','Url' => 'www.baidu.com'],['Title' => '标题2','Description' => '描述2','PicUrl' => 'http://bull.smallzhou.cn/wx_2.jpg','Url' => 'www.sina.cn'],['Title' => '标题3','Description' => '描述3','PicUrl' => 'http://bull.smallzhou.cn/wx_3.jpg','Url' => 'www.sucaihuo.com']];$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><ArticleCount>".count($arr)."</ArticleCount><Articles>";foreach ($arr as $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>";$info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType);file_put_contents("1.log",$info);echo $info;}
}

access_token与appid,appsecret的关系

①appid + appsecret 获取access_token
②access_token唯一有效性,时间为2小时,获取新access_token原access_token几秒内将失效

全局有效性

流程:通过appid和appsecret获取access_token保存数据库,调用接口时带上access_token,失效时,重新用appid和appsecret获取access_token并保存于数据库

微信开放接口

  • access_token
  • 微信服务器地址

获取access_token:

<?php
/*** 获取access_token* https请求方式: GET* https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183* PS:需要去微信平台设置Ip白名单*/
//1.初始化
$ch = curl_init();
//2.设置参数
$appId = "wx0016e74682eb2c09";
$appSecret = "07e766de4bd26503b8f8c1a4db07a17d";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//3.执行
$outPut = curl_exec($ch);
//4.关闭
curl_close($ch);
if(curl_errno($ch)){var_dump(curl_errno($ch));
}
var_dump(json_decode($outPut,true));

获取微信服务器IP地址:

<?php
/*** 获取微信服务器IP地址* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140187* http请求方式: GET* https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN* 作用:安全监测,监测是否请求来至于微信*/
//1.初始化
$ch = curl_init();
//2.设置参数
$access_token = "11_gUbWrkeL6Mq68V6fsCzbZWmxkvRRpn-lzvcuEcdQSLTJNRiM1tyiYsQu3lrwmZWCpaBq7whYbrl7YgJmiw0LAz0ENq2dp2VI0QsOQnLz52nRvbrT3K6oBfhZZzkhORte5cMDGV-KCFStiIDGUIIhAAAGUU";
$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=" . $access_token;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//3.执行
$outPut = curl_exec($ch);
//4.关闭
curl_close($ch);
if(curl_errno($ch)){var_dump(curl_errno($ch));
}
print_r(json_decode($outPut,true));

阿里云接口地址

https://market.aliyun.com/data?accounttraceid=c83f9881-4bab-4091-8098-c749bd365653

第三方API在微信中的实现

天气查询:

<?php
$postArr = file_get_contents('php://input');
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
if(strtolower($postObj->MsgType) == 'text') {//用户输入的文字信息$host = "https://ali-weather.showapi.com";$path = "/day15";$method = "GET";$appcode = "bbc29e80425e4b1ea2581339a53e8116";//你自己的AppCode$headers = array();array_push($headers, "Authorization:APPCODE " . $appcode);$area = urlencode($postObj->Content);$querys = "area=".$area."&areaid=";$url = $host . $path . "?" . $querys;$curl = curl_init();curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);curl_setopt($curl, CURLOPT_FAILONERROR, false);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_setopt($curl, CURLOPT_HEADER, true);if (1 == strpos("$".$host, "https://")){curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);}$data = json_decode(curl_exec($curl),true);$fiftheenWeatherDayArr = $data['showapi_res_body']['dayList'];$Content = "天气预报:\n"."地区:".$fiftheenWeatherDayArr[0]['area']."\n"."预报日期:".$fiftheenWeatherDayArr[0]['daytime']."\n"."白天天气:".$fiftheenWeatherDayArr[0]['day_weather']."\n"."白天最高温度:".$fiftheenWeatherDayArr[0]['day_air_temperature']."\n"."白天风力:".$fiftheenWeatherDayArr[0]['day_wind_power']."\n"."白天风向:".$fiftheenWeatherDayArr[0]['day_wind_direction']."\n"."晚上天气:".$fiftheenWeatherDayArr[0]['night_weather']."\n"."晚上最低温度:".$fiftheenWeatherDayArr[0]['night_air_temperature']."\n"."晚上风力:".$fiftheenWeatherDayArr[0]['night_wind_power']."\n"."晚上风向:".$fiftheenWeatherDayArr[0]['night_wind_direction']."\n";$ToUserName = $postObj->FromUserName;$FromUserName = $postObj->ToUserName;$CreateTime = time();$MsgType = 'text';//文本消息$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$info = sprintf($template,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Content);echo $info;
}

微信公众平台--提升篇相关推荐

  1. 微信公众平台消息管理与群发图文教程

    微信公众平台教程全集 1.    微信公众平台注册与认证图文教程分享 2.    微信公众平台消息管理与群发图文教程 3.    微信公众平台素材编辑与自动回复图文教程 4.    微信公众平台开发模 ...

  2. python开发微信订阅号如何申请_基于Python的微信公众平台二次开发(Python常用框架、订阅号开发、公众号开发)...

    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家,都已经开始搭建微信公众平台,微信的作用已经被各界人士认可.微信公众平台的技术需求市场缺口巨大.同时python ...

  3. 微信公众平台实战开发视频下载

    视频下载地址:http://pan.baidu.com/s/1jG7fhGE    深入浅出微信公众平台实战开发(微网站.LBS云.Api接口调用.服务号高级接口)  本课程按知识点划分,共100小节 ...

  4. 深入浅出微信公众平台实战开发(微网站、LBS云、Api接口调用、服务号高级接口)

    本课程按知识点划分,共100小节,每小节时间不等,请学员注意! 一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景 微信公众平台的火热程度已经不用多言,无论是个人还是企业,政府还是商家 ...

  5. 深入浅出微信公众平台实战开发(一)

    <深入浅出微信公众平台实战开发(微网站.LBS云.Api接口调用.服务号高级接口)> 课程讲师:易伟 课程分类:PHP 适合人群:初级 课时数量:16课时 用到技术:Api接口调用.lbs ...

  6. PHP实现微信公众平台开发---提升篇(上传素材并回复)

    一.HTTP接收事件订阅与恢复响应消息 i. 接收事件推送 并回复 1. 无连接:当用户关注微信公众账号的时候  微信公众平台会向我们推送post请求  关注推送的并不是数组  而是XML 2. 接收 ...

  7. 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发

    本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixi ...

  8. Java微信公众平台开发--番外篇,对GlobalConstants文件的补充

    转自:http://www.cuiyongzhi.com/post/63.html 之前发过一个[微信开发]系列性的文章,也引来了不少朋友观看和点评交流,可能我在写文章时有所疏忽,对部分文件给出的不是 ...

  9. 微信公众平台开发教程第22篇-如何保证access_token长期有效

    技术交流请加QQ群:Jeewx微信开发④[289709451] 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用 ...

最新文章

  1. html地图自动适合窗口,【整理】用html和javascript实现类似百度地图的画布
  2. 中软国际入职java考核_中软国际技术人员入职试题2(Java)
  3. sdut-oj-4205-寻找关键点
  4. linux中运行.pro文件,Linux下pro*c运行配置
  5. 【系统】CentOS、Ubuntu、Debian三个linux比较异同
  6. 大数据之-Hadoop3.x_MapReduce_HashPartitioner分区---大数据之hadoop3.x工作笔记0111
  7. (不用vip)不能复制百度文库内容解决方法
  8. Mariadb 安装 启动 及错误 1067 问题解决
  9. LTE中阻塞干扰,杂散干扰,邻信道干扰,交调干扰,加性噪声干扰分析
  10. 华为服务器pe安装系统教程视频教程,小U讲解华为电脑u盘重装系统win8教程
  11. 2022年国内各安卓应用市场上传教程
  12. 关于网站被挂马的症状以及处理解决方法
  13. 关于三菱触摸屏GT Designer3 仿真软件创建工程
  14. mysql sniffer 源码_MySQL 抓包工具 - MySQL Sniffer 使用小结 (含带general_log日志)
  15. linux电脑系统桌面文件怎么恢复出厂设置密码,树莓派如何恢复LXPanel面板默认设置-恢复出厂设置英文...
  16. {ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:,
  17. (附源码)Python云顶之弈数据分析系统 毕业设计451545
  18. 点到直线的垂直交点坐标 和 距离计算
  19. 先红雪后绿毒:iPad4.2.1越狱从不完美变为完美了
  20. 关于c3p0连接池使用xml配置出现的一些错误

热门文章

  1. 一款比较强悍的存储性能分析工具(未完待续)
  2. 树莓派I2C发送大数据的坑 lattice crosslink配置
  3. C 编译器隐式函数声明(Implicit function declarations in C)
  4. RocketMQ 使用
  5. 一个人的旅游(十一、成都、九寨沟)
  6. 小程序地图标点,h5腾讯地图标点,vue使用腾讯地图,腾讯地图自定义图标
  7. 量子计算需熬十年冷 “BATH”提前大搞军备竞赛?
  8. MySQL-02-MySQL架构
  9. android 权限录音权限检测
  10. 国外超级计算机园区,探秘全球最强超级计算机“神威 太湖之光”