| @@ -17,7 +17,7 @@ weixin-java-tools | |||||
| <dependency> | <dependency> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-mp</artifactId> | <artifactId>weixin-java-mp</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| </dependency> | </dependency> | ||||
| ``` | ``` | ||||
| @@ -27,7 +27,7 @@ weixin-java-tools | |||||
| <dependency> | <dependency> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-cp</artifactId> | <artifactId>weixin-java-cp</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| </dependency> | </dependency> | ||||
| ``` | ``` | ||||
| @@ -5,7 +5,7 @@ | |||||
| <modelVersion>4.0.0</modelVersion> | <modelVersion>4.0.0</modelVersion> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-parent</artifactId> | <artifactId>weixin-java-parent</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| <packaging>pom</packaging> | <packaging>pom</packaging> | ||||
| <name>WeiXin Java Tools - Parent</name> | <name>WeiXin Java Tools - Parent</name> | ||||
| <description>微信公众号、企业号上级POM</description> | <description>微信公众号、企业号上级POM</description> | ||||
| @@ -6,7 +6,7 @@ | |||||
| <parent> | <parent> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-parent</artifactId> | <artifactId>weixin-java-parent</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| </parent> | </parent> | ||||
| <artifactId>weixin-java-common</artifactId> | <artifactId>weixin-java-common</artifactId> | ||||
| @@ -6,7 +6,7 @@ | |||||
| <parent> | <parent> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-parent</artifactId> | <artifactId>weixin-java-parent</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| </parent> | </parent> | ||||
| <artifactId>weixin-java-cp</artifactId> | <artifactId>weixin-java-cp</artifactId> | ||||
| @@ -7,6 +7,7 @@ import com.google.gson.JsonPrimitive; | |||||
| import com.google.gson.internal.Streams; | import com.google.gson.internal.Streams; | ||||
| import com.google.gson.reflect.TypeToken; | import com.google.gson.reflect.TypeToken; | ||||
| import com.google.gson.stream.JsonReader; | import com.google.gson.stream.JsonReader; | ||||
| import com.sun.media.sound.SoftTuning; | |||||
| import me.chanjar.weixin.common.bean.WxAccessToken; | import me.chanjar.weixin.common.bean.WxAccessToken; | ||||
| import me.chanjar.weixin.common.bean.WxJsapiSignature; | import me.chanjar.weixin.common.bean.WxJsapiSignature; | ||||
| import me.chanjar.weixin.common.bean.WxMenu; | import me.chanjar.weixin.common.bean.WxMenu; | ||||
| @@ -46,6 +47,7 @@ import java.io.File; | |||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.InputStream; | import java.io.InputStream; | ||||
| import java.io.StringReader; | import java.io.StringReader; | ||||
| import java.math.BigDecimal; | |||||
| import java.security.NoSuchAlgorithmException; | import java.security.NoSuchAlgorithmException; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.UUID; | import java.util.UUID; | ||||
| @@ -445,7 +447,7 @@ public class WxCpServiceImpl implements WxCpService { | |||||
| @Override | @Override | ||||
| public String[] oauth2getUserInfo(String code) throws WxErrorException { | public String[] oauth2getUserInfo(String code) throws WxErrorException { | ||||
| return oauth2getUserInfo(code, wxCpConfigStorage.getAgentId()); | |||||
| return oauth2getUserInfo(wxCpConfigStorage.getAgentId(), code); | |||||
| } | } | ||||
| @Override | @Override | ||||
| @@ -626,4 +628,12 @@ public class WxCpServiceImpl implements WxCpService { | |||||
| this.sessionManager = sessionManager; | this.sessionManager = sessionManager; | ||||
| } | } | ||||
| public static void main(String[] args) { | |||||
| Float a = 3.1f; | |||||
| System.out.println(3.1d); | |||||
| System.out.println(new BigDecimal(3.1d)); | |||||
| System.out.println(new BigDecimal(a)); | |||||
| System.out.println(a.toString()); | |||||
| System.out.println(a.doubleValue()); | |||||
| } | |||||
| } | } | ||||
| @@ -34,7 +34,7 @@ public class WxCpMessageGsonAdapter implements JsonSerializer<WxCpMessage> { | |||||
| messageJson.addProperty("toparty", message.getToParty()); | messageJson.addProperty("toparty", message.getToParty()); | ||||
| } | } | ||||
| if (StringUtils.isNotBlank(message.getToTag())) { | if (StringUtils.isNotBlank(message.getToTag())) { | ||||
| messageJson.addProperty("totag", message.getToUser()); | |||||
| messageJson.addProperty("totag", message.getToTag()); | |||||
| } | } | ||||
| if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgType())) { | if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgType())) { | ||||
| JsonObject text = new JsonObject(); | JsonObject text = new JsonObject(); | ||||
| @@ -19,17 +19,17 @@ import java.lang.reflect.Type; | |||||
| */ | */ | ||||
| public class WxCpTagGsonAdapter implements JsonSerializer<WxCpTag>, JsonDeserializer<WxCpTag> { | public class WxCpTagGsonAdapter implements JsonSerializer<WxCpTag>, JsonDeserializer<WxCpTag> { | ||||
| public JsonElement serialize(WxCpTag group, Type typeOfSrc, JsonSerializationContext context) { | |||||
| public JsonElement serialize(WxCpTag tag, Type typeOfSrc, JsonSerializationContext context) { | |||||
| JsonObject o = new JsonObject(); | JsonObject o = new JsonObject(); | ||||
| o.addProperty("tagid", group.getId()); | |||||
| o.addProperty("tagname", group.getName()); | |||||
| o.addProperty("tagid", tag.getId()); | |||||
| o.addProperty("tagname", tag.getName()); | |||||
| return o; | return o; | ||||
| } | } | ||||
| public WxCpTag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) | public WxCpTag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) | ||||
| throws JsonParseException { | throws JsonParseException { | ||||
| JsonObject jsonObject = json.getAsJsonObject(); | JsonObject jsonObject = json.getAsJsonObject(); | ||||
| return new WxCpTag(GsonHelper.getString(jsonObject, "tagid"), GsonHelper.getString(jsonObject, "name")); | |||||
| return new WxCpTag(GsonHelper.getString(jsonObject, "tagid"), GsonHelper.getString(jsonObject, "tagname")); | |||||
| } | } | ||||
| } | } | ||||
| @@ -6,7 +6,7 @@ | |||||
| <parent> | <parent> | ||||
| <groupId>me.chanjar</groupId> | <groupId>me.chanjar</groupId> | ||||
| <artifactId>weixin-java-parent</artifactId> | <artifactId>weixin-java-parent</artifactId> | ||||
| <version>1.1.3</version> | |||||
| <version>1.1.4</version> | |||||
| </parent> | </parent> | ||||
| <artifactId>weixin-java-mp</artifactId> | <artifactId>weixin-java-mp</artifactId> | ||||
| <name>WeiXin Java Tools - MP</name> | <name>WeiXin Java Tools - MP</name> | ||||
| @@ -387,6 +387,18 @@ public interface WxMpService { | |||||
| */ | */ | ||||
| public String oauth2buildAuthorizationUrl(String scope, String state); | public String oauth2buildAuthorizationUrl(String scope, String state); | ||||
| /** | |||||
| * <pre> | |||||
| * 构造oauth2授权的url连接 | |||||
| * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息 | |||||
| * </pre> | |||||
| * @param redirectURI | |||||
| * 用户授权完成后的重定向链接,无需urlencode, 方法内会进行encode | |||||
| * @param scope | |||||
| * @param state | |||||
| * @return code | |||||
| */ | |||||
| public String oauth2buildAuthorizationUrl(String redirectURI, String scope, String state); | |||||
| /** | /** | ||||
| * <pre> | * <pre> | ||||
| * 用code换取oauth2的access token | * 用code换取oauth2的access token | ||||
| @@ -363,9 +363,14 @@ public class WxMpServiceImpl implements WxMpService { | |||||
| @Override | @Override | ||||
| public String oauth2buildAuthorizationUrl(String scope, String state) { | public String oauth2buildAuthorizationUrl(String scope, String state) { | ||||
| return this.oauth2buildAuthorizationUrl(wxMpConfigStorage.getOauth2redirectUri(), scope, state); | |||||
| } | |||||
| @Override | |||||
| public String oauth2buildAuthorizationUrl(String redirectURI, String scope, String state) { | |||||
| String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" ; | String url = "https://open.weixin.qq.com/connect/oauth2/authorize?" ; | ||||
| url += "appid=" + wxMpConfigStorage.getAppId(); | url += "appid=" + wxMpConfigStorage.getAppId(); | ||||
| url += "&redirect_uri=" + URIUtil.encodeURIComponent(wxMpConfigStorage.getOauth2redirectUri()); | |||||
| url += "&redirect_uri=" + URIUtil.encodeURIComponent(redirectURI); | |||||
| url += "&response_type=code"; | url += "&response_type=code"; | ||||
| url += "&scope=" + scope; | url += "&scope=" + scope; | ||||
| if (state != null) { | if (state != null) { | ||||