From 5de9ece244e67d4fc1242c877ccd5dfc4368e5d5 Mon Sep 17 00:00:00 2001 From: jinyu Date: Thu, 30 Apr 2015 19:56:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E`media=5Fid`=E5=92=8C`view=5F?= =?UTF-8?q?limited`=E4=B8=A4=E7=A7=8D=E8=8F=9C=E5=8D=95=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGE.md | 6 +- .../com/foxinmy/weixin4j/model/Button.java | 2 +- .../com/foxinmy/weixin4j/type/ButtonType.java | 21 +++-- .../foxinmy/weixin4j/mp/api/HelperApi.java | 78 +++++++++---------- .../com/foxinmy/weixin4j/mp/api/MenuApi.java | 39 ++++++---- .../foxinmy/weixin4j/mp/model/OauthToken.java | 23 ++++-- .../com/foxinmy/weixin4j/qy/WeixinProxy.java | 22 ++++++ .../com/foxinmy/weixin4j/qy/api/MenuApi.java | 39 ++++++---- .../com/foxinmy/weixin4j/qy/api/UserApi.java | 23 +++++- 9 files changed, 171 insertions(+), 82 deletions(-) diff --git a/CHANGE.md b/CHANGE.md index ad6fec0d..e35d6293 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -263,4 +263,8 @@ * 2015-04-29 - + released 1.4 \ No newline at end of file + + released 1.4 + +* 2015-04-30 + + + 新增`media_id`和`view_limited`两种菜单类型 \ No newline at end of file diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Button.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Button.java index e6604270..d51122e8 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Button.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/Button.java @@ -43,7 +43,7 @@ public class Button implements Serializable { *

* 使用API设置的自定义菜单:
* click、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album - * 、
pic_weixin、location_select:保存值到key;view:保存链接到url + * 、
pic_weixin、location_select:保存为key;view:保存为url;media_id、view_limited:保存为media_id *

*

*/ diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java index dcd6e8ba..5d696260 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/ButtonType.java @@ -1,10 +1,11 @@ package com.foxinmy.weixin4j.type; /** - * 自定义菜单类型
- * scancode_push 到 location_selec - * 仅支持微信iPhone5.4.1以上版本,和Android5 .4以上版本的微信用户 旧版本微信用户点击后将没有回应 - * 开发者也不能正常接收到事件推送。 + * 自定义菜单类型
请注意,scancode_push到location_select的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户 + * ,旧版本微信用户点击后将没有回应 + * ,开发者也不能正常接收到事件推送。media_id和view_limited,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型 + * ,它们是没有事件推送的,能力相对受限,其他类型的公众号不必使用。 * * @className ButtonType * @author jy @@ -51,5 +52,15 @@ public enum ButtonType { * 弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具, * 随后可能会收到开发者下发的消息。 */ - location_select; + location_select, + /** + * 下发消息(除文本消息):用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、 + * 音频、视频、图文消息。 请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。 + */ + media_id, + /** + * 跳转图文消息URL:用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL, + * 永久素材类型只支持图文消息。 请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。 + */ + view_limited; } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/HelperApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/HelperApi.java index 269e615c..58fd5333 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/HelperApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/HelperApi.java @@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONPath; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.parser.deserializer.ExtraProcessor; -import com.alibaba.fastjson.serializer.NameFilter; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.Response; import com.foxinmy.weixin4j.model.Button; @@ -118,65 +117,63 @@ public class HelperApi extends MpApi { Token token = tokenHolder.getToken(); Response response = request.get(String.format(menu_get_selfmenu_uri, token.getAccessToken())); - JSONObject result = response.getAsJson(); + JSONArray buttons = result.getJSONObject("selfmenu_info").getJSONArray( "button"); - List