文档章节

一周的微信公众平台接口开发总结

 等风1306
发布于 2014/08/30 13:42
字数 800
阅读 28
收藏 1
{

在公司弄了一个星期的微信公众平台的接口开发,由于之前没弄过,开发的过程遇到了很多的小问题。下面我就总结一下我在开发过程中遇到了的问题和解决方法:

0x01首先是接口的配置问题

    其实接口的配置一开始是没有问题的,但是后来我把它改成其他的之后再想改回来的时候发现改不回来了,总是报下面的错

后来才知道,修该接口配置的时候不能用之前用过的URL和TOKEN的组合。

0x02自定义菜单问题

    在自定义菜单的设置过程中开始的时候发现怎么都设置不好,服务器总是返回

{"errcode":40016,"errmsg":"invalid button name size"}

开始的时候我的菜单的json数组在程序中是这样写的:

 $menu = "{
         'button':[
         {	
              'type':'click',
              'name':'今日歌曲',
              'key':'V1001_TODAY_MUSIC'
          },
          {
               'type':'click',
               'name':'歌手简介',
               'key':'V1001_TODAY_SINGER'
          }]
}

然后我就直接把上面的$menu发送到了微信服务器。结果苦逼了发现服务器返回了上面截图中的错误但是当我把上面的字符串考到接口调试工具上试的时候又总是成功的,当时我简直郁闷透了,后来我才意识到如果按我上面的方式弄的话我像微信服务器发送的是一个字符串,而不是一个json数组对象。于是我把程序做了修改,改成如下:

    $menu = array(
          'button'=>array(
                        array('type'=>'click','name'=>'今日歌曲','key'=>'V1001_TODAY_MUSIC'),
                        array('type'=>'click','name'=>'歌手简介','key'=>'V1001_TODAY_SINGER')));
    $menu = json_encode($menuPostString);

我觉得这次总该没问题了,这次发送的确是是json数组对象了。结果发现还是不行,服务器返回了同样的错误!这就让我纳闷了,简直不知道如何是好了,后来经过查资料才知道,微信服务器在接受json数数组时不允许数组中包含Unicode码(类似于\u4eca这样的东西)而当我使用了json_encode函数后数组中的中文部分就变成了Unicode码所以自然会出错,同时也不能包含url编码。所以我后来的解决办法是把代码改成如下:

    $menu = array(
          'button'=>array(
                        array('type'=>'click','name'=>urlencode('今日歌曲'),'key'=>'V1001_TODAY_MUSIC'),
                        array('type'=>'click','name'=>urlencode('歌手简介'),'key'=>'V1001_TODAY_SINGER')));
    $menu = urldecode(json_encode($menuPostString));

最后微信服务器终于给我仁慈的返回了:

{"errcode":0,"errmsg":"ok"}

菜单接口终于测试成功了,真不容易啊!

0x03菜单的修该问题

    首先菜单是不允许直接修改的,只能是所有的删除之后再重新设置,然后删除菜单应该向服务器发送的是GET请求,这一点接口文档中也明确说明了。关键是服务器也返回了正确的结果,可是当我打开微信查看的时候发现菜单还在,取消关注又重新关注还是在,简直了!后来重启了下手机发现菜单终于消失了。。。。

© 著作权归作者所有

下一篇: HTTP协议详解
粉丝 2
博文 21
码字总数 6737
作品 0
朝阳
私信 提问
Mochthon魔客松来啦!召集各路高手参与

活动平台活动时间2015年8月-2015年11月日程安排 • 第一期(8月)「H5页面应用」:制作一款H5页面应用,不限制应用类别, 要求部署在MoPaaS平台后可以运行,交互流畅,画面及逻辑较为完整; ...

Amethyst_C
2015/08/10
114
1
微信平台维护到底是什么意思?我们该如何维护?

     现在我们很多人都特别喜欢用微信来进行沟通交流,那么关于微信的很多事情我们大家还有其他的问题,那么关于微信平台维护到底是什么意思?我们该如何维护?下面小编在这里就来好好的为...

公众开发运营官网
2018/03/20
0
0
魔客松,诚邀各路编程高手一较高下!

活动时间 2015年8月-2015年11月 日程安排 • 第一期(8月)「H5页面应用」:制作一款H5页面应用,不限制应用类别, 要求部署在MoPaaS平台后可以运行,交互流畅,画面及逻辑较为完整; 接口标...

Amethyst_C
2015/08/10
184
0
Java微信开发_00_资源汇总贴

1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%BB%E......

rayner
2017/08/07
0
0
老贼微信公众号运营现状小起底

  青龙老贼带领的WeMedia自媒体联盟发布了《2014 微信公众平台生态白皮书》,我们一起来看看哪些数据对微信公众平台运营者有参考意义?(注:参与《传统企业微信公众号运营现状调查》的微信...

ytkahcom
2014/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
161
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部