@@ -179,6 +179,12 @@ public interface WxMaService { | |||||
*/ | */ | ||||
WxMaSettingService getSettingService(); | WxMaSettingService getSettingService(); | ||||
/** | |||||
* 返回分享相关查询服务 | |||||
* @return WxMaShareService | |||||
*/ | |||||
WxMaShareService getShareService(); | |||||
/** | /** | ||||
* 初始化http请求对象. | * 初始化http请求对象. | ||||
*/ | */ | ||||
@@ -0,0 +1,21 @@ | |||||
package cn.binarywang.wx.miniapp.api; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo; | |||||
/** | |||||
* 分享信息相关操作接口. | |||||
* | |||||
* @author zhfish | |||||
*/ | |||||
public interface WxMaShareService { | |||||
/** | |||||
* 解密分享敏感数据. | |||||
* | |||||
* @param sessionKey 会话密钥 | |||||
* @param encryptedData 消息密文 | |||||
* @param ivStr 加密算法的初始向量 | |||||
*/ | |||||
WxMaShareInfo getShareInfo(String sessionKey, String encryptedData, String ivStr); | |||||
} |
@@ -6,6 +6,7 @@ import java.util.HashMap; | |||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.concurrent.locks.Lock; | import java.util.concurrent.locks.Lock; | ||||
import cn.binarywang.wx.miniapp.api.*; | |||||
import org.apache.http.HttpHost; | import org.apache.http.HttpHost; | ||||
import org.apache.http.client.config.RequestConfig; | import org.apache.http.client.config.RequestConfig; | ||||
import org.apache.http.client.methods.CloseableHttpResponse; | import org.apache.http.client.methods.CloseableHttpResponse; | ||||
@@ -15,16 +16,6 @@ import org.apache.http.impl.client.CloseableHttpClient; | |||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
import cn.binarywang.wx.miniapp.api.WxMaAnalysisService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaCodeService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaJsapiService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaMediaService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaMsgService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaSettingService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaTemplateService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaUserService; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | ||||
import cn.binarywang.wx.miniapp.config.WxMaConfig; | import cn.binarywang.wx.miniapp.config.WxMaConfig; | ||||
import com.google.common.base.Joiner; | import com.google.common.base.Joiner; | ||||
@@ -65,6 +56,7 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl | |||||
private WxMaCodeService codeService = new WxMaCodeServiceImpl(this); | private WxMaCodeService codeService = new WxMaCodeServiceImpl(this); | ||||
private WxMaSettingService settingService = new WxMaSettingServiceImpl(this); | private WxMaSettingService settingService = new WxMaSettingServiceImpl(this); | ||||
private WxMaJsapiService jsapiService = new WxMaJsapiServiceImpl(this); | private WxMaJsapiService jsapiService = new WxMaJsapiServiceImpl(this); | ||||
private WxMaShareService shareService = new WxMaShareServiceImpl(this); | |||||
private int retrySleepMillis = 1000; | private int retrySleepMillis = 1000; | ||||
private int maxRetryTimes = 5; | private int maxRetryTimes = 5; | ||||
@@ -335,4 +327,9 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp<CloseableHttpCl | |||||
public WxMaSettingService getSettingService() { | public WxMaSettingService getSettingService() { | ||||
return this.settingService; | return this.settingService; | ||||
} | } | ||||
@Override | |||||
public WxMaShareService getShareService() { | |||||
return this.shareService; | |||||
} | |||||
} | } |
@@ -0,0 +1,23 @@ | |||||
package cn.binarywang.wx.miniapp.api.impl; | |||||
import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
import cn.binarywang.wx.miniapp.api.WxMaShareService; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo; | |||||
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; | |||||
/** | |||||
* @author zhfish | |||||
*/ | |||||
public class WxMaShareServiceImpl implements WxMaShareService { | |||||
private WxMaService service; | |||||
public WxMaShareServiceImpl(WxMaService service) { | |||||
this.service = service; | |||||
} | |||||
@Override | |||||
public WxMaShareInfo getShareInfo(String sessionKey, String encryptedData, String ivStr) { | |||||
return WxMaShareInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr)); | |||||
} | |||||
} |
@@ -0,0 +1,20 @@ | |||||
package cn.binarywang.wx.miniapp.bean; | |||||
import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
/** | |||||
* @author zhfish | |||||
*/ | |||||
@Data | |||||
public class WxMaShareInfo implements Serializable { | |||||
private static final long serialVersionUID = -8053613683499632226L; | |||||
private String openGId; | |||||
public static WxMaShareInfo fromJson(String json) { | |||||
return WxMaGsonBuilder.create().fromJson(json, WxMaShareInfo.class); | |||||
} | |||||
} |
@@ -0,0 +1,46 @@ | |||||
package cn.binarywang.wx.miniapp.api.impl; | |||||
import cn.binarywang.wx.miniapp.api.WxMaService; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo; | |||||
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; | |||||
import cn.binarywang.wx.miniapp.test.ApiTestModule; | |||||
import cn.binarywang.wx.miniapp.test.TestConfig; | |||||
import com.google.common.collect.ImmutableMap; | |||||
import com.google.inject.Inject; | |||||
import me.chanjar.weixin.common.error.WxErrorException; | |||||
import org.testng.annotations.Guice; | |||||
import org.testng.annotations.Test; | |||||
import static org.testng.Assert.assertNotNull; | |||||
import static org.testng.Assert.assertTrue; | |||||
/** | |||||
* 测试分享相关的接口 | |||||
* | |||||
* @author zhfish | |||||
*/ | |||||
@Test | |||||
@Guice(modules = ApiTestModule.class) | |||||
public class WxMaShareServiceImplTest { | |||||
@Inject | |||||
private WxMaService wxService; | |||||
@Test | |||||
public void testGetSessionKey() throws Exception { | |||||
assertNotNull(this.wxService.getUserService().getSessionInfo("aaa")); | |||||
} | |||||
/** | |||||
* TODO 测试数据有问题,需要替换为正确的数据 | |||||
*/ | |||||
@Test | |||||
public void testGetShareInfo() { | |||||
WxMaShareInfo shareInfo = this.wxService.getShareService().getShareInfo("tiihtNczf5v6AKRyjwEUhQ==", | |||||
"CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew==", | |||||
"r7BXXKkLb8qrSNn05n0qiA=="); | |||||
assertNotNull(shareInfo); | |||||
System.out.println(shareInfo.toString()); | |||||
} | |||||
} |