关闭

微信开发——2、代码模式下创建菜单

标签: 微信代码模式
614人阅读 评论(0) 收藏 举报
分类:

其实开发微信难度并不大,因为微信公众平台提供文档已经很详细了,难就难在要耐心看懂文档


代码创建菜单

这里说的代码创建的意思是执行一次就保存到微信官方的服务器中,像这样的还有其他的功能,比如上传素材,具体的可以看微信官网的《开发者文档》(登录——(左侧菜单)开发者工具——开发文档)。

步骤1 获取access_token(全局唯一接口调用凭据)

具体文档位置:在开发者文档——开始开发——获得access_token,其中最有用的一句是

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

输入自己的appid与secret,然后以任何编程方式访问这个网址(测试的话可以直接用浏览器获取,java的话使用HttpURLConnection即可)就能获得access_token。但是一个access_token过一段时间会过期,具体看文档。


步骤2 创建菜单

具体文档位置:在开发者文档——自定义菜单——自定义菜单创建接口,同样是连接URL然后用POST的格式发送一段代码,微信官方服务器会根据我们发送的代码建立我们想要的菜单。

要注意数据包装

数据包装代码如下

/*
 JSON格式
*/
public static JSONObject getJSON() {
        // TODO Auto-generated method stub

        JSONObject jo_button1 = new JSONObject();
        jo_button1.put("type", "click");
        jo_button1.put("name", "今日歌曲");
        jo_button1.put("key", "V1001_TODAY_MUSIC");

        JSONArray ja_zong = new JSONArray();
        ja_zong.add(jo_button1);

        JSONObject jo_zong = new JSONObject();
        jo_zong.put("button", ja_zong.toString());
        System.out.println(jo_zong.toString());
        return jo_zong;
    }


/*
  字符串格式
*/
String menu = "{\"button\":[{\"type\":\"view\",\"name\":\"按钮1\",\"url\":\"http://www.baidu.com\"},{\"type\":\"view\",\"name\":\"按钮2\",\"url\":\"http://www.baidu.com\"}]}";

用java发送包装好的数据

