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