@@ -421,6 +421,16 @@ public interface WxMpService { | |||||
*/ | */ | ||||
public boolean oauth2validateAccessToken(WxMpOAuth2AccessToken oAuth2AccessToken); | public boolean oauth2validateAccessToken(WxMpOAuth2AccessToken oAuth2AccessToken); | ||||
/** | |||||
* <pre> | |||||
* 获取微信服务器IP地址 | |||||
* http://mp.weixin.qq.com/wiki/0/2ad4b6bfd29f30f71d39616c2a0fcedc.html | |||||
* </pre> | |||||
* @return | |||||
* @throws WxErrorException | |||||
*/ | |||||
String[] getCallbackIP() throws WxErrorException; | |||||
/** | /** | ||||
* 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 | * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 | ||||
* @param url | * @param url | ||||
@@ -1,5 +1,6 @@ | |||||
package me.chanjar.weixin.mp.api; | package me.chanjar.weixin.mp.api; | ||||
import com.google.gson.JsonArray; | |||||
import com.google.gson.JsonElement; | import com.google.gson.JsonElement; | ||||
import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||
import com.google.gson.internal.Streams; | import com.google.gson.internal.Streams; | ||||
@@ -451,6 +452,19 @@ public class WxMpServiceImpl implements WxMpService { | |||||
return true; | return true; | ||||
} | } | ||||
@Override | |||||
public String[] getCallbackIP() throws WxErrorException { | |||||
String url = "https://api.weixin.qq.com/cgi-bin/getcallbackip"; | |||||
String responseContent = get(url, null); | |||||
JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); | |||||
JsonArray ipList = tmpJsonElement.getAsJsonObject().get("ip_list").getAsJsonArray(); | |||||
String[] ipArray = new String[ipList.size()]; | |||||
for (int i = 0; i < ipList.size(); i++) { | |||||
ipArray[i] = ipList.get(i).getAsString(); | |||||
} | |||||
return ipArray; | |||||
} | |||||
public String get(String url, String queryParam) throws WxErrorException { | public String get(String url, String queryParam) throws WxErrorException { | ||||
return execute(new SimpleGetRequestExecutor(), url, queryParam); | return execute(new SimpleGetRequestExecutor(), url, queryParam); | ||||
} | } | ||||
@@ -0,0 +1,42 @@ | |||||
package me.chanjar.weixin.mp.api; | |||||
import com.google.inject.Inject; | |||||
import me.chanjar.weixin.common.api.WxConsts; | |||||
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | |||||
import me.chanjar.weixin.common.exception.WxErrorException; | |||||
import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | |||||
import me.chanjar.weixin.mp.bean.WxMpMassNews; | |||||
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage; | |||||
import me.chanjar.weixin.mp.bean.WxMpMassVideo; | |||||
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult; | |||||
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult; | |||||
import org.testng.Assert; | |||||
import org.testng.annotations.DataProvider; | |||||
import org.testng.annotations.Guice; | |||||
import org.testng.annotations.Test; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.util.Arrays; | |||||
/** | |||||
* | |||||
* @author chanjarster | |||||
* | |||||
*/ | |||||
@Test(groups = "miscAPI", dependsOnGroups = { "baseAPI"}) | |||||
@Guice(modules = ApiTestModule.class) | |||||
public class WxMpMiscAPITest { | |||||
@Inject | |||||
protected WxMpServiceImpl wxService; | |||||
@Test | |||||
public void getCallbackIP() throws WxErrorException { | |||||
String[] ipArray = wxService.getCallbackIP(); | |||||
System.out.println(Arrays.toString(ipArray)); | |||||
Assert.assertNotNull(ipArray); | |||||
Assert.assertNotEquals(ipArray.length, 0); | |||||
} | |||||
} |
@@ -15,6 +15,7 @@ | |||||
<class name="me.chanjar.weixin.mp.api.WxMpShortUrlAPITest" /> | <class name="me.chanjar.weixin.mp.api.WxMpShortUrlAPITest" /> | ||||
<class name="me.chanjar.weixin.mp.api.WxMpMessageRouterTest" /> | <class name="me.chanjar.weixin.mp.api.WxMpMessageRouterTest" /> | ||||
<class name="me.chanjar.weixin.mp.api.WxMpJsAPITest" /> | <class name="me.chanjar.weixin.mp.api.WxMpJsAPITest" /> | ||||
<class name="me.chanjar.weixin.mp.api.WxMpMiscAPITest" /> | |||||
</classes> | </classes> | ||||
</test> | </test> | ||||