微信小程序制作
当前位置:网站首页 > 公众号热文 > 微信公众号开发调试指南 返回列表

微信公众号开发调试指南

作者:admin 时间:2019-01-13 浏览量:1144

微信公众号开发调试指南,面对微信公众平台在各行业的广泛使用,当然了需要对微信公众号进行开发的客户数越来越多了,作为专业的网络公司的微信开发技术而言,肯定需要完全掌握微信公众平台开发全套技术规范的,不然怎么给客户讲解和开发呢,接下爱来我们来详细的看看微信公众平台开发需要调用那些接口和开发那些功能呢?

近日,公众号有很多朋友留言,需要微信公众号开发和微信支付相关的文章。近日来工作较多,但仍然要为大家提供有价值的内容。依照常规,此次为各位奉上尽可能的完整方案。
关于公众号
申请公众号的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; 

         }

 

联系方式:18066528545   029-89298792

阅读过此文章的读者,还阅读过下面的文章

  • 小程序与原生APP那个好?下面我们就来一起了解一下小程序与原生APP那个好。以下是所整理的小程序与原生App的内容,希望对你有所帮助。

    小程序的优点:

    基于微信平台开发,享受微信自带的流量,这个优点最大
    无需安装,只要打开微信就能用,不占手机内存,体验好
    开发周期段,一般最多一个月就可以上线完成
    开发所需的资金少,所需资金是开发原生APP的一半不到
    小程序名称是唯一的,在微信的搜索里权重很高
    容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题
    基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序
    发布,审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布
    开发文档完善,社区活跃
    支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用
    小程序的缺点:
    局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的- 了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能
    不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制
    后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦
    前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致
    js引用只能使用绝对路径,不能操作DOM
    原生App优点:
    原生的相应速度快
    对于有无网络操作时,譬如离线操作基本选用原生开发
    需要调用系统硬件的功能(摄像头,拨号,短信蓝牙…)
    在无网络或者弱网情况下体验好
    原生App缺点:
    开发周期长,开发成本高,需要下载
  • 小程序和Vue写法的区别?下面我们就来一起了解一下小程序和Vue写法的区别。以下是我所整理的小程序和Vue写法的区别,希望对你有所帮助。

    遍历的时候:

    • 小程序wx:for=“list”,
    • 而Vue是v-for=“item in list”

    调用data模型(赋值)的时候:

    • 小程序:this.data.item // 调用,

    • 小程序:this.setDate({item:1})//赋值

    • Vue:this.item //调用,

    • Vue:this.item=1 //赋值

  • 小程序调用后台接口遇到那些问题?下面我们就来一起了解一下小程序调用后台接口遇到那些问题。以下是所整理的小程序调用后台接口遇到的问题,希望对你有所帮助。

    数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序

    小程序不可以直接渲染文章内容这类型的html文本,显示需要借助插件
    注:插件渲染会导致页面加载变慢,建议在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签,然后其他的标签让插件来做
  • 分析微信小程序的优劣势?下面我们就来一起简单的了解一下微信小程序的优劣势。下面是所整理的微信小程序的优劣势,希望对你有所帮助。

    优势:

    容易上手,基础组件库比较全,基本不需要考虑兼容问题
    开发文档比较完善,开发社区比较活跃,支持插件式开发
    良好的用户体验,无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多
    开发成本比APP要低
    为用户提供良好的保障(小程序发布,严格是审查流程)

    劣势:
    限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
    样式单一,部分组件已经是成型的,样式不可修改,例如:幻灯片,导航
    推广面窄,不能分享朋友圈,只能通过分享给朋友,附加小程序推广
    依托与微信,无法开发后台管理功能
    后台调试麻烦,因为api接口必须https请求且公网地址
    真机测试,个别安卓和苹果表现迥异,例如安卓的定位功能加载很慢

  • 简单描述下微信小程序的 相关文件类型。下面我们就来一起了解一下微信小程序的 相关文件类型。以下是所整理的微信小程序的 相关文件类型,希望对你有所帮助。

    wxml 模板文件,是框架设计的一套标签预言,结合基础组件,事件系统,可以构建出页面的结构

    wxss 样式文件,是一套样式语言,用于描述WXML的组件样式
    js脚本逻辑文件。逻辑处理网络请求
    json配置文件,小程序设置,如页面注册,页面标题及tabBar
    app.json 整个小程序的全局配置,包括:
    pages:\[所有页面路径]
    网络设置(网络超时事件)
    页面表现(页面注册)
    window:(背景色,导航样式,默认标题)
    底部tab等
    app.js 监听并处理小程序的生命周期函数,声明全局变量等
    app.wxss 全局配置的样式文件

  • 请谈谈原生开发小程序,wepy,mpvue的对比?下面我们就来一起了解一下原生开发小程序,wepy,mpvue的对比。个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。

    而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。
    而如果如果团队前端强大,自己做一套框架也没问题。

029-86195145 180 6652 8545 西安嘉瑞德网络科技公司
工作时间:周一到周六 8:30-18:30
邮箱:2528823962@qq.com
QQ:2528823962
地址:陕西省西安市未央元朔路明丰伯马都A座10820室
  • 微信小程序制作微信二维码
    扫码咨询
Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备17015187号-1