2018-03-23 18:07:38 u014740338 阅读数 3778
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5686 人正在学习 去看看 秦子恒

微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过微信提供的测试工具进行配置的过程。

一、进入微信接口调试页面

地址:https://mp.weixin.qq.com/debug


接口类型选择“自定义菜单”

接口列表选择“自定义菜单创建接口/menu/create”

接口参数:

access_token: 是公众号访问接口用的,需要填写要修改的公众号access_token

body: 创建菜单的JSON串。示例如下:

示例一:(创建两个一级按钮菜单)

{
    "button": [
        {
            "type": "view", 
            "name": "报名邀请", 
            "url": "https://blog.csdn.net/u014740338"
        }, 
        {
            "type": "view", 
            "name": "我的博客", 
            "url": "https://blog.csdn.net/u014740338"
        }
    ]
}

我创建的是连个view类型的菜单,也可以创建click类型的。

示例二:(创建一级菜单+二级菜单)

{
	"button": [{
		"type": "view",
		"name": "技术积累",
		"url": "https://blog.csdn.net/u014740338"
	},
	{
		"name": "工作",
		"sub_button": [{
			"type": "view",
			"name": "遇到的bug",
			"url": "https://blog.csdn.net/u014740338"
		},
		{
			"type": "view",
			"name": "工作记录",
			"url": "https://blog.csdn.net/u014740338"
		}]
	},
	{
		"type": "view",
		"name": "我的博客",
		"url": "https://blog.csdn.net/u014740338"
	}]
}

body写好之后点击“检查问题”按钮。若创建成功会返回一下信息:


若创建失败,检查access_token是否正确。

若没有公众号来玩,可以自己申请一个测试账号,具体流程可以参考我上篇博客。

2017-10-30 10:45:41 weixin_39696369 阅读数 42320
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5686 人正在学习 去看看 秦子恒

在上篇文章实现微信扫码获取带指定参数时,微信公众号后台启用了服务器配置,导致之前设置好的微信自定义菜单失效。
这里写图片描述
开启了服务器配置,就无法用之前的方式在微信公众平台配置自定义菜单
此时,我们要通过接口来配置微信自定义菜单,微信自定义菜单接口链接

这里写图片描述

首先,我们打开微信公众平台接口调试工具 接口调试工具
1.通过appid以及secret来获取access_token,
这里写图片描述

2.组织创建菜单内容。微信提供了许多不同功能的按钮类型,可根据实际需求组织创建。
这里简单的创建两个1级view类型按钮:即用户点击按钮实现跳转URL。

{
    "button": [
        {
            "type": "view", 
            "name": "百度", 
            "url": "http://www.baidu.com"
        }, 
        {
            "type": "view", 
            "name": "淘宝", 
            "url": "http://www.taobao.com"
        }
    ]
}

3.在接口调试工具- - -选择 ‘自定义菜单’的接口类型,填入access_token,以及刚刚构建好的菜单内容。

这里写图片描述

点击检查问题,如果填写参数正确,则请求成功。
这里写图片描述

此时,重新打开或重新关注公众号,即能看到刚刚构建的自定义菜单已经生效。

2019-12-04 10:52:02 weixin_43229729 阅读数 5
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5686 人正在学习 去看看 秦子恒

借鉴于:https://blog.csdn.net/u014740338/article/details/79670779

微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过微信提供的测试工具进行配置的过程。

一、进入微信接口调试页面

接口参数:

access_token: 是公众号访问接口用的,需要填写要修改的公众号access_token。

body: 创建菜单的JSON串。示例如下:(创建一级菜单+二级菜单

 

{
	"button": [{
		"type": "view",
		"name": "技术查看",
		"url": "https://blog.csdn.net/weixin_43229729"
	},
	{
		"name": "学习",
		"sub_button": [{
			"type": "view",
			"name": "遇到的问题",
			"url": "https://blog.csdn.net/weixin_43229729"
		},
		{
			"type": "view",
			"name": "学习记录",
			"url": "https://blog.csdn.net/weixin_43229729"
		}]
	},
	{
		"type": "view",
		"name": "我的博客",
		"url": "https://blog.csdn.net/weixin_43229729"
	}]

}

body写好之后点击“检查问题”按钮。若创建成功会返回一下信息:

 

二,通过调用微信api进行设置(自定义菜单创建/查询/删除)

关于自定义菜单的查询和删除,直接看微信官方文档。

微信官网文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Deleting_Custom-Defined_Menu.html

2014-10-31 23:15:31 fuyifang 阅读数 5116
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5686 人正在学习 去看看 秦子恒

微信公众平台分为两种模式:编辑模式与开发模式;

微信公众帐号申请成功后,要想用程序接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”。

从微信开发平台开发者中心中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢,作为开发人员到底要开启哪一种呢?

编辑模式:主要针对非编程人员及信息发布类公众帐号使用。开启该模式后,可以方便地通过界面配置“自定义菜单”和“自动回复的消息”。

开发模式:主要针对具备开发能力的人使用。开启该模式后,能够使用微信公众平台开放的接口,通过编程方式实现自定义菜单的创建、用户消息的接收/处理/响应。这种模式更加灵活,建议有开发能力的公司或个人都采用该模式,可以根据业务需要进行微信公众号(订阅号、企业号、服务号)相应扩展开发。

启用开发模式

微信公众帐号注册完成后,默认开启的是编辑模式。那么该如何开启开发模式呢?操作步骤如下:

1)点击进入编辑模式,将右上角的编辑模式开关由“开启”切换到“关闭”,如下图所示:

