();
+
+ public NewsBuilder addArticle(WxXmlOutMewsMessage.Item item) {
+ this.articles.add(item);
+ return this;
+ }
+
+ public WxXmlOutMewsMessage build() {
+ WxXmlOutMewsMessage m = new WxXmlOutMewsMessage();
+ for(WxXmlOutMewsMessage.Item item : articles) {
+ m.addArticle(item);
+ }
+ setCommon(m);
+ return m;
+ }
+
+}
diff --git a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TextBuilder.java
similarity index 80%
rename from src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TextBuilder.java
index 56393a332..43c54feba 100644
--- a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/TextBuilder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TextBuilder.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.mp.bean.outxmlbuilder;
-import me.chanjar.weixin.bean.WxXmlOutTextMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutTextMessage;
/**
* 文本消息builder
diff --git a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VideoBuilder.java
similarity index 87%
rename from src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VideoBuilder.java
index 51046dbf4..6fb946d18 100644
--- a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VideoBuilder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VideoBuilder.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.mp.bean.outxmlbuilder;
-import me.chanjar.weixin.bean.WxXmlOutVideoMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutVideoMessage;
/**
* 视频消息builder
diff --git a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VoiceBuilder.java
similarity index 80%
rename from src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VoiceBuilder.java
index 73b820df6..4720f135c 100644
--- a/src/main/java/me/chanjar/weixin/bean/outxmlbuilder/VoiceBuilder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/VoiceBuilder.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.outxmlbuilder;
+package me.chanjar.weixin.mp.bean.outxmlbuilder;
-import me.chanjar.weixin.bean.WxXmlOutVoiceMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutVoiceMessage;
/**
* 语音消息builder
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxError.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxError.java
similarity index 98%
rename from src/main/java/me/chanjar/weixin/bean/result/WxError.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxError.java
index 1e42e42de..37d32aefa 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxError.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxError.java
@@ -1,9 +1,9 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
import java.util.HashMap;
import java.util.Map;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
* 微信错误码说明
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassSendResult.java
similarity index 92%
rename from src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassSendResult.java
index ed23e86ec..d71b579d2 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxMassSendResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassSendResult.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
*
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassUploadResult.java
similarity index 90%
rename from src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassUploadResult.java
index 074ea3d3b..f3efe6859 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxMassUploadResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMassUploadResult.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
*
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMediaUploadResult.java
similarity index 91%
rename from src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMediaUploadResult.java
index e3dba600c..83a838df7 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxMediaUploadResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxMediaUploadResult.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
public class WxMediaUploadResult {
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxQrCodeTicket.java
similarity index 89%
rename from src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxQrCodeTicket.java
index d9da02aab..fd13ade83 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxQrCodeTicket.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxQrCodeTicket.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
* 换取二维码的Ticket
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxUser.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUser.java
similarity index 95%
rename from src/main/java/me/chanjar/weixin/bean/result/WxUser.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUser.java
index a3103fc65..c6fd81e5f 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxUser.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUser.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
* 微信用户信息
diff --git a/src/main/java/me/chanjar/weixin/bean/result/WxUserList.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUserList.java
similarity index 90%
rename from src/main/java/me/chanjar/weixin/bean/result/WxUserList.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUserList.java
index fbcce2183..29ab1a60f 100644
--- a/src/main/java/me/chanjar/weixin/bean/result/WxUserList.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/result/WxUserList.java
@@ -1,10 +1,9 @@
-package me.chanjar.weixin.bean.result;
+package me.chanjar.weixin.mp.bean.result;
import java.util.ArrayList;
import java.util.List;
-import me.chanjar.weixin.util.json.WxGsonBuilder;
-
+import me.chanjar.weixin.mp.util.json.WxGsonBuilder;
/**
* 关注者列表
diff --git a/src/main/java/me/chanjar/weixin/exception/WxErrorException.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/exception/WxErrorException.java
similarity index 77%
rename from src/main/java/me/chanjar/weixin/exception/WxErrorException.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/exception/WxErrorException.java
index 311d00fb1..5685289d1 100644
--- a/src/main/java/me/chanjar/weixin/exception/WxErrorException.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/exception/WxErrorException.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.exception;
+package me.chanjar.weixin.mp.exception;
-import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.mp.bean.result.WxError;
public class WxErrorException extends Exception {
diff --git a/src/main/java/me/chanjar/weixin/util/crypto/ByteGroup.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/ByteGroup.java
similarity index 86%
rename from src/main/java/me/chanjar/weixin/util/crypto/ByteGroup.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/ByteGroup.java
index b0bda3cb1..329bf4172 100755
--- a/src/main/java/me/chanjar/weixin/util/crypto/ByteGroup.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/ByteGroup.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.crypto;
+package me.chanjar.weixin.mp.util.crypto;
import java.util.ArrayList;
diff --git a/src/main/java/me/chanjar/weixin/util/crypto/PKCS7Encoder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/PKCS7Encoder.java
similarity index 93%
rename from src/main/java/me/chanjar/weixin/util/crypto/PKCS7Encoder.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/PKCS7Encoder.java
index e02b509cf..5bd23383f 100755
--- a/src/main/java/me/chanjar/weixin/util/crypto/PKCS7Encoder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/PKCS7Encoder.java
@@ -6,7 +6,7 @@
// ------------------------------------------------------------------------
-package me.chanjar.weixin.util.crypto;
+package me.chanjar.weixin.mp.util.crypto;
import java.nio.charset.Charset;
import java.util.Arrays;
diff --git a/src/main/java/me/chanjar/weixin/util/crypto/SHA1.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/SHA1.java
similarity index 95%
rename from src/main/java/me/chanjar/weixin/util/crypto/SHA1.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/SHA1.java
index eec3c53ba..1a842822a 100644
--- a/src/main/java/me/chanjar/weixin/util/crypto/SHA1.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/SHA1.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.crypto;
+package me.chanjar.weixin.mp.util.crypto;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
diff --git a/src/main/java/me/chanjar/weixin/util/crypto/WxCryptUtil.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtil.java
similarity index 96%
rename from src/main/java/me/chanjar/weixin/util/crypto/WxCryptUtil.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtil.java
index 764d851b5..d4931472a 100755
--- a/src/main/java/me/chanjar/weixin/util/crypto/WxCryptUtil.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtil.java
@@ -11,7 +11,7 @@
* 需要导入架包commons-codec-1.9(或commons-codec-1.8等其他版本)
* 官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi
*/
-package me.chanjar.weixin.util.crypto;
+package me.chanjar.weixin.mp.util.crypto;
import java.io.StringReader;
import java.nio.charset.Charset;
@@ -26,7 +26,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import me.chanjar.weixin.api.WxConfigStorage;
+import me.chanjar.weixin.mp.api.WxConfigStorage;
import org.apache.commons.codec.binary.Base64;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
diff --git a/src/main/java/me/chanjar/weixin/util/fs/FileUtils.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/fs/FileUtils.java
similarity index 96%
rename from src/main/java/me/chanjar/weixin/util/fs/FileUtils.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/fs/FileUtils.java
index 1acc4561c..c73efa587 100644
--- a/src/main/java/me/chanjar/weixin/util/fs/FileUtils.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/fs/FileUtils.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.fs;
+package me.chanjar.weixin.mp.util.fs;
import java.io.File;
import java.io.FileOutputStream;
diff --git a/src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/InputStreamResponseHandler.java
similarity index 95%
rename from src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/InputStreamResponseHandler.java
index 8854e0f8c..e8926a44a 100644
--- a/src/main/java/me/chanjar/weixin/util/http/InputStreamResponseHandler.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/InputStreamResponseHandler.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.IOException;
import java.io.InputStream;
diff --git a/src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaDownloadRequestExecutor.java
similarity index 92%
rename from src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaDownloadRequestExecutor.java
index b62ad35fd..83df39dab 100644
--- a/src/main/java/me/chanjar/weixin/util/http/MediaDownloadRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaDownloadRequestExecutor.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.File;
import java.io.IOException;
@@ -6,6 +6,9 @@ import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import me.chanjar.weixin.mp.bean.result.WxError;
+import me.chanjar.weixin.mp.exception.WxErrorException;
+import me.chanjar.weixin.mp.util.fs.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
@@ -13,10 +16,6 @@ import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.ContentType;
-import me.chanjar.weixin.bean.result.WxError;
-import me.chanjar.weixin.exception.WxErrorException;
-import me.chanjar.weixin.util.fs.FileUtils;
-
/**
* 下载媒体文件请求执行器,请求的参数是String, 返回的结果是File
* @author chanjarster
diff --git a/src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaUploadRequestExecutor.java
similarity index 87%
rename from src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaUploadRequestExecutor.java
index 15c8c8a0e..d7c85fdf8 100644
--- a/src/main/java/me/chanjar/weixin/util/http/MediaUploadRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/MediaUploadRequestExecutor.java
@@ -1,8 +1,11 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.File;
import java.io.IOException;
+import me.chanjar.weixin.mp.bean.result.WxError;
+import me.chanjar.weixin.mp.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -10,10 +13,6 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
-import me.chanjar.weixin.bean.result.WxError;
-import me.chanjar.weixin.bean.result.WxMediaUploadResult;
-import me.chanjar.weixin.exception.WxErrorException;
-
/**
* 上传媒体文件请求执行器,请求的参数是File, 返回的结果是String
* @author chanjarster
diff --git a/src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
similarity index 87%
rename from src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
index b33fb5010..e018d7248 100644
--- a/src/main/java/me/chanjar/weixin/util/http/QrCodeRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/QrCodeRequestExecutor.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.File;
import java.io.IOException;
@@ -12,10 +12,10 @@ import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.ContentType;
-import me.chanjar.weixin.bean.result.WxError;
-import me.chanjar.weixin.bean.result.WxQrCodeTicket;
-import me.chanjar.weixin.exception.WxErrorException;
-import me.chanjar.weixin.util.fs.FileUtils;
+import me.chanjar.weixin.mp.bean.result.WxError;
+import me.chanjar.weixin.mp.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.mp.exception.WxErrorException;
+import me.chanjar.weixin.mp.util.fs.FileUtils;
/**
* 获得QrCode图片 请求执行器
diff --git a/src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/RequestExecutor.java
similarity index 85%
rename from src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/RequestExecutor.java
index 589016728..f729d08a7 100644
--- a/src/main/java/me/chanjar/weixin/util/http/RequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/RequestExecutor.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.IOException;
@@ -6,7 +6,7 @@ import org.apache.http.client.ClientProtocolException;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.exception.WxErrorException;
/**
* http请求执行器
diff --git a/src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimpleGetRequestExecutor.java
similarity index 87%
rename from src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimpleGetRequestExecutor.java
index 079241070..d03145164 100644
--- a/src/main/java/me/chanjar/weixin/util/http/SimpleGetRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimpleGetRequestExecutor.java
@@ -1,14 +1,13 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.IOException;
+import me.chanjar.weixin.mp.bean.result.WxError;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
-import me.chanjar.weixin.bean.result.WxError;
-import me.chanjar.weixin.exception.WxErrorException;
-
/**
* 简单的GET请求执行器,请求的参数是String, 返回的结果也是String
* @author chanjarster
diff --git a/src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimplePostRequestExecutor.java
similarity index 88%
rename from src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimplePostRequestExecutor.java
index ffb053272..2af893268 100644
--- a/src/main/java/me/chanjar/weixin/util/http/SimplePostRequestExecutor.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/SimplePostRequestExecutor.java
@@ -1,9 +1,9 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.IOException;
-import me.chanjar.weixin.bean.result.WxError;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.result.WxError;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import org.apache.http.Consts;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
diff --git a/src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/Utf8ResponseHandler.java
similarity index 96%
rename from src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/Utf8ResponseHandler.java
index 3c19c132e..e4b008def 100644
--- a/src/main/java/me/chanjar/weixin/util/http/Utf8ResponseHandler.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/http/Utf8ResponseHandler.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.http;
+package me.chanjar.weixin.mp.util.http;
import java.io.IOException;
diff --git a/src/main/java/me/chanjar/weixin/util/json/GsonHelper.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/GsonHelper.java
similarity index 98%
rename from src/main/java/me/chanjar/weixin/util/json/GsonHelper.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/GsonHelper.java
index 4dc16de05..7957dae05 100644
--- a/src/main/java/me/chanjar/weixin/util/json/GsonHelper.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/GsonHelper.java
@@ -6,7 +6,7 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.JsonElement;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxAccessTokenAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxAccessTokenAdapter.java
similarity index 93%
rename from src/main/java/me/chanjar/weixin/util/json/WxAccessTokenAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxAccessTokenAdapter.java
index 60e3475af..b91e678ca 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxAccessTokenAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxAccessTokenAdapter.java
@@ -6,10 +6,10 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
-import me.chanjar.weixin.bean.WxAccessToken;
+import me.chanjar.weixin.mp.bean.WxAccessToken;
import java.lang.reflect.Type;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxCustomMessageGsonAdapter.java
similarity index 96%
rename from src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxCustomMessageGsonAdapter.java
index d1dc55c6f..699b7d3fd 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxCustomMessageGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxCustomMessageGsonAdapter.java
@@ -6,12 +6,12 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.api.WxConsts;
-import me.chanjar.weixin.bean.WxCustomMessage;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.bean.WxCustomMessage;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxErrorAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxErrorAdapter.java
new file mode 100644
index 000000000..e85314b01
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxErrorAdapter.java
@@ -0,0 +1,36 @@
+/*
+ * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
+ *
+ * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
+ * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
+ * arose from modification of the original source, or other redistribution of this source
+ * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
+ */
+package me.chanjar.weixin.mp.util.json;
+
+import com.google.gson.*;
+import me.chanjar.weixin.mp.bean.result.WxError;
+
+import java.lang.reflect.Type;
+
+/**
+ *
+ * @author Daniel Qian
+ *
+ */
+public class WxErrorAdapter implements JsonDeserializer {
+
+ public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+ WxError wxError = new WxError();
+ JsonObject wxErrorJsonObject = json.getAsJsonObject();
+
+ if (wxErrorJsonObject.get("errcode") != null && !wxErrorJsonObject.get("errcode").isJsonNull()) {
+ wxError.setErrorCode(GsonHelper.getAsPrimitiveInt(wxErrorJsonObject.get("errcode")));
+ }
+ if (wxErrorJsonObject.get("errmsg") != null && !wxErrorJsonObject.get("errmsg").isJsonNull()) {
+ wxError.setErrorMsg(GsonHelper.getAsString(wxErrorJsonObject.get("errmsg")));
+ }
+ return wxError;
+ }
+
+}
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxGroupGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGroupGsonAdapter.java
similarity index 96%
rename from src/main/java/me/chanjar/weixin/util/json/WxGroupGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGroupGsonAdapter.java
index c95e84e93..9a4214302 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxGroupGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGroupGsonAdapter.java
@@ -6,11 +6,11 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.bean.WxGroup;
+import me.chanjar.weixin.mp.bean.WxGroup;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGsonBuilder.java
similarity index 93%
rename from src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGsonBuilder.java
index 09d8247cd..320335039 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxGsonBuilder.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxGsonBuilder.java
@@ -1,10 +1,11 @@
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import me.chanjar.weixin.bean.*;
-import me.chanjar.weixin.bean.result.*;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import me.chanjar.weixin.mp.bean.*;
+import me.chanjar.weixin.mp.bean.result.*;
public class WxGsonBuilder {
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassMessageGsonAdapter.java
similarity index 94%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassMessageGsonAdapter.java
index cd985a465..5a24b5bb9 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassMessageGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassMessageGsonAdapter.java
@@ -6,12 +6,12 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.api.WxConsts;
-import me.chanjar.weixin.bean.WxMassGroupMessage;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.bean.WxMassGroupMessage;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassNewsGsonAdapter.java
similarity index 95%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassNewsGsonAdapter.java
index fcaa4c1ad..42b35da19 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassNewsGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassNewsGsonAdapter.java
@@ -6,11 +6,11 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.bean.WxMassNews;
+import me.chanjar.weixin.mp.bean.WxMassNews;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassOpenIdsMessageGsonAdapter.java
similarity index 94%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassOpenIdsMessageGsonAdapter.java
index 3cb1e7f6b..2b8a7403d 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassOpenIdsMessageGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassOpenIdsMessageGsonAdapter.java
@@ -6,12 +6,12 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.api.WxConsts;
-import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.bean.WxMassOpenIdsMessage;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassSendResultAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassSendResultAdapter.java
similarity index 93%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassSendResultAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassSendResultAdapter.java
index ad5dbd6e7..da8085d13 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassSendResultAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassSendResultAdapter.java
@@ -6,10 +6,10 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
-import me.chanjar.weixin.bean.result.WxMassSendResult;
+import me.chanjar.weixin.mp.bean.result.WxMassSendResult;
import java.lang.reflect.Type;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassUploadResultAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassUploadResultAdapter.java
similarity index 94%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassUploadResultAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassUploadResultAdapter.java
index c58f35244..30fa554c1 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassUploadResultAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassUploadResultAdapter.java
@@ -6,10 +6,10 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
-import me.chanjar.weixin.bean.result.WxMassUploadResult;
+import me.chanjar.weixin.mp.bean.result.WxMassUploadResult;
import java.lang.reflect.Type;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMassVideoAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassVideoAdapter.java
similarity index 91%
rename from src/main/java/me/chanjar/weixin/util/json/WxMassVideoAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassVideoAdapter.java
index ba98acf8a..d7071f9b8 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMassVideoAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMassVideoAdapter.java
@@ -6,10 +6,10 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
-import me.chanjar.weixin.bean.WxMassVideo;
+import me.chanjar.weixin.mp.bean.WxMassVideo;
import java.lang.reflect.Type;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMediaUploadResultAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMediaUploadResultAdapter.java
similarity index 94%
rename from src/main/java/me/chanjar/weixin/util/json/WxMediaUploadResultAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMediaUploadResultAdapter.java
index 0fbfa7acf..eec8519c5 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMediaUploadResultAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMediaUploadResultAdapter.java
@@ -6,10 +6,10 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import com.google.gson.*;
-import me.chanjar.weixin.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.mp.bean.result.WxMediaUploadResult;
import java.lang.reflect.Type;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMenuGsonAdapter.java
similarity index 97%
rename from src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMenuGsonAdapter.java
index 6fae9d2c9..f60d39ea5 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxMenuGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMenuGsonAdapter.java
@@ -6,11 +6,11 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.bean.WxMenu;
+import me.chanjar.weixin.mp.bean.WxMenu;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxQrCodeTicketAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxQrCodeTicketAdapter.java
new file mode 100644
index 000000000..441644792
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxQrCodeTicketAdapter.java
@@ -0,0 +1,39 @@
+/*
+ * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved.
+ *
+ * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended
+ * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction
+ * arose from modification of the original source, or other redistribution of this source
+ * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
+ */
+package me.chanjar.weixin.mp.util.json;
+
+import com.google.gson.*;
+import me.chanjar.weixin.mp.bean.result.WxQrCodeTicket;
+
+import java.lang.reflect.Type;
+
+/**
+ *
+ * @author Daniel Qian
+ *
+ */
+public class WxQrCodeTicketAdapter implements JsonDeserializer {
+
+ public WxQrCodeTicket deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+ WxQrCodeTicket ticket = new WxQrCodeTicket();
+ JsonObject ticketJsonObject = json.getAsJsonObject();
+
+ if (ticketJsonObject.get("ticket") != null && !ticketJsonObject.get("ticket").isJsonNull()) {
+ ticket.setTicket(GsonHelper.getAsString(ticketJsonObject.get("ticket")));
+ }
+ if (ticketJsonObject.get("expire_seconds") != null && !ticketJsonObject.get("expire_seconds").isJsonNull()) {
+ ticket.setExpire_seconds(GsonHelper.getAsPrimitiveInt(ticketJsonObject.get("expire_seconds")));
+ }
+ if (ticketJsonObject.get("url") != null && !ticketJsonObject.get("url").isJsonNull()) {
+ ticket.setUrl(GsonHelper.getAsString(ticketJsonObject.get("url")));
+ }
+ return ticket;
+ }
+
+}
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserGsonAdapter.java
similarity index 95%
rename from src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserGsonAdapter.java
index ea50adfc0..d6bd0f9c8 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxUserGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserGsonAdapter.java
@@ -6,11 +6,11 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.bean.result.WxUser;
+import me.chanjar.weixin.mp.bean.result.WxUser;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
diff --git a/src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserListGsonAdapter.java
similarity index 94%
rename from src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserListGsonAdapter.java
index fe5ae7305..56fa11387 100644
--- a/src/main/java/me/chanjar/weixin/util/json/WxUserListGsonAdapter.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxUserListGsonAdapter.java
@@ -6,11 +6,11 @@
* arose from modification of the original source, or other redistribution of this source
* is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD.
*/
-package me.chanjar.weixin.util.json;
+package me.chanjar.weixin.mp.util.json;
import java.lang.reflect.Type;
-import me.chanjar.weixin.bean.result.WxUserList;
+import me.chanjar.weixin.mp.bean.result.WxUserList;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
diff --git a/src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/AdapterCDATA.java
similarity index 92%
rename from src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/AdapterCDATA.java
index edcceed88..b7e137153 100644
--- a/src/main/java/me/chanjar/weixin/util/xml/AdapterCDATA.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/AdapterCDATA.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.xml;
+package me.chanjar.weixin.mp.util.xml;
import javax.xml.bind.annotation.adapters.XmlAdapter;
diff --git a/src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/MediaIdMarshaller.java
similarity index 91%
rename from src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/MediaIdMarshaller.java
index 392251369..1be8a080e 100644
--- a/src/main/java/me/chanjar/weixin/util/xml/MediaIdMarshaller.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/MediaIdMarshaller.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.xml;
+package me.chanjar.weixin.mp.util.xml;
import javax.xml.bind.annotation.adapters.XmlAdapter;
diff --git a/src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XmlTransformer.java
similarity index 97%
rename from src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java
rename to weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XmlTransformer.java
index 026cc0a56..707b8743c 100644
--- a/src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/xml/XmlTransformer.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.util.xml;
+package me.chanjar.weixin.mp.util.xml;
import java.io.IOException;
import java.io.InputStream;
@@ -9,6 +9,7 @@ import java.io.Writer;
import javax.xml.bind.*;
import me.chanjar.weixin.bean.*;
+import me.chanjar.weixin.mp.bean.*;
import org.xml.sax.InputSource;
import com.sun.xml.bind.marshaller.CharacterEscapeHandler;
diff --git a/src/test/java/me/chanjar/weixin/api/ApiTestModule.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/ApiTestModule.java
similarity index 90%
rename from src/test/java/me/chanjar/weixin/api/ApiTestModule.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/ApiTestModule.java
index 68a9f8a27..07a20e4a3 100644
--- a/src/test/java/me/chanjar/weixin/api/ApiTestModule.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/ApiTestModule.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.io.InputStream;
@@ -9,9 +9,9 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
-import me.chanjar.weixin.api.WxInMemoryConfigStorage;
-import me.chanjar.weixin.api.WxServiceImpl;
-import me.chanjar.weixin.util.xml.XmlTransformer;
+import me.chanjar.weixin.mp.api.WxConfigStorage;
+import me.chanjar.weixin.mp.api.WxInMemoryConfigStorage;
+import me.chanjar.weixin.mp.api.WxServiceImpl;
import com.google.inject.Binder;
import com.google.inject.Module;
diff --git a/src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxBaseAPITest.java
similarity index 89%
rename from src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxBaseAPITest.java
index af5246157..b6f565e65 100644
--- a/src/test/java/me/chanjar/weixin/api/WxBaseAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxBaseAPITest.java
@@ -1,11 +1,11 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import org.apache.commons.lang3.StringUtils;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxCustomMessageAPITest.java
similarity index 86%
rename from src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxCustomMessageAPITest.java
index d8a955a55..5a601a518 100644
--- a/src/test/java/me/chanjar/weixin/api/WxCustomMessageAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxCustomMessageAPITest.java
@@ -1,10 +1,10 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.WxCustomMessage;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.WxCustomMessage;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxGroupAPITest.java
similarity index 89%
rename from src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxGroupAPITest.java
index 74abb5637..7fdb520f8 100644
--- a/src/test/java/me/chanjar/weixin/api/WxGroupAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxGroupAPITest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.util.List;
@@ -6,8 +6,8 @@ import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.WxGroup;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.WxGroup;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMassMessageAPITest.java
similarity index 89%
rename from src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMassMessageAPITest.java
index 26e8b352c..53cf74f94 100644
--- a/src/test/java/me/chanjar/weixin/api/WxMassMessageAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMassMessageAPITest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.io.IOException;
import java.io.InputStream;
@@ -8,16 +8,15 @@ import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.api.ApiTestModule.WxXmlConfigStorage;
-import me.chanjar.weixin.bean.WxMassGroupMessage;
-import me.chanjar.weixin.bean.WxMassNews;
-import me.chanjar.weixin.bean.WxMassNews.WxMassNewsArticle;
-import me.chanjar.weixin.bean.WxMassOpenIdsMessage;
-import me.chanjar.weixin.bean.WxMassVideo;
-import me.chanjar.weixin.bean.result.WxMassSendResult;
-import me.chanjar.weixin.bean.result.WxMassUploadResult;
-import me.chanjar.weixin.bean.result.WxMediaUploadResult;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.WxMassGroupMessage;
+import me.chanjar.weixin.mp.bean.WxMassNews;
+import me.chanjar.weixin.mp.bean.WxMassNews.WxMassNewsArticle;
+import me.chanjar.weixin.mp.bean.WxMassOpenIdsMessage;
+import me.chanjar.weixin.mp.bean.WxMassVideo;
+import me.chanjar.weixin.mp.bean.result.WxMassSendResult;
+import me.chanjar.weixin.mp.bean.result.WxMassUploadResult;
+import me.chanjar.weixin.mp.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
@@ -36,7 +35,7 @@ public class WxMassMessageAPITest {
@Test
public void testTextMassOpenIdsMessageSend() throws WxErrorException {
// 发送群发消息
- WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage;
+ ApiTestModule.WxXmlConfigStorage configProvider = (ApiTestModule.WxXmlConfigStorage) wxService.wxConfigStorage;
WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage();
massMessage.setMsgType(WxConsts.MASS_MSG_TEXT);
massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World");
@@ -50,7 +49,7 @@ public class WxMassMessageAPITest {
@Test(dataProvider="massMessages")
public void testMediaMassOpenIdsMessageSend(String massMsgType, String mediaId) throws WxErrorException, IOException {
// 发送群发消息
- WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage;
+ ApiTestModule.WxXmlConfigStorage configProvider = (ApiTestModule.WxXmlConfigStorage) wxService.wxConfigStorage;
WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage();
massMessage.setMsgType(massMsgType);
massMessage.setMediaId(mediaId);
diff --git a/src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMediaAPITest.java
similarity index 93%
rename from src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMediaAPITest.java
index f5d59594f..58c7c25fc 100644
--- a/src/test/java/me/chanjar/weixin/api/WxMediaAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMediaAPITest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.io.IOException;
import java.io.InputStream;
@@ -10,8 +10,8 @@ import org.testng.annotations.DataProvider;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.result.WxMediaUploadResult;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.result.WxMediaUploadResult;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMenuAPITest.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMenuAPITest.java
index e0f3d3a3c..1050bc944 100644
--- a/src/test/java/me/chanjar/weixin/api/WxMenuAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMenuAPITest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import javax.xml.bind.JAXBException;
@@ -9,9 +9,9 @@ import org.testng.annotations.Test;
import com.google.inject.Inject;
-import me.chanjar.weixin.bean.WxMenu;
-import me.chanjar.weixin.bean.WxMenu.WxMenuButton;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.WxMenu;
+import me.chanjar.weixin.mp.bean.WxMenu.WxMenuButton;
+import me.chanjar.weixin.mp.exception.WxErrorException;
/**
* 测试菜单
diff --git a/src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMessageRouterTest.java
similarity index 94%
rename from src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMessageRouterTest.java
index f1d1163dc..9b944bcbc 100644
--- a/src/test/java/me/chanjar/weixin/api/WxMessageRouterTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMessageRouterTest.java
@@ -1,16 +1,16 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.util.Map;
-import me.chanjar.weixin.api.WxConsts;
-import me.chanjar.weixin.api.WxMessageHandler;
-import me.chanjar.weixin.api.WxMessageRouter;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.api.WxMessageHandler;
+import me.chanjar.weixin.mp.api.WxMessageRouter;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.WxXmlMessage;
-import me.chanjar.weixin.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
/**
* 测试消息路由器
diff --git a/src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxQrCodeAPITest.java
similarity index 89%
rename from src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxQrCodeAPITest.java
index 1c07072f5..0e4fef1e1 100644
--- a/src/test/java/me/chanjar/weixin/api/WxQrCodeAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxQrCodeAPITest.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import java.io.File;
@@ -6,8 +6,8 @@ import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.result.WxQrCodeTicket;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.bean.result.WxQrCodeTicket;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxShortUrlAPITest.java
similarity index 85%
rename from src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxShortUrlAPITest.java
index 3df6e2178..ac815b030 100644
--- a/src/test/java/me/chanjar/weixin/api/WxShortUrlAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxShortUrlAPITest.java
@@ -1,10 +1,10 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/api/WxUserAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxUserAPITest.java
similarity index 87%
rename from src/test/java/me/chanjar/weixin/api/WxUserAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxUserAPITest.java
index f737dba45..ce4ba6c4e 100644
--- a/src/test/java/me/chanjar/weixin/api/WxUserAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxUserAPITest.java
@@ -1,13 +1,13 @@
-package me.chanjar.weixin.api;
+package me.chanjar.weixin.mp.api;
import org.testng.Assert;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import me.chanjar.weixin.api.ApiTestModule.WxXmlConfigStorage;
-import me.chanjar.weixin.bean.result.WxUser;
-import me.chanjar.weixin.bean.result.WxUserList;
-import me.chanjar.weixin.exception.WxErrorException;
+import me.chanjar.weixin.mp.api.ApiTestModule.WxXmlConfigStorage;
+import me.chanjar.weixin.mp.bean.result.WxUser;
+import me.chanjar.weixin.mp.bean.result.WxUserList;
+import me.chanjar.weixin.mp.exception.WxErrorException;
import com.google.inject.Inject;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxAccessTokenTest.java
similarity index 82%
rename from src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxAccessTokenTest.java
index 7391f49b7..2ada1fbd3 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxAccessTokenTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxAccessTokenTest.java
@@ -1,5 +1,6 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxAccessToken;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxCustomMessageTest.java
similarity index 96%
rename from src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxCustomMessageTest.java
index 1d483898d..730900537 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxCustomMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxCustomMessageTest.java
@@ -1,10 +1,11 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxCustomMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
-import me.chanjar.weixin.api.WxConsts;
-import me.chanjar.weixin.bean.WxCustomMessage.WxArticle;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.bean.WxCustomMessage.WxArticle;
@Test
public class WxCustomMessageTest {
diff --git a/src/test/java/me/chanjar/weixin/bean/WxErrorTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxErrorTest.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/bean/WxErrorTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxErrorTest.java
index a7501d16f..f20f20807 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxErrorTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxErrorTest.java
@@ -1,9 +1,9 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
import org.testng.Assert;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.result.WxError;
+import me.chanjar.weixin.mp.bean.result.WxError;
@Test
public class WxErrorTest {
diff --git a/src/test/java/me/chanjar/weixin/bean/WxMenuTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMenuTest.java
similarity index 95%
rename from src/test/java/me/chanjar/weixin/bean/WxMenuTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMenuTest.java
index de5e86912..0ba058c28 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxMenuTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxMenuTest.java
@@ -1,10 +1,11 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxMenu;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-import me.chanjar.weixin.bean.WxMenu.WxMenuButton;
+import me.chanjar.weixin.mp.bean.WxMenu.WxMenuButton;
@Test
public class WxMenuTest {
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlMessageTest.java
similarity index 97%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlMessageTest.java
index 8517a8b0c..3db6e8290 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlMessageTest.java
@@ -1,6 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
-import me.chanjar.weixin.api.WxConsts;
+import me.chanjar.weixin.mp.api.WxConsts;
+import me.chanjar.weixin.mp.bean.WxXmlMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutImageMessageTest.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutImageMessageTest.java
index bbb5ba6e2..0d8b06494 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutImageMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutImageMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutImageMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutMusicMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutMusicMessageTest.java
similarity index 94%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutMusicMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutMusicMessageTest.java
index 9a9ef6b2d..b3c4c6626 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutMusicMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutMusicMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutMusicMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutNewsMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutNewsMessageTest.java
similarity index 96%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutNewsMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutNewsMessageTest.java
index 3bac0da99..1fcdbbc54 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutNewsMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutNewsMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutMewsMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutTextMessageTest.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutTextMessageTest.java
index d3168ba63..58d7840c0 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutTextMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutTextMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutTextMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutVideoMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVideoMessageTest.java
similarity index 93%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutVideoMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVideoMessageTest.java
index 5a61e347c..16e08fa5c 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutVideoMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVideoMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutVideoMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessageTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVoiceMessageTest.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessageTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVoiceMessageTest.java
index e59608752..b3aee0e04 100644
--- a/src/test/java/me/chanjar/weixin/bean/WxXmlOutVoiceMessageTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/WxXmlOutVoiceMessageTest.java
@@ -1,5 +1,7 @@
-package me.chanjar.weixin.bean;
+package me.chanjar.weixin.mp.bean;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutVoiceMessage;
import org.testng.Assert;
import org.testng.annotations.Test;
diff --git a/src/test/java/me/chanjar/weixin/demo/WxTestConfigStorage.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestConfigStorage.java
similarity index 91%
rename from src/test/java/me/chanjar/weixin/demo/WxTestConfigStorage.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestConfigStorage.java
index d5921e0c0..3cfe9e478 100644
--- a/src/test/java/me/chanjar/weixin/demo/WxTestConfigStorage.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestConfigStorage.java
@@ -1,6 +1,6 @@
-package me.chanjar.weixin.demo;
+package me.chanjar.weixin.mp.demo;
-import me.chanjar.weixin.api.WxInMemoryConfigStorage;
+import me.chanjar.weixin.mp.api.WxInMemoryConfigStorage;
import org.xml.sax.InputSource;
import javax.xml.bind.JAXBContext;
diff --git a/src/test/java/me/chanjar/weixin/demo/WxTestServer.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServer.java
similarity index 92%
rename from src/test/java/me/chanjar/weixin/demo/WxTestServer.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServer.java
index e9c6d9d09..c51f0f8d5 100644
--- a/src/test/java/me/chanjar/weixin/demo/WxTestServer.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServer.java
@@ -1,4 +1,4 @@
-package me.chanjar.weixin.demo;
+package me.chanjar.weixin.mp.demo;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletHandler;
diff --git a/src/test/java/me/chanjar/weixin/demo/WxTestServlet.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServlet.java
similarity index 94%
rename from src/test/java/me/chanjar/weixin/demo/WxTestServlet.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServlet.java
index aa042916d..91e2e2660 100644
--- a/src/test/java/me/chanjar/weixin/demo/WxTestServlet.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/demo/WxTestServlet.java
@@ -1,9 +1,9 @@
-package me.chanjar.weixin.demo;
+package me.chanjar.weixin.mp.demo;
-import me.chanjar.weixin.api.*;
-import me.chanjar.weixin.bean.WxXmlMessage;
-import me.chanjar.weixin.bean.WxXmlOutMessage;
-import me.chanjar.weixin.bean.WxXmlOutTextMessage;
+import me.chanjar.weixin.mp.api.*;
+import me.chanjar.weixin.mp.bean.WxXmlMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutMessage;
+import me.chanjar.weixin.mp.bean.WxXmlOutTextMessage;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.ServletException;
diff --git a/src/test/java/me/chanjar/weixin/util/crypto/WxCryptUtilTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtilTest.java
similarity index 96%
rename from src/test/java/me/chanjar/weixin/util/crypto/WxCryptUtilTest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtilTest.java
index 0c61d3d08..bac5ae5a9 100755
--- a/src/test/java/me/chanjar/weixin/util/crypto/WxCryptUtilTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/util/crypto/WxCryptUtilTest.java
@@ -1,5 +1,6 @@
-package me.chanjar.weixin.util.crypto;
+package me.chanjar.weixin.mp.util.crypto;
+import me.chanjar.weixin.mp.util.crypto.WxCryptUtil;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
diff --git a/weixin-java-mp/src/test/resources/mm.jpeg b/weixin-java-mp/src/test/resources/mm.jpeg
new file mode 100644
index 000000000..183699e96
Binary files /dev/null and b/weixin-java-mp/src/test/resources/mm.jpeg differ
diff --git a/weixin-java-mp/src/test/resources/mm.mp3 b/weixin-java-mp/src/test/resources/mm.mp3
new file mode 100644
index 000000000..d818e510b
Binary files /dev/null and b/weixin-java-mp/src/test/resources/mm.mp3 differ
diff --git a/weixin-java-mp/src/test/resources/mm.mp4 b/weixin-java-mp/src/test/resources/mm.mp4
new file mode 100644
index 000000000..ff74317ae
Binary files /dev/null and b/weixin-java-mp/src/test/resources/mm.mp4 differ
diff --git a/src/test/resources/test-config.sample.xml b/weixin-java-mp/src/test/resources/test-config.sample.xml
similarity index 100%
rename from src/test/resources/test-config.sample.xml
rename to weixin-java-mp/src/test/resources/test-config.sample.xml
diff --git a/weixin-java-mp/src/test/resources/testng.xml b/weixin-java-mp/src/test/resources/testng.xml
new file mode 100644
index 000000000..4318ffdb8
--- /dev/null
+++ b/weixin-java-mp/src/test/resources/testng.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+