微信公众号开发调试指南,面对微信公众平台在各行业的广泛使用,当然了需要对微信公众号进行开发的客户数越来越多了,作为专业的网络公司的微信开发技术而言,肯定需要完全掌握微信公众平台开发全套技术规范的,不然怎么给客户讲解和开发呢,接下爱来我们来详细的看看微信公众平台开发需要调用那些接口和开发那些功能呢?
近日,公众号有很多朋友留言,需要微信公众号开发和微信支付相关的文章。近日来工作较多,但仍然要为大家提供有价值的内容。依照常规,此次为各位奉上尽可能的完整方案。
关于公众号
申请公众号的URL为:https://mp.weixin.qq.com
微信公众号分为如下三类:
公众号分类本质其实就是权限不同。
测试号申请
一些开发人员急于开发,以为需要在真实环境下调试。其实微信提供了测试环境,或者称Sandbox沙箱。
地址为:https://mp.weixin.qq.com/wiki
申请菜单如下网页界面:
微信公众平台接口测试申请页面如下界面:
通过扫描二维码后,点击手机屏幕上的【确认登录】
网页自动进入如下界面:
微信工作流程:
Access Token
Access_token是微信公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
如何获取Access Token,来看如下界面
我们通过PHP来获取Access Token,使用curl函数库(参见以下代码)
生成二维码
第一步我们生成ticket:
第二步用ticket换取二维码
接入校验
找到下载位置进行下载:
使用下载的样本文件,修改其中的TOKEN常量,这个校验只是第一次接入微信平台使用。
以后修改使用该文件中的responseMsg方法就可以完成和微信用户的交互。
我们的服务器通过微信平台发送的XML文档中的MsgType判断微信用户发送的消息类型。
制作聊天机器人
分析聊天网站的数据传送方式如下之界面:
分析网站的提交数据的格式及返回数据。分析结果体现在方法 _doText中的如下部分:
'requestText='.$postObj->Content.'&sysNum=4c349791a07b46c1a70b8ac88aa23257&uid=ea24c9b3b0664225af4d21ba94ddbaa0&cid=5347dd7f65b24515b93700ded838d5df';
$content = $this->_request($curl, false, 'POST', $data);
$content = json_decode($content);
$contentStr = $content->answer;
注:详细见代码。运行结果如下:
创建菜单
微信公众号菜单的形式如下:
如何创建菜单接口。格式与说明:
创建菜单的格式是我们熟悉的JSON格式:
代码实现如下:
public function _createMenu($menu){
$curl = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$this->_getAccessToken();
$content = json_decode($this->_request($curl,true,'POST',$menu));
if($content->errcode == 0)
echo "菜单成功创建";
}
界面效果如下图:
用户点击“休闲”菜单中的“打蛋蛋”就可以进行游戏了:
发送图文信息到微信用户
此功能为用户在公众号上写相应文字,自动回复图文消息。消息格式如下:
主要PHP代码如下
private function _sendNews($postObj){ //发送图文消息
//制定图文消息模板
$newstpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>%s</ArticleCount>
<Articles>
%s;
</Articles>
</xml> ';
$news_item_tpl = '
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>';
$news = array(
array(
'title' =>'俱乐部排名:恒大亚洲第2 中超8队进亚洲前100',
'desc'=>'北京时间9月8日消息,足球数据统计网站“footballdatabase”发布了最新一期世界足球俱乐部排行榜,沙特豪门阿尔希拉尔亚洲排名第1,广州恒大以1606分位居世界第85位,在亚洲俱乐部中排名第2位。',
'picurl'=>'http://k.sinaimg.cn/n/transform/20150908/7Jwd-fxhqhun8508720.jpg/w570557.jpg',
'url'=>'http://sports.sina.com.cn/china/j/2015-09-08/doc-ifxhqhuf8215452.shtml'),
array(
'title' =>'郭艾伦搭上亚锦赛末班车 12人名单提前曝光',
'desc'=>'北京时间9月8日消息,据男篮内部人士透露,近期刚刚回归国家队的郭艾伦已经确定进入亚锦赛12人名单。目前,男篮12人名单已经基本出炉,篮协将在明天(9日)将12人名单正式上报。',
'picurl'=>'http://k.sinaimg.cn/n/transform/20150624/SjZz-fxefurs2835558.jpg/w57028f.jpg',
'url'=>'http://sports.sina.com.cn/cba/2015-09-08/doc-ifxhqtsx3621664.shtml')
);
$news_list = '';
foreach($news as $n){
$news_list.=sprintf($news_item_tpl,$n['title'],$n['desc'],$n['picurl'],$n['url']);
}
echo sprintf($newstpl,$postObj->FromUserName,$postObj->ToUserName,time(),2,$news_list);
}
最终实现结果如下图:
上传素材
微信公众平台开发,须按以下格式上传媒体资源:
上传素材代码如下:
public function _createMedia($type, $file){
$curl='https://api.weixin.qq.com/cgi-bin/media/upload?access_token='.$this->_getAccessToken().'&type='.$type;
$data['type'] = $type;
$data['media'] = '@'.$file;
file_put_contents('./medialib',$this->_request($curl, true, 'POST', $data));
}
搜索歌曲
在这里,我们利用百度的歌曲搜索功能来实现。首先分析百度音乐掌门的URL。
1.按歌曲名称和歌手的URL
http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌曲名$$歌手名$$$$
2.按歌曲名称的URL
http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌曲名$$
我们进行搜索结果的拼接。如下图:
代码实现:
private function _getMusicUrl($song,$singer){
if($singer == ''){
$curl = 'http://box.zhangmen.baidu.com/x?op=12&count=1&title='.$song.'$$';
}else{
$curl = 'http://box.zhangmen.baidu.com/x?op=12&count=1&title='.$song.'$$'.$singer.'$$$$';
}
$content = $this->_request($curl,false);
$content = simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);
$musicurl = substr($content->url->encode,0,strrpos($content->url->encode,'/')+1).substr($content->url->decode,0,strrpos($content->url->decode,'&'));
return $musicurl;
}
回复歌曲消息的格式如下:
代码实现如下:
private function _sendMusic($postObj){
$postObj->Content = mb_substr($postObj->Content,2, mb_strlen($postObj->Content,'UTF-8')-2,'UTF-8');
$songinfo = explode('@',$postObj->Content);
$song = trim($songinfo[0]);
$singer = '';
if(isset($songinfo[1])){
$singer = trim($songinfo[1]);
}
$musicUrl = $this->_getMusicUrl($song,$singer);
$musictpl = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
<ThumbMediaId><![CDATA[PIfRVcpn3q3c8C8-Iw0jn-bEMJRYeTTNDWElJzJfmQxfsODHNyvnEZ7ODBICL_EM]]></ThumbMediaId>
</Music>
</xml>';
$resultStr = sprintf($musictpl,$postObj->FromUserName,$postObj->ToUserName,time(),$song,$singer,$musicUrl,$musicUrl);
echo $resultStr;
exit;
}
小程序与原生APP那个好?下面我们就来一起了解一下小程序与原生APP那个好。以下是所整理的小程序与原生App的内容,希望对你有所帮助。
小程序的优点:
基于微信平台开发,享受微信自带的流量,这个优点最大
小程序和Vue写法的区别?下面我们就来一起了解一下小程序和Vue写法的区别。以下是我所整理的小程序和Vue写法的区别,希望对你有所帮助。
遍历的时候:
调用data模型(赋值)的时候:
小程序:this.data.item // 调用,
小程序:this.setDate({item:1})//赋值
Vue:this.item //调用,
Vue:this.item=1 //赋值
小程序调用后台接口遇到那些问题?下面我们就来一起了解一下小程序调用后台接口遇到那些问题。以下是所整理的小程序调用后台接口遇到的问题,希望对你有所帮助。
数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序
小程序不可以直接渲染文章内容这类型的html文本,显示需要借助插件分析微信小程序的优劣势?下面我们就来一起简单的了解一下微信小程序的优劣势。下面是所整理的微信小程序的优劣势,希望对你有所帮助。
优势:
容易上手,基础组件库比较全,基本不需要考虑兼容问题简单描述下微信小程序的 相关文件类型。下面我们就来一起了解一下微信小程序的 相关文件类型。以下是所整理的微信小程序的 相关文件类型,希望对你有所帮助。
wxml 模板文件,是框架设计的一套标签预言,结合基础组件,事件系统,可以构建出页面的结构
wxss 样式文件,是一套样式语言,用于描述WXML的组件样式请谈谈原生开发小程序,wepy,mpvue的对比?下面我们就来一起了解一下原生开发小程序,wepy,mpvue的对比。个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。
而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。