public static void main(String[] args) {
        try {
            String pathUrl = "这里填写完整的微信接口URL";
            // 建立连接
            URL url = new URL(pathUrl);
            HttpURLConnection httpConn = (HttpURLConnection) url
                    .openConnection();

            // //设置连接属性
            httpConn.setDoOutput(true);// 使用 URL 连接进行输出
            httpConn.setDoInput(true);// 使用 URL 连接进行输入
            httpConn.setUseCaches(false);// 忽略缓存
            httpConn.setRequestMethod("POST");// 设置URL请求方法
            String requestString = Test.getJSON().toString();


            // 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
            byte[] requestStringBytes = requestString.getBytes("UTF-8");
            httpConn.setRequestProperty("Content-length", ""+ requestStringBytes.length);
            httpConn.setRequestProperty("Content-Type",
                    "application/octet-stream");
            httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
            httpConn.setRequestProperty("Charset", "UTF-8");

            // 建立输出流,并写入数据
            OutputStream outputStream = httpConn.getOutputStream();
            outputStream.write(requestStringBytes);
            outputStream.close();
            // 获得响应状态
            int responseCode = httpConn.getResponseCode();

            if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功
                // 当正确响应时处理数据
                StringBuffer sb = new StringBuffer();
                String readLine;
                BufferedReader responseReader;
                // 处理响应流,必须与服务器响应流输出的编码一致
                responseReader = new BufferedReader(new InputStreamReader(
                        httpConn.getInputStream(), "UTF-8"));
                while ((readLine = responseReader.readLine()) != null) {
                    sb.append(readLine).append('\n');
                }
                responseReader.close();
                System.out.println(sb.toString());
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

配置自己的服务

拿Web服务举例:

需要特别注意的地方

①URL的填写的端口号必须是80443,使用tomcat的话可以上网搜一下如何修改tomcat的端口号
②第一次配置服务的时候,需要让微信官方服务器和自己建的服务器进行交互,具体的可以看开发者文档——开始开发——接入指南
③最头疼的token,经常性的验证失败,客观原因比较多,只能多试几次。


服务器接入参考代码网址:
http://blog.csdn.net/rodjohnsondoctor/article/details/22157323

1
0
查看评论

微信公众号开发之创建菜单栏代码示例(php)

思路很简单:就是先获取access_token,然后带着一定规则的json数据参数请求创建菜单的接口。废话不多讲,直接上代码。 class Wechat { public $APPID="wx******596"; public $APPSECRET="...
  • u013077250
  • u013077250
  • 2018-01-12 10:42
  • 141

微信开发(三)创建菜单

如果选择了为微信制定开发版,就不能使用`功能`中的`自定义菜单`工具,需要使用代码手动添加 。这篇文章主要介绍如何通过http请求添加自定义菜单。
  • fansongy
  • fansongy
  • 2015-02-02 11:14
  • 4962

微信开发(自定义菜单整套流程)

一、自定义菜单概述 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示: 二、申请自定义菜单 个人订阅号使用微博认证、企业订阅号通过微信认证;可以申请到自定义菜单资格 服务号默认有菜单权限。 三、获得...
  • qq_34341290
  • qq_34341290
  • 2016-10-04 15:27
  • 3770

微信公众号开发教程[011]-自定义菜单以及个性化菜单

我承接app和微信公众号开发,如果有谁需要的话,可以惠顾我,谢谢. QQ: 40678884 微信: szuzsq 主页: http://www.wxshaker.com 博客: http://blog.csdn.net/szuzsq -----------------...
  • szuzsq
  • szuzsq
  • 2016-07-15 11:29
  • 3469

微信公众号接口添加菜单时错误(errcode":40017 invalid button type)

POST提交时总是报错: {"errcode":40017,"errmsg":"invalid button type"} 最后查出来是Data里面的一个逗号变成了全角逗号,改成半角逗号后问题解决。
  • hirvonen
  • hirvonen
  • 2015-03-23 19:42
  • 5542

微信errcode":40033,菜单中出现中文就出错

{“errcode”:40033,”errmsg”:”invalid charset. please check your request, if include \uxxxx will create fail! hint: [fr3Pwa0673vr21]”} 菜单创建时带入了地址,但转义后会多...
  • wangxinxinsj
  • wangxinxinsj
  • 2017-03-03 16:20
  • 467

微信接口 菜单 40016

这两天几申请了一个微信的测试账号。正在做菜单生成的东西。  遇见一个问题上网上找了一下,也没有找到正确的答案。 有说按钮的个数不符,有说什么https和http的问题 但是我都不是这些问题。 首先我的参数都没问题。appid,SECRET,还有access_token都没问题。 还有m...
  • u010325621
  • u010325621
  • 2016-03-21 11:14
  • 1746

PHP开发微信自定义菜单40033不转义中文的方法

接口文档说明: http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html按照文档走,使用php执行,结果: {“errcode”:40033,”errmsg”:”invalid charset. please che...
  • zmzwll1314
  • zmzwll1314
  • 2017-07-11 16:56
  • 738

微信开发模式之自定义菜单实现

编辑模式和开发模式是有冲突的。所以我们启用微信公众号的开发模式之后,那些菜单是看不到的哦。不过现在个人订阅号是不可以使用高级开发者模式的,如自定义菜单,不过我们还是可以通过测试号来测试一下,然后移代码到服务号。  自定义类型包括如下: 1、click:点击推事件 • 用户点击clic...
  • u014427391
  • u014427391
  • 2016-04-13 23:51
  • 13163

微信公众平台开发:自定义菜单调试步骤

首先要看一下自定义菜单功能是否开通,在后台“服务”-“我的服务”中可以看到 如果看到,你可以按照以下步骤进行操作,添加自定义菜单 1、在开发模式页面,获得AppId和AppSecret 2、在http://mp.weixin.qq.com/debug这个页面,将接口类型选择“基础支...
  • sange77
  • sange77
  • 2014-11-27 14:21
  • 1768
    个人资料
    • 访问:256670次
    • 积分:4146
    • 等级:
    • 排名:第8809名
    • 原创:194篇
    • 转载:15篇
    • 译文:0篇
    • 评论:60条
    文章分类
    最新评论