Przeglądaj źródła

:art: #1897 【小程序】接口请求地址的域名增加自定义设置的支持

Binary Wang 4 lat temu
rodzic
commit
87431f3ffe

+ 4 - 3
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaMsgService.java

@@ -1,13 +1,14 @@
 package cn.binarywang.wx.miniapp.api;
 
-import cn.binarywang.wx.miniapp.bean.*;
+import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage;
+import cn.binarywang.wx.miniapp.bean.WxMaUpdatableMsg;
 import com.google.gson.JsonObject;
 import me.chanjar.weixin.common.error.WxErrorException;
 
 /**
- * <pre>
  * 消息发送接口
- * </pre>
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */

+ 4 - 0
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java

@@ -243,6 +243,10 @@ public abstract class BaseWxMaServiceImpl<H, P> implements WxMaService, RequestH
     }
     String accessToken = getAccessToken(false);
 
+    if(StringUtils.isNotEmpty(this.getWxMaConfig().getApiHostUrl())){
+      uri = uri.replace("https://api.weixin.qq.com",this.getWxMaConfig().getApiHostUrl()  );
+    }
+
     String uriWithAccessToken = uri + (uri.contains("?") ? "&" : "?") + "access_token=" + accessToken;
 
     try {

+ 2 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/template/WxMaPubTemplateTitleListResult.java

@@ -22,7 +22,8 @@ public class WxMaPubTemplateTitleListResult implements Serializable {
   }
 
   @Data
-  public static class TemplateItem {
+  public static class TemplateItem implements Serializable {
+    private static final long serialVersionUID = 6888726696879905332L;
 
     private Integer type;
 

+ 17 - 2
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/WxMaConfig.java

@@ -1,10 +1,10 @@
 package cn.binarywang.wx.miniapp.config;
 
-import java.util.concurrent.locks.Lock;
-
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
 
+import java.util.concurrent.locks.Lock;
+
 /**
  * 小程序配置
  *
@@ -219,4 +219,19 @@ public interface WxMaConfig {
    */
   boolean autoRefreshToken();
 
+  /**
+   * 设置自定义的apiHost地址
+   * 具体取值,可以参考https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Interface_field_description.html
+   *
+   * @param apiHostUrl api域名地址
+   */
+  void setApiHostUrl(String apiHostUrl);
+
+  /**
+   * 获取自定义的apiHost地址,用于替换原请求中的https://api.weixin.qq.com
+   * 具体取值,可以参考https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Interface_field_description.html
+   *
+   * @return  自定义的api域名地址
+   */
+  String getApiHostUrl();
 }

+ 8 - 1
weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java

@@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.config.impl;
 
 import cn.binarywang.wx.miniapp.config.WxMaConfig;
 import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
+import lombok.Getter;
 import me.chanjar.weixin.common.bean.WxAccessToken;
 import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
 
@@ -14,6 +15,7 @@ import java.util.concurrent.locks.ReentrantLock;
  *
  * @author <a href="https://github.com/binarywang">Binary Wang</a>
  */
+@Getter
 public class WxMaDefaultConfigImpl implements WxMaConfig {
   protected volatile String appid;
   protected volatile String token;
@@ -49,6 +51,7 @@ public class WxMaDefaultConfigImpl implements WxMaConfig {
   protected volatile Lock jsapiTicketLock = new ReentrantLock();
   protected volatile Lock cardApiTicketLock = new ReentrantLock();
   private volatile ApacheHttpClientBuilder apacheHttpClientBuilder;
+  private String apiHostUrl;
 
   /**
    * 会过期的数据提前过期时间,默认预留200秒的时间
@@ -124,7 +127,6 @@ public class WxMaDefaultConfigImpl implements WxMaConfig {
     this.jsapiTicketExpiresTime = expiresAheadInMillis(expiresInSeconds);
   }
 
-
   @Override
   public String getCardApiTicket() {
     return this.cardApiTicket;
@@ -275,6 +277,11 @@ public class WxMaDefaultConfigImpl implements WxMaConfig {
   }
 
   @Override
+  public void setApiHostUrl(String apiHostUrl) {
+    this.apiHostUrl = apiHostUrl;
+  }
+
+  @Override
   public String getAppid() {
     return appid;
   }