\

\

2)点击高级功能进入到开发模式,将右上角的开发模式开关由“关闭”切换到“开启”,但在切换时会遇到如下提示:

\

提示需要我们先成为开发者,才能开启开发模式。那就先点击下图所示的“成为开发者”按钮:

\

如果提示资料不全,那就先补齐资料再回来继续操作。需要补全的资料有公众帐号头像、描述和运营地区。

\

待资料补全后,再次点击“成为开发者”,这时将看到接口配置信息界面,如下图所示:

\

这里需要填写URL和Token两个值。URL指的是能够接收处理微信服务器发送的GET/POST请求的地址,并且是已经存在的,现在就能够在浏览器访问到的地址,这就要求我们先把公众帐号后台处理程序开发好(至少应该完成了对GET请求的处理)并部署在公网服务器上。Token后面会详细说明。

也就是说要完成接口配置,只需要先完成微信服务器的GET请求处理就可以?是的。 那这是为什么呢?因为这是微信公众平台接口中定义的。具体请参考API文档-消息接口-消息接口指南中的网址接入部分。点此进入

\

上面写的很清楚,其实你只要能理解上面在说什么就OK了,至于怎么编写相关代码,我已经帮你完成了,请继续往下看。

以下是WebApi.aspx页面cs代码,主要完成和微开放平台接口交互验证,完成开启开发模式。

<span style="font-size:14px;">using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var echostr = Request.QueryString["echostr"];
        if (echostr != null)
        {
            LogHelper.Info(echostr);
            if (checkSignature())
            {
                Response.Write(echostr);
                Response.End();
            }
        }

    }


   
    /// <summary>
    /// 验证签名
    /// </summary>
    /// <returns></returns>
    private bool checkSignature()
    {
        var pm = new Paraments();

        var signature = Request.QueryString["signature"];
        var timestamp = Request.QueryString["timestamp"];
        var nonce = Request.QueryString["nonce"];

        string[] arrTmp = { pm.Token, timestamp, nonce };
        Array.Sort(arrTmp);     //字典排序  
        var tmpStr = string.Join("", arrTmp);
        tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
        tmpStr = tmpStr.ToLower();
        if (tmpStr == signature.ToLower())
        {
            return true;

        }
        else
        {
            return false;
        }
    }






    /// <summary>
    /// datetime转换成unixtime
    /// </summary>
    /// <param name="time"></param>
    /// <returns></returns>
    private int ConvertDateTimeInt(System.DateTime time)
    {
        System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
        return (int)(time - startTime).TotalSeconds;
    }

}</span>


Paraments.cs配置类代码

<span style="font-size:14px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class Paraments
{
    /// <summary>
    /// 微信API地址
    /// </summary>
    public string TokenUrl { get { return "https://api.weixin.qq.com/cgi-bin/token"; } }

    /// <summary>
    /// 
    /// </summary>
    public string OAuthUrl { get { return ""; } }

    /// <summary>
    /// 
    /// </summary>
    public string RedirectUrl { get { return ""; } }

    /// <summary>
    /// AppKey
    /// </summary>
    public string AppKey { get { return "wxb58968b4aed7fdc5"; } }

    /// <summary>
    /// AppSecret
    /// </summary>
    public string AppSecret { get { return "2a5e30c63c776d2ff0c4131a59fa57df"; } }

    /// <summary>
    /// Token
    /// </summary>
    public string Token { get { return "test"; } }
}</span>
完成以上代码步骤,把对应接口回传地址传入对应文本框验证通过即可开启开发模式。

主要步骤如下:

填写Url:http://服务器外网访问域名地址Url/WeiXinAPI.aspx

填写Token:test

完成提交即可验证通过,表示已成功启用开发者模式。如下图:



如果API回调地址发送变化,可点击‘修改配置’进行修改,如果暂停回调可‘停用’停用开发配置。

本人新浪微博:http://weibo.com/i/1741159542

2016-08-30 19:50:34 zhengyikuangge 阅读数 805
  • 微信公众号开发5-自定义菜单-微信开发php

    微信公众平台开发之自定义菜单管理是子恒老师《微信公众平台开发》视频教程的第5部。详细讲解了用php开发微信,对微信公众平台中的自定义管理开发。内容包含微信添加菜单,获取自定义菜单配置,删除菜单等等。欢迎反馈,微信/QQ:68183131

    5686 人正在学习 去看看 秦子恒

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


代码创建菜单

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

步骤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

Java微信开发入门

阅读数 1119

没有更多推荐了,返回首页