listAllMaterialMedia(MediaType mediaType)
+ throws WeixinException {
+ return mediaApi.listAllMaterialMedia(mediaType);
+ }
+
/**
* 发送客服消息(在48小时内不限制发送次数)
*
@@ -389,7 +406,7 @@ public class WeixinProxy {
* @param endtime
* 查询结束时间 每次查询不能跨日查询
* @param pagesize
- * 每页大小 每页最多拉取1000条
+ * 每页大小 每页最多拉取50条
* @param pageindex
* 查询第几页 从1开始
* @see com.foxinmy.weixin4j.mp.model.CustomRecord
@@ -512,7 +529,7 @@ public class WeixinProxy {
}
/**
- * 创建会话
+ * 创建客服会话
*
* 开发者可以使用本接口,为多客服的客服工号创建会话,将某个客户直接指定给客服工号接待,需要注意此接口不会受客服自动接入数以及自动接入开关限制。
* 只能为在线的客服(PC客户端在线,或者已绑定多客服助手)创建会话。
@@ -530,13 +547,13 @@ public class WeixinProxy {
* @see 创建会话
*/
- public JsonResult createSession(String userOpenId, String kfAccount,
+ public JsonResult createKfSession(String userOpenId, String kfAccount,
String text) throws WeixinException {
- return customApi.createSession(userOpenId, kfAccount, text);
+ return customApi.createKfSession(userOpenId, kfAccount, text);
}
/**
- * 关闭会话
+ * 关闭客服会话
*
* @param userOpenId
* 用户的userOpenId
@@ -550,9 +567,9 @@ public class WeixinProxy {
* @see 创建会话
*/
- public JsonResult closeSession(String userOpenId, String kfAccount,
+ public JsonResult closeKfSession(String userOpenId, String kfAccount,
String text) throws WeixinException {
- return customApi.closeSession(userOpenId, kfAccount, text);
+ return customApi.closeKfSession(userOpenId, kfAccount, text);
}
/**
@@ -567,8 +584,8 @@ public class WeixinProxy {
* @see 获取会话状态
*/
- public KfSession getSession(String userOpenId) throws WeixinException {
- return customApi.getSession(userOpenId);
+ public KfSession getKfSession(String userOpenId) throws WeixinException {
+ return customApi.getKfSession(userOpenId);
}
/**
@@ -583,9 +600,9 @@ public class WeixinProxy {
* @see 获取客服的会话列表
*/
- public List getSessionList(String kfAccount)
+ public List getKfSessionList(String kfAccount)
throws WeixinException {
- return customApi.getSessionList(kfAccount);
+ return customApi.getKfSessionList(kfAccount);
}
/**
@@ -599,12 +616,12 @@ public class WeixinProxy {
* @see 获取客服的会话列表
*/
- public List getSessionWaitList() throws WeixinException {
- return customApi.getSessionWaitList();
+ public List getKfSessionWaitList() throws WeixinException {
+ return customApi.getKfSessionWaitList();
}
/**
- * 上传图文消息,一个图文消息支持1到10条图文
+ * 上传群发的图文消息,一个图文消息支持1到10条图文
*
* @param articles
* 图片消息
@@ -615,7 +632,7 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.msg.model.MpArticle
* @see com.foxinmy.weixin4j.mp.api.MassApi
*/
- public String uploadArticle(List articles)
+ public String uploadMassArticle(List articles)
throws WeixinException {
return massApi.uploadArticle(articles);
}
@@ -635,7 +652,7 @@ public class WeixinProxy {
* @see com.foxinmy.weixin4j.msg.model.MpVideo
* @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#uploadMedia(File)}
*/
- public String uploadVideo(Video video) throws WeixinException {
+ public String uploadMassVideo(Video video) throws WeixinException {
return massApi.uploadVideo(video);
}
@@ -958,7 +975,6 @@ public class WeixinProxy {
* @see 修改分组名
* @see com.foxinmy.weixin4j.mp.model.Group
- * @see com.foxinmy.weixin4j.mp.model.Group#toModifyJson()
* @see com.foxinmy.weixin4j.mp.api.GroupApi
*/
public JsonResult modifyGroup(int groupId, String name)
@@ -1067,6 +1083,7 @@ public class WeixinProxy {
* 二维码参数
* @return byte数据包
* @throws WeixinException
+ * @see com.foxinmy.weixin4j.mp.model.QRParameter
* @see com.foxinmy.weixin4j.mp.api.QrApi
* @see 生成二维码
@@ -1077,21 +1094,24 @@ public class WeixinProxy {
/**
* 生成带参数的二维码
- *
- * 二维码分为临时跟永久两种,扫描时触发推送带参数事件
- *
*
- * @param parameter
- * 二维码参数
+ * @return 二维码图片解析后的地址 开发者可根据该地址自行生成需要的二维码图片
+ * @throws WeixinException
+ * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#getQRData(QRParameter)}
+ */
+ public String getQRUrl(QRParameter parameter) throws WeixinException {
+ return qrApi.getQRUrl(parameter);
+ }
+
+ /**
+ * 生成带参数的二维码
+ *
* @return 硬盘存储的文件对象
* @throws WeixinException
- * @see 二维码
- * @see com.foxinmy.weixin4j.mp.model.QRParameter
- * @see com.foxinmy.weixin4j.mp.api.QrApi
+ * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#getQRData(QRParameter)}
*/
- public File getQR(QRParameter parameter) throws WeixinException {
- return qrApi.getQR(parameter);
+ public File getQRFile(QRParameter parameter) throws WeixinException {
+ return qrApi.getQRFile(parameter);
}
/**
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/CustomApi.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/CustomApi.java
index 5dd066b4..719ec4df 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/CustomApi.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/CustomApi.java
@@ -244,7 +244,7 @@ public class CustomApi extends MpApi {
* @see 创建会话
*/
- public JsonResult createSession(String userOpenId, String kfAccount,
+ public JsonResult createKfSession(String userOpenId, String kfAccount,
String text) throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_create_uri = getRequestUri("kfsession_create_uri");
@@ -273,7 +273,7 @@ public class CustomApi extends MpApi {
* @see 创建会话
*/
- public JsonResult closeSession(String userOpenId, String kfAccount,
+ public JsonResult closeKfSession(String userOpenId, String kfAccount,
String text) throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_close_uri = getRequestUri("kfsession_close_uri");
@@ -299,7 +299,7 @@ public class CustomApi extends MpApi {
* @see 获取会话状态
*/
- public KfSession getSession(String userOpenId) throws WeixinException {
+ public KfSession getKfSession(String userOpenId) throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_get_uri = getRequestUri("kfsession_get_uri");
Response response = request.get(String.format(kfsession_get_uri,
@@ -323,7 +323,7 @@ public class CustomApi extends MpApi {
* @see 获取客服的会话列表
*/
- public List getSessionList(String kfAccount)
+ public List getKfSessionList(String kfAccount)
throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_list_uri = getRequestUri("kfsession_list_uri");
@@ -344,7 +344,7 @@ public class CustomApi extends MpApi {
* @see 获取客服的会话列表
*/
- public List getSessionWaitList() throws WeixinException {
+ public List getKfSessionWaitList() throws WeixinException {
Token token = tokenHolder.getToken();
String kfsession_wait_uri = getRequestUri("kfsession_wait_uri");
Response response = request.get(String.format(kfsession_wait_uri,
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
index 9d4d5cb5..4e568a69 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
@@ -6,6 +6,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
@@ -423,8 +424,8 @@ public class MediaApi extends MpApi {
obj.toJSONString());
MediaRecord mediaRecord = null;
if (mediaType == MediaType.news) {
- mediaRecord = JSON.parseObject(response.getAsString(), MediaRecord.class,
- new ExtraProcessor() {
+ mediaRecord = JSON.parseObject(response.getAsString(),
+ MediaRecord.class, new ExtraProcessor() {
@Override
public void processExtra(Object object, String key,
Object value) {
@@ -444,4 +445,30 @@ public class MediaApi extends MpApi {
mediaRecord.setMediaType(mediaType);
return mediaRecord;
}
+
+ /**
+ * 获取全部的媒体素材
+ *
+ * @param mediaType
+ * 媒体类型
+ * @return 素材列表
+ * @see {@link com.foxinmy.weixin4j.mp.api.MediaApi#listMaterialMedia(MediaType, int, int)}
+ * @throws WeixinException
+ */
+ public List listAllMaterialMedia(MediaType mediaType)
+ throws WeixinException {
+ int offset = 0;
+ int count = 20;
+ List mediaList = new ArrayList();
+ MediaRecord mediaRecord = null;
+ for (;;) {
+ mediaRecord = listMaterialMedia(mediaType, offset, count);
+ mediaList.addAll(mediaRecord.getItems());
+ if (offset >= mediaRecord.getTotalCount()) {
+ break;
+ }
+ offset += count;
+ }
+ return mediaList;
+ }
}
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
index a5686821..c671d6ca 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
@@ -5,6 +5,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.Response;
import com.foxinmy.weixin4j.model.Token;
@@ -35,20 +36,39 @@ public class QrApi extends MpApi {
*
* @param parameter
* 二维码参数
- * @return byte数据包
+ * @return 二维码图片解析后的地址 开发者可根据该地址自行生成需要的二维码图片
* @throws WeixinException
* @see 生成二维码
*/
- public byte[] getQRData(QRParameter parameter) throws WeixinException {
+ public String getQRUrl(QRParameter parameter) throws WeixinException {
+ return doQR(parameter).getString("url");
+ }
+
+ private JSONObject doQR(QRParameter parameter) throws WeixinException {
Token token = tokenHolder.getToken();
String qr_uri = getRequestUri("qr_ticket_uri");
Response response = request.post(
String.format(qr_uri, token.getAccessToken()),
parameter.getContent());
- String ticket = response.getAsJson().getString("ticket");
- qr_uri = getRequestUri("qr_image_uri");
- response = request.get(String.format(qr_uri, ticket));
+ return response.getAsJson();
+ }
+
+ /**
+ * 生成带参数的二维码
+ *
+ * @param parameter
+ * 二维码参数
+ * @return byte数据包
+ * @throws WeixinException
+ * @see com.foxinmy.weixin4j.mp.model.QRParameter
+ * @see 生成二维码
+ */
+ public byte[] getQRData(QRParameter parameter) throws WeixinException {
+ String ticket = doQR(parameter).getString("ticket");
+ String qr_uri = getRequestUri("qr_image_uri");
+ Response response = request.get(String.format(qr_uri, ticket));
return response.getBody();
}
@@ -67,7 +87,7 @@ public class QrApi extends MpApi {
* href="mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html">二维码
* @see com.foxinmy.weixin4j.mp.model.QRParameter
*/
- public File getQR(QRParameter parameter) throws WeixinException {
+ public File getQRFile(QRParameter parameter) throws WeixinException {
String qr_path = ConfigUtil.getValue("qr_path");
String filename = String.format("%s_%s_%d.jpg", parameter.getQrType()
.name(), parameter.getSceneValue(), parameter
diff --git a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java
index 2482ed42..14c160ae 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MediaTest.java
@@ -13,6 +13,7 @@ import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.JsonResult;
import com.foxinmy.weixin4j.mp.api.MediaApi;
import com.foxinmy.weixin4j.mp.model.MediaCounter;
+import com.foxinmy.weixin4j.mp.model.MediaItem;
import com.foxinmy.weixin4j.mp.model.MediaRecord;
import com.foxinmy.weixin4j.msg.model.MpArticle;
import com.foxinmy.weixin4j.type.MediaType;
@@ -128,4 +129,10 @@ public class MediaTest extends TokenTest {
20);
System.err.println(mediaRecord);
}
+
+ @Test
+ public void listAllMaterialMedia() throws WeixinException {
+ List mediaList = mediaApi.listAllMaterialMedia(MediaType.image);
+ System.err.println(mediaList);
+ }
}
diff --git a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/QRTest.java b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/QRTest.java
index 82bcbc96..632493b4 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/QRTest.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/QRTest.java
@@ -29,19 +29,19 @@ public class QRTest extends TokenTest {
@Test
public void temp_qr() throws WeixinException, IOException {
- File file = qrApi.getQR(QRParameter.createTemporary(1200, 1200));
+ File file = qrApi.getQRFile(QRParameter.createTemporary(1200, 1200));
Assert.assertTrue(file.exists());
}
@Test
public void forever_qr_int() throws WeixinException, IOException {
- File file = qrApi.getQR(QRParameter.createPermanenceInt(1200));
+ File file = qrApi.getQRFile(QRParameter.createPermanenceInt(1200));
Assert.assertTrue(file.exists());
}
@Test
public void forever_qr_str() throws WeixinException, IOException {
- File file = qrApi.getQR(QRParameter.createPermanenceStr("1200中文"));
+ File file = qrApi.getQRFile(QRParameter.createPermanenceStr("1200中文"));
Assert.assertTrue(file.exists());
}
}
diff --git a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/msg/CustomTest.java b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/msg/CustomTest.java
index 09c46693..ddd8598b 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/msg/CustomTest.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/msg/CustomTest.java
@@ -88,14 +88,14 @@ public class CustomTest extends TokenTest {
@Test
public void createSession() throws WeixinException {
- JsonResult result = customApi.createSession(
+ JsonResult result = customApi.createKfSession(
"opKwyt6IhrqPmTTZshyqH5W9gIVo", "kfAccount", "text");
Assert.assertEquals(0, result.getCode());
}
@Test
public void closeSession() throws WeixinException {
- JsonResult result = customApi.closeSession(
+ JsonResult result = customApi.closeKfSession(
"opKwyt6IhrqPmTTZshyqH5W9gIVo", "kfAccount", "text");
Assert.assertEquals(0, result.getCode());
}
@@ -103,19 +103,19 @@ public class CustomTest extends TokenTest {
@Test
public void getSession() throws WeixinException {
KfSession session = customApi
- .getSession("oz5axuNnJim8yTYs_jzE1bWFj9eA");
+ .getKfSession("oz5axuNnJim8yTYs_jzE1bWFj9eA");
System.err.println(session);
}
@Test
public void getSessionList() throws WeixinException {
- List sessionList = customApi.getSessionList("kfAccount");
+ List sessionList = customApi.getKfSessionList("kfAccount");
System.err.println(sessionList);
}
@Test
public void getSessionWaitList() throws WeixinException {
- List sessionList = customApi.getSessionWaitList();
+ List sessionList = customApi.getKfSessionWaitList();
System.err.println(sessionList);
}
}
diff --git a/weixin4j-qy/weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
index 650ed925..7f2f50e5 100644
--- a/weixin4j-qy/weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
+++ b/weixin4j-qy/weixin4j-qy-api/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
@@ -74,6 +74,7 @@ public class WeixinProxy {
/**
* TokenHolder对象
*
+ * @see com.foxinmy.weixin4j.token.TokenHolder
* @param tokenHolder
*/
public WeixinProxy(TokenHolder tokenHolder) {