微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)
上一节课,我给大家分享了微信API接入以及事件推送的回复,这是微信开发的第二节课,重点给说一说单图文回复,多图文回复,access_token,微信SDK。
公众号消息回复很多种形式,常见的形式有,文本,图片,视频,音频,图文等,常用的也就是文本,图文。文本回复上一节已经说过了,图文回复分为两种,单图文,多图文两种。其实实现的原理的一样的,只要会单图文,多图文自然也就会了。
单图文代码实现
<?php
/**
以下的代码是一个方法,接着上一节中的IndexAction.class.php类的,把以下的方法复制到上一个类中
**/
public function reposeNews(){
//获取微信用户发的信息
$object = $GLOBALS['HTPP_RAW_POST_DATA'];
//获取的数据是xml格式的,需要转换为对象的型的,这里使用simplexml_load_string()函数
$objNews = simplexml_load_string($object);
/**
微信图文回复的固定模板
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>12345678</CreateTime><MsgType>< ![CDATA[news] ]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title>< ![CDATA[title1] ]></Title> <Description>< ![CDATA[description1] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item><item><Title>< ![CDATA[title] ]></Title><Description>< ![CDATA[description] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item></Articles></xml>
**/
//设置数据,正常来说这里的数据都是来自数据库的数据调取
$arr = array(
array("title"=>"网红星闻快手","description"=>"我们不生产八卦,我们只是八卦的搬运工。","picurl"=>"http://www.souhong.wang/img/logo2.png","url"=>"http://www.baidu.com")
);
//发送数据
$toUser = $objNews->FromUserName;
$fromUser = $objNews->ToUserName;
$time = time();
//分析模板可以得出,上半部分是固定的,下半部分数据的遍历,由此我们可以把这个模板进行分拆,分拆成三块,中间那个块就是图文
$template = "<xml><ToUserName>< ![CDATA[%s] ]></ToUserName><FromUserName>< ![CDATA[%s] ]></FromUserName><CreateTime>%s</CreateTime><MsgType>< ![CDATA[news] ]></MsgType><ArticleCount>.count($arr).</ArticleCount><Articles>";
foreach($arr as $key=>$v){
$template .= "<item><Title>< ![CDATA[".$v['title']."] ]></Title> <Description>< ![CDATA[".$v['description']."] ]></Description><PicUrl>< ![CDATA[".$v['picurl']."] ]></PicUrl><Url>< ![CDAT".$v['url']."]></Url></item>";
}
$template .= "</Articles></xml>
";
if($objNews->MsgType == "text" && $objNews->content == "tuwen1"){
$info = sprintf($template,$toUser,$fromUser,$time);
echo $info;
}
}
以上代码就完成了单图文的回复了,所谓的多图文也就是多几条数据,默认第一条数据是大图,数据不能超过8条,超过8条则无响应,上面的关键字可以用swich自己设置,这样就可以多个选择了。
除了事件推送,文本,图文之外,微信公众平台还有非常多的功能,要想调用这些强大的功能就离不开一个东西,那就是access_token,这个在微信文档上叫票据,我更喜欢叫它令牌,就像古代皇帝给钦差大臣的令牌一样,持有令牌可以干好多事。要想使用access_token就先得获取access_token,获取令牌需要两个数据,一个appid,一个appsecret,这个两个参数。这两个参数上微信公众平台上面开发者模式下,已经提供了这两个数据。微信文档提供了API调用路径:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
,看到这好多同学应该知道怎么去做了,但对于很多php新手来说,可能就不知道怎么做了,这里就要用到php一个强大的工具curl,curl的具体说明这里就不详细说,看代码:
<?php
$appid = "wx37f6709f8475030assdf";//这里去自己的公众号里去取
$appsecret = "Q1mInjfJukdh8ydITbezRQAYsSTbm4ytGFGhj4S9nvP";//这里去自己的公众号里去取
$url = " https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
//使用curl进行请求,第一步初始化
$ch = curl_init();
//设置参数
curl_setopt($ch , CURLOPT_URL , $url);
curl_setopt($ch , CURLRETURNTRANSFER, 1);
//执行
$token = curl_exec($ch);
curl_close();
//微信返回的数据格式是json的,所以这里需要用的php函数json_decode
$token = json_decode($token,true);//这里记得加参数tru,否则返回的就是一个对象。
$token = $token['access_token
'];
到这里就拿到了票据access_token,拿到access_token需要注意两点,一点是token的唯一性,时效性,全局只有一个token,有效时长是2个小时,一天可以请求2000个token,这里对于我们一般的开发者足够了。
这里我们就用token获取微信服务器地址(主要是为了安全角度考虑),代码如下:
$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=
".$token;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,RETURNTRANSFER,1);
$ip = curl_exec();
curl_close();
$ip = json_decode($ip,true);
var_dump($ip['ip_list
']); //全部的微信服务器ip地址
微信SDK,好多同学可能不知道SDK是什么意思?SDK是软件开发工具包的意思,这个概念可能比较抽象,大家这里可以把SDK理解为封装了很多方法的包,把我们大家经常用的一些方法封装起来,这样就可以使我们开发起来更加的方便快捷,在TP框架中如何添加SDK呢?刚才我也说了,SDK就是封装了很多的方法,所以我们在TP框架定义一个模型,把我们微信开发常用的一些固定化的东西放到模型中去,在我们的控制器中我们就可以直接实例化使用就可以了。示例代码如下:
<?php
class IndexModel extends Model{
public function resposeMsg($object){
//固定的方法写入就可以了
}
}
以上就是这次的基本内容了,补充一点,在微信开发中如何调用第三方的API,例如查询天气,关于查询天气的API,我比较习惯去百度的APIstore或者聚合数据去查找,我这里演示用的是百度的天气查询的一个系统。
$city = "北京";
$city = urlencode($city);
$url = "http://v.juhe.cn/weather/index?format=2&cityname=".$city."&key=您申请的KEY";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,RETURNTRANSFER,1);
$tianqi = curl_exec();
curl_close();
$tianqi = json_decode($tianqi,true);
把天气的数据直接返回过用户,微信中调用第三方天气API就是这么简单。
接下来的微信开发我会讲解微信开发中的自定义菜单功能。
转载于:https://www.cnblogs.com/beili/p/8431185.html
微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)相关推荐
- 微信公众 mysql回复图片_微信公众平台开发消息回复总结介绍
一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个PO ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
- 微信公众平台开发消息回复总结
http://www.cnblogs.com/mchina/p/3364377.html 转载地址 微信公众平台开发(十) 消息回复总结 一.简介 微信公众平台提供了三种消息回复的格式,即文 ...
- 微信公众平台回复多条消息php,PHP微信公众平台开发 - 消息回复的封装_PHP教程...
[PHP微信公众平台开发系列] 01.配置微信接口 02.公众平台示例代码分析 03.订阅事件(subscribe)处理 04.简单回复功能开发 05.天气预报功能开发 06.翻译功能开发 07.聊天 ...
- 《微信公众平台开发最佳实践》—— 1.3 微信公众平台的使用
本节书摘来异步社区<微信公众平台开发最佳实践>一书中的第1章,第1.3节,作者:方倍工作室,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.3 微信公众平台的使 ...
- 微信公众平台开发(PHP)(二) 微信公众平台示例代码分析
一.摘要 微信公众平台提供了一个简单的php示例代码,在做进一步开发之前,我们有必要将其详细了解一下. 二.获取代码 微信官网:http://mp.weixin.qq.com/mpres/htmled ...
- Java微信公众平台开发(四)--回复消息的分类及实体的创建
转自:http://www.cuiyongzhi.com/post/42.html 前面有说道对接收到微信服务器消息后对消息的分类,当时主要分为普通消息和事件消息,这里我们要讲述的是我们在给用户回复的 ...
- 第一篇:微信公众平台开发实战Java版之了解微信公众平台基础知识以及资料准备...
相信很多人或多或少听说了微信公众平台的火热.但是开发还是有一点门槛,鉴于挺多朋友问我怎么开发,问多了,自己平时也进行以下总结. 所以下面给大家分享一下我的经验: 第一部分 介绍微信公众号的一些简单 ...
- 微信公众平台开发问答 【转发】
微信公众平台开发问答 微信公众平台开发问答是一个微信知识问答区,专注于提供微信应用及开发技术知识的整理.归类和检索. 主题:新手常见问题 问:我是新手,没有开发基础,应该如何学习微信公众平台的开发? ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装...
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
最新文章
- python练手小游戏_Python小游戏练手EMS员工项目自学者练习
- Kubernetes Pod的生命周期(Lifecycle)
- 15.1 自定义分词器
- 一个html文档的文件主题,HTML清单
- poj 1935(搜索+回溯)
- Python比对指定目录下的Excel数据(附源码)
- 2016 Multi-University Training Contest 3
- 领域应用 | 企业效益最大化的秘密:知识图谱
- JMETER badboy 录制脚本
- php redis主从自动切换,Redis 集群的主从切换
- bzoj 1207: [HNOI2004]打鼹鼠【dp】
- 全栈项目-乐优商场-通用工具服务-通用异常处理
- java打印日历至Excel_如何利用Excel打印漂亮的工作日历
- 商场抽奖软件 android,召唤抽奖系统
- 【Android应用开发技术:媒体开发】音频
- 荒野今天维护服务器吗,荒野行动1月29日为什么无法登录原因 今天停服更新维护吗?...
- 诚信,是一个庄严的承诺
- 字节跳动校招笔试题汇总
- 怎么一心多用高效处理工作琐事?用敬业签同时处理多个任务
- JVM成神之路-JVM引用模型
热门文章
- Atitit 学历的类型大总结 目录 1. 学历的分类	2 1.1. 按照组织性质,分类为立法系统 政府系统 司法系统 部落级别 企业级别商业系统 宗教系统 个人级别	2 1.2. 按照地域性质,
- Atitit 技术趋势的管理之道 attilax著 1. 技术趋势 即是新特性	3 1.1. 几个大趋势	3 1.2. 可读性大于性能趋势	3 2. 趋势来源渠道	4 2.1. 技术趋势Thought
- Atitit uke签名规范 与防伪鉴别 attilax总结
- Atitit.wrmi web rmi框架新特性
- Atitit.java jna 调用c++ dll 的总结
- Atitit 《摩奴法典》overivew 读后感 不是由国王 颁布的,而是 僧侣编制
- atitit.验证码识别step4--------图形二值化 灰度化
- Atitit.Gui控件and面板----web server区----- web服务器监控面板and控制台条目
- 解读畅捷通微服务治理能力提升之路
- 单片机奇偶交替闪烁_自学单片机第十三篇中:单点交替