| @@ -1,16 +1,14 @@ | |||||
| package com.iformall.service.toutiao.api; | package com.iformall.service.toutiao.api; | ||||
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | ||||
| import com.google.gson.JsonObject; | |||||
| import com.iformall.service.toutiao.api.bean.TtOpenAuthorizationInfo; | import com.iformall.service.toutiao.api.bean.TtOpenAuthorizationInfo; | ||||
| import com.iformall.service.toutiao.api.bean.TtOpenTicket; | |||||
| import com.iformall.service.toutiao.api.bean.TtOpenNotifyMsg; | |||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | ||||
| import me.chanjar.weixin.open.api.WxOpenConfigStorage; | import me.chanjar.weixin.open.api.WxOpenConfigStorage; | ||||
| import me.chanjar.weixin.open.bean.WxOpenCreateResult; | import me.chanjar.weixin.open.bean.WxOpenCreateResult; | ||||
| import me.chanjar.weixin.open.bean.WxOpenGetResult; | import me.chanjar.weixin.open.bean.WxOpenGetResult; | ||||
| import me.chanjar.weixin.open.bean.WxOpenMaCodeTemplate; | import me.chanjar.weixin.open.bean.WxOpenMaCodeTemplate; | ||||
| import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; | |||||
| import me.chanjar.weixin.open.bean.result.*; | import me.chanjar.weixin.open.bean.result.*; | ||||
| import java.util.List; | import java.util.List; | ||||
| @@ -86,7 +84,7 @@ public interface TtOpenComponentService { | |||||
| boolean checkSignature(String timestamp, String nonce, String encrypt, String signature); | boolean checkSignature(String timestamp, String nonce, String encrypt, String signature); | ||||
| TtOpenTicket decrypt(String encrypt); | |||||
| TtOpenNotifyMsg decrypt(String encrypt); | |||||
| String getComponentAccessToken(boolean forceRefresh) throws WxErrorException; | String getComponentAccessToken(boolean forceRefresh) throws WxErrorException; | ||||
| @@ -104,7 +102,7 @@ public interface TtOpenComponentService { | |||||
| String getPreAuthUrl(String redirectUri) throws WxErrorException; | String getPreAuthUrl(String redirectUri) throws WxErrorException; | ||||
| String route(TtOpenTicket openTicket) throws WxErrorException; | |||||
| String route(TtOpenNotifyMsg openTicket) throws WxErrorException; | |||||
| /** | /** | ||||
| * 使用授权码换取公众号或小程序的接口调用凭据和授权信息. | * 使用授权码换取公众号或小程序的接口调用凭据和授权信息. | ||||
| @@ -11,7 +11,7 @@ public class TtOpenGsonBuilder { | |||||
| static { | static { | ||||
| INSTANCE.disableHtmlEscaping(); | INSTANCE.disableHtmlEscaping(); | ||||
| INSTANCE.registerTypeAdapter(TtOpenTicket.class, new TtOpenTicketGsonAdapter()); | |||||
| INSTANCE.registerTypeAdapter(TtOpenNotifyMsg.class, new TtOpenNotifyMsgGsonAdapter()); | |||||
| INSTANCE.registerTypeAdapter(TtOpenAuthorizationInfo.class, new TtOpenAuthorizationInfoGsonAdapter()); | INSTANCE.registerTypeAdapter(TtOpenAuthorizationInfo.class, new TtOpenAuthorizationInfoGsonAdapter()); | ||||
| INSTANCE.registerTypeAdapter(TtOpenRetrieveCode.class, new TtOpenRetrieveCodeGsonAdapter()); | INSTANCE.registerTypeAdapter(TtOpenRetrieveCode.class, new TtOpenRetrieveCodeGsonAdapter()); | ||||
| @@ -0,0 +1,56 @@ | |||||
| package com.iformall.service.toutiao.api.bean; | |||||
| import lombok.*; | |||||
| import java.io.Serializable; | |||||
| /** | |||||
| * @author S | |||||
| */ | |||||
| @Getter | |||||
| @Setter | |||||
| @NoArgsConstructor | |||||
| @AllArgsConstructor | |||||
| @Builder | |||||
| public class TtOpenNotifyMsg implements Serializable { | |||||
| private static final long serialVersionUID = -44544979421396117L; | |||||
| private String componentAppId; | |||||
| /** | |||||
| * Ticket-----推送ticket | |||||
| * | |||||
| */ | |||||
| private String msgType; | |||||
| /** | |||||
| * PUSH ----- 目前推送ticket | |||||
| * AUTHORIZED ------ 授权通知 | |||||
| * UNAUTHORIZED ----- 解除授权通知 | |||||
| * UPDATE_AUTHORIZED ------- 找回授权码通知 | |||||
| */ | |||||
| private String event; | |||||
| //------推送ticket | |||||
| private String ticket; | |||||
| private String fromUserName; | |||||
| //2019-01-14 12:45:10 | |||||
| private String createTime; | |||||
| //-----授权/解除授权通知/找回授权码 | |||||
| private String appId;//授权小程序的appid | |||||
| private String tpAppId;//第三方应用appid | |||||
| private String eventTime;//授权/解除授权时间 2019-01-14 12:45:10 | |||||
| private String authorizationCode;//授权码 | |||||
| private Integer authorizationCodeExpiresIn;//授权码有效期 | |||||
| public static TtOpenNotifyMsg fromJson(String json) { | |||||
| return TtOpenGsonBuilder.create().fromJson(json, TtOpenNotifyMsg.class); | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,36 @@ | |||||
| package com.iformall.service.toutiao.api.bean; | |||||
| import com.google.gson.*; | |||||
| import me.chanjar.weixin.common.util.json.GsonHelper; | |||||
| import java.lang.reflect.Type; | |||||
| /** | |||||
| * . | |||||
| * | |||||
| * @author S | |||||
| */ | |||||
| public class TtOpenNotifyMsgGsonAdapter implements JsonDeserializer<TtOpenNotifyMsg> { | |||||
| @Override | |||||
| public TtOpenNotifyMsg deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||||
| return convertFromJson(json.getAsJsonObject()); | |||||
| } | |||||
| protected TtOpenNotifyMsg convertFromJson(JsonObject json) { | |||||
| TtOpenNotifyMsg openTicket = new TtOpenNotifyMsg(); | |||||
| openTicket.setTicket(GsonHelper.getString(json,"Ticket")); | |||||
| openTicket.setFromUserName(GsonHelper.getString(json,"FromUserName")); | |||||
| openTicket.setCreateTime(GsonHelper.getString(json,"CreateTime")); | |||||
| openTicket.setMsgType(GsonHelper.getString(json,"MsgType")); | |||||
| openTicket.setEvent(GsonHelper.getString(json,"Event")); | |||||
| openTicket.setAppId(GsonHelper.getString(json,"AppId")); | |||||
| openTicket.setTpAppId(GsonHelper.getString(json,"TpAppId")); | |||||
| openTicket.setEventTime(GsonHelper.getString(json,"EventTime")); | |||||
| openTicket.setAuthorizationCode(GsonHelper.getString(json,"AuthorizationCode")); | |||||
| openTicket.setAuthorizationCodeExpiresIn(GsonHelper.getInteger(json,"AuthorizationCodeExpiresIn")); | |||||
| return openTicket; | |||||
| } | |||||
| } | |||||
| @@ -1,40 +0,0 @@ | |||||
| package com.iformall.service.toutiao.api.bean; | |||||
| import com.iformall.service.toutiao.miniapp.bean.TtMaGsonBuilder; | |||||
| import lombok.*; | |||||
| import java.io.Serializable; | |||||
| /** | |||||
| * @author S | |||||
| */ | |||||
| @Getter | |||||
| @Setter | |||||
| @NoArgsConstructor | |||||
| @AllArgsConstructor | |||||
| @Builder | |||||
| public class TtOpenTicket implements Serializable { | |||||
| private static final long serialVersionUID = -44544979421396117L; | |||||
| private String accessToken; | |||||
| private String ticket; | |||||
| private String fromUserName; | |||||
| //2019-01-14 12:45:10 | |||||
| private String createTime; | |||||
| private String msgType; | |||||
| private String event; | |||||
| private String componentAppId; | |||||
| public static TtOpenTicket fromJson(String json) { | |||||
| return TtOpenGsonBuilder.create().fromJson(json, TtOpenTicket.class); | |||||
| } | |||||
| } | |||||
| @@ -1,34 +0,0 @@ | |||||
| package com.iformall.service.toutiao.api.bean; | |||||
| import com.google.gson.*; | |||||
| import com.iformall.service.toutiao.miniapp.bean.TtMaSubscribeMessage; | |||||
| import me.chanjar.weixin.common.util.json.GsonHelper; | |||||
| import java.lang.reflect.Type; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Arrays; | |||||
| import java.util.List; | |||||
| /** | |||||
| * . | |||||
| * | |||||
| * @author S | |||||
| */ | |||||
| public class TtOpenTicketGsonAdapter implements JsonDeserializer<TtOpenTicket> { | |||||
| @Override | |||||
| public TtOpenTicket deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||||
| return convertFromJson(json.getAsJsonObject()); | |||||
| } | |||||
| protected TtOpenTicket convertFromJson(JsonObject json) { | |||||
| TtOpenTicket openTicket = new TtOpenTicket(); | |||||
| openTicket.setTicket(GsonHelper.getString(json,"Ticket")); | |||||
| openTicket.setFromUserName(GsonHelper.getString(json,"FromUserName")); | |||||
| openTicket.setCreateTime(GsonHelper.getString(json,"CreateTime")); | |||||
| openTicket.setMsgType(GsonHelper.getString(json,"MsgType")); | |||||
| openTicket.setEvent(GsonHelper.getString(json,"Event")); | |||||
| return openTicket; | |||||
| } | |||||
| } | |||||
| @@ -10,21 +10,16 @@ import com.iformall.service.toutiao.api.TtOpenService; | |||||
| import com.iformall.service.toutiao.api.bean.TtOpenAuthorizationInfo; | import com.iformall.service.toutiao.api.bean.TtOpenAuthorizationInfo; | ||||
| import com.iformall.service.toutiao.api.bean.TtOpenGsonBuilder; | import com.iformall.service.toutiao.api.bean.TtOpenGsonBuilder; | ||||
| import com.iformall.service.toutiao.api.bean.TtOpenRetrieveCode; | import com.iformall.service.toutiao.api.bean.TtOpenRetrieveCode; | ||||
| import com.iformall.service.toutiao.api.bean.TtOpenTicket; | |||||
| import com.iformall.service.toutiao.api.bean.TtOpenNotifyMsg; | |||||
| import com.iformall.service.toutiao.utils.MsgDecrypt; | import com.iformall.service.toutiao.utils.MsgDecrypt; | ||||
| import com.iformall.service.toutiao.utils.ServerVerification; | import com.iformall.service.toutiao.utils.ServerVerification; | ||||
| import me.chanjar.weixin.common.error.WxError; | import me.chanjar.weixin.common.error.WxError; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.common.util.crypto.SHA1; | |||||
| import me.chanjar.weixin.common.util.http.URIUtil; | import me.chanjar.weixin.common.util.http.URIUtil; | ||||
| import me.chanjar.weixin.common.util.json.WxGsonBuilder; | |||||
| import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; | ||||
| import me.chanjar.weixin.open.api.WxOpenConfigStorage; | import me.chanjar.weixin.open.api.WxOpenConfigStorage; | ||||
| import me.chanjar.weixin.open.bean.*; | import me.chanjar.weixin.open.bean.*; | ||||
| import me.chanjar.weixin.open.bean.auth.WxOpenAuthorizationInfo; | |||||
| import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; | |||||
| import me.chanjar.weixin.open.bean.result.*; | import me.chanjar.weixin.open.bean.result.*; | ||||
| import me.chanjar.weixin.open.util.WxOpenCryptUtil; | |||||
| import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder; | import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| @@ -97,12 +92,12 @@ public class TtOpenComponentServiceImpl implements TtOpenComponentService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public TtOpenTicket decrypt(String encrypt) { | |||||
| public TtOpenNotifyMsg decrypt(String encrypt) { | |||||
| try { | try { | ||||
| MsgDecrypt msgDecrypt = new MsgDecrypt(getWxOpenConfigStorage().getComponentAesKey()); | MsgDecrypt msgDecrypt = new MsgDecrypt(getWxOpenConfigStorage().getComponentAesKey()); | ||||
| String plainText = msgDecrypt.decrypt(encrypt); | String plainText = msgDecrypt.decrypt(encrypt); | ||||
| log.info("解密信息----------------------------------------"+ plainText); | log.info("解密信息----------------------------------------"+ plainText); | ||||
| TtOpenTicket openTicket = TtOpenTicket.fromJson(plainText); | |||||
| TtOpenNotifyMsg openTicket = TtOpenNotifyMsg.fromJson(plainText); | |||||
| openTicket.setComponentAppId(getWxOpenConfigStorage().getComponentAppId()); | openTicket.setComponentAppId(getWxOpenConfigStorage().getComponentAppId()); | ||||
| return openTicket; | return openTicket; | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| @@ -212,12 +207,12 @@ public class TtOpenComponentServiceImpl implements TtOpenComponentService { | |||||
| @Override | @Override | ||||
| public String route(final TtOpenTicket ticket) throws WxErrorException { | |||||
| public String route(final TtOpenNotifyMsg ticket) throws WxErrorException { | |||||
| if (ticket == null) { | if (ticket == null) { | ||||
| throw new NullPointerException("message is empty"); | throw new NullPointerException("message is empty"); | ||||
| } | } | ||||
| log.info("ticket.getMsgType()"+ticket.getMsgType()); | log.info("ticket.getMsgType()"+ticket.getMsgType()); | ||||
| if (StringUtils.equalsIgnoreCase(ticket.getMsgType(), "Ticket")) { | |||||
| if (StringUtils.isNotBlank(ticket.getMsgType()) && StringUtils.equalsIgnoreCase(ticket.getMsgType(), "Ticket")) { | |||||
| getWxOpenConfigStorage().setComponentVerifyTicket(ticket.getTicket()); | getWxOpenConfigStorage().setComponentVerifyTicket(ticket.getTicket()); | ||||
| return "success"; | return "success"; | ||||
| } | } | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.controller; | package com.iformall.controller; | ||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxAuthorizerInfo; | import com.iformall.domain.po.WxAuthorizerInfo; | ||||
| import com.iformall.domain.vo.WxWeappInfo; | import com.iformall.domain.vo.WxWeappInfo; | ||||
| @@ -11,6 +12,7 @@ import com.iformall.service.toutiao.api.bean.TtOpenAuthorizationInfo; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -69,7 +71,7 @@ public class TtAuthController { | |||||
| @ApiOperation(value = "授权", notes = "") | @ApiOperation(value = "授权", notes = "") | ||||
| @GetMapping("/jump") | @GetMapping("/jump") | ||||
| @ResponseBody | @ResponseBody | ||||
| public void jump(@RequestParam("auth_code") String authorizationCode) { | |||||
| public void jump(@RequestParam("authorization_code") String authorizationCode, @RequestParam("expires_in") Integer expiresIn) { | |||||
| try { | try { | ||||
| TtOpenAuthorizationInfo queryAuthResult = openService.getTtOpenComponentService().getQueryAuth(authorizationCode); | TtOpenAuthorizationInfo queryAuthResult = openService.getTtOpenComponentService().getQueryAuth(authorizationCode); | ||||
| logger.info("getQueryAuth", queryAuthResult); | logger.info("getQueryAuth", queryAuthResult); | ||||
| @@ -96,36 +98,51 @@ public class TtAuthController { | |||||
| @ApiOperation(value = "刷新", notes = "") | @ApiOperation(value = "刷新", notes = "") | ||||
| @GetMapping("/retrieve") | @GetMapping("/retrieve") | ||||
| @ResponseBody | @ResponseBody | ||||
| public ResultData retrieve() { | |||||
| WxWeappInfo weappInfo = new WxWeappInfo(); | |||||
| weappInfo.setPlat(EnumAppPlat.TOUTIAO.getCode()); | |||||
| List<WxWeappInfo> list = authorizerInfoService.getList(weappInfo); | |||||
| if(list != null && list.size() > 0){ | |||||
| for (WxWeappInfo info: list) { | |||||
| try { | |||||
| String code = openService.getTtOpenComponentService().retrieveCode(info.getAuthorizerAppid()); | |||||
| TtOpenAuthorizationInfo queryAuthResult = openService.getTtOpenComponentService().getQueryAuth(code); | |||||
| logger.info("getQueryAuth", queryAuthResult); | |||||
| // save auth info | |||||
| authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ | |||||
| { | |||||
| setAuthorizerAppid(queryAuthResult.getAuthorizerAppid()); | |||||
| setRefreshToken(queryAuthResult.getAuthorizerRefreshToken()); | |||||
| setAccessToken(queryAuthResult.getAuthorizerAccessToken()); | |||||
| setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + queryAuthResult.getExpiresIn()*1000))); | |||||
| setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode()); | |||||
| setAuthTime(new Date()); | |||||
| } | |||||
| }); | |||||
| } catch (WxErrorException e) { | |||||
| logger.error(info.getAuthorizerAppid()+"找回授权码", e); | |||||
| throw new RuntimeException(e); | |||||
| public ResultData retrieve(@RequestParam("appId") String appId) { | |||||
| if(StringUtils.isNotBlank(appId)){ | |||||
| try { | |||||
| retrieveAuthorizerInfo(appId); | |||||
| }catch(Exception e){ | |||||
| return new ResultData(Result.ERROR, e.getMessage()); | |||||
| } | |||||
| }else{ | |||||
| WxWeappInfo weappInfo = new WxWeappInfo(); | |||||
| weappInfo.setPlat(EnumAppPlat.TOUTIAO.getCode()); | |||||
| List<WxWeappInfo> list = authorizerInfoService.getList(weappInfo); | |||||
| if(list != null && list.size() > 0){ | |||||
| for (WxWeappInfo info: list) { | |||||
| try { | |||||
| retrieveAuthorizerInfo(info.getAuthorizerAppid()); | |||||
| }catch(Exception e){ | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| return new ResultData(); | return new ResultData(); | ||||
| } | } | ||||
| private void retrieveAuthorizerInfo(String appid){ | |||||
| try { | |||||
| String code = openService.getTtOpenComponentService().retrieveCode(appid); | |||||
| TtOpenAuthorizationInfo queryAuthResult = openService.getTtOpenComponentService().getQueryAuth(code); | |||||
| logger.info("getQueryAuth", queryAuthResult); | |||||
| // save auth info | |||||
| authorizerInfoService.saveOrUpdate(new WxAuthorizerInfo(){ | |||||
| { | |||||
| setAuthorizerAppid(queryAuthResult.getAuthorizerAppid()); | |||||
| setRefreshToken(queryAuthResult.getAuthorizerRefreshToken()); | |||||
| setAccessToken(queryAuthResult.getAuthorizerAccessToken()); | |||||
| setAccessTokenExpire(new Date(Long.valueOf(System.currentTimeMillis() + queryAuthResult.getExpiresIn()*1000))); | |||||
| setAuthorizationStatus(EnumWxAuthorizationStatus.AUTHORIZED.getCode()); | |||||
| setAuthTime(new Date()); | |||||
| } | |||||
| }); | |||||
| } catch (WxErrorException e) { | |||||
| logger.error(appid+"找回授权码error", e); | |||||
| throw new RuntimeException(e); | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -1,30 +1,15 @@ | |||||
| package com.iformall.controller; | package com.iformall.controller; | ||||
| import com.google.gson.Gson; | |||||
| import com.google.gson.GsonBuilder; | |||||
| import com.iformall.common.Result; | |||||
| import com.iformall.common.ResultData; | |||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.po.WxAuthorizerInfo; | |||||
| import com.iformall.domain.po.WxComponentVerifyTicket; | import com.iformall.domain.po.WxComponentVerifyTicket; | ||||
| import com.iformall.enums.EnumWxAuthorizationStatus; | |||||
| import com.iformall.service.WxAuthorizerInfoService; | import com.iformall.service.WxAuthorizerInfoService; | ||||
| import com.iformall.service.WxComponentVerifyTicketService; | import com.iformall.service.WxComponentVerifyTicketService; | ||||
| import com.iformall.service.toutiao.FmTtOpenService; | import com.iformall.service.toutiao.FmTtOpenService; | ||||
| import com.iformall.service.toutiao.api.bean.TtOpenTicket; | |||||
| import com.iformall.service.toutiao.api.bean.TtOpenNotifyMsg; | |||||
| import com.iformall.utils.DateUtils; | import com.iformall.utils.DateUtils; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; | |||||
| import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; | |||||
| import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; | |||||
| import me.chanjar.weixin.open.bean.WxOpenCreateResult; | |||||
| import me.chanjar.weixin.open.bean.WxOpenGetResult; | |||||
| import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; | |||||
| import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerInfoResult; | |||||
| import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerListResult; | |||||
| import me.chanjar.weixin.open.bean.result.WxOpenQueryAuthResult; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| @@ -34,11 +19,8 @@ import org.springframework.web.bind.annotation.*; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.ByteArrayOutputStream; | |||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.io.InputStream; | |||||
| import java.io.PrintWriter; | import java.io.PrintWriter; | ||||
| import java.nio.charset.Charset; | |||||
| import java.util.Date; | import java.util.Date; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| @@ -73,7 +55,7 @@ public class TtCalllbackController extends BaseController { | |||||
| throw new IllegalArgumentException("非法请求,可能属于伪造的请求!"); | throw new IllegalArgumentException("非法请求,可能属于伪造的请求!"); | ||||
| } | } | ||||
| // aes加密的消息, 解密 | // aes加密的消息, 解密 | ||||
| TtOpenTicket openTicket = openService.getTtOpenComponentService().decrypt(encrypt); | |||||
| TtOpenNotifyMsg openTicket = openService.getTtOpenComponentService().decrypt(encrypt); | |||||
| // 处理 | // 处理 | ||||
| handleTicket(openTicket); | handleTicket(openTicket); | ||||
| return "success"; | return "success"; | ||||
| @@ -84,14 +66,15 @@ public class TtCalllbackController extends BaseController { | |||||
| * @param | * @param | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| private void handleTicket(TtOpenTicket ticket) { | |||||
| private void handleTicket(TtOpenNotifyMsg ticket) { | |||||
| try { | try { | ||||
| String out = openService.getTtOpenComponentService().route(ticket); | String out = openService.getTtOpenComponentService().route(ticket); | ||||
| this.logger.info("组装回复信息:{}", out); | this.logger.info("组装回复信息:{}", out); | ||||
| } catch (WxErrorException e) { | } catch (WxErrorException e) { | ||||
| this.logger.error("notify", e); | this.logger.error("notify", e); | ||||
| } | } | ||||
| if (StringUtils.equalsIgnoreCase(ticket.getMsgType(), "Ticket")) { | |||||
| if (StringUtils.isNotBlank(ticket.getMsgType()) && StringUtils.equalsIgnoreCase(ticket.getMsgType(), "Ticket")) { | |||||
| logger.info("------------推送ticket通知"); | |||||
| // 保存component_verify_ticket | // 保存component_verify_ticket | ||||
| componentVerifyTicketService.saveOrUpdate(new WxComponentVerifyTicket() { | componentVerifyTicketService.saveOrUpdate(new WxComponentVerifyTicket() { | ||||
| { | { | ||||
| @@ -101,6 +84,17 @@ public class TtCalllbackController extends BaseController { | |||||
| setDeadline(new Date(Long.valueOf(System.currentTimeMillis() + (60 * 60 * 1000)))); | setDeadline(new Date(Long.valueOf(System.currentTimeMillis() + (60 * 60 * 1000)))); | ||||
| } | } | ||||
| }); | }); | ||||
| }else if(StringUtils.isNotBlank(ticket.getEvent()) && StringUtils.equalsIgnoreCase(ticket.getEvent(), "AUTHORIZED")){ | |||||
| logger.info("------------授权成功通知"); | |||||
| }else if(StringUtils.isNotBlank(ticket.getEvent()) && StringUtils.equalsIgnoreCase(ticket.getEvent(), "UNAUTHORIZED")){ | |||||
| logger.info("------------解除授权成功通知"); | |||||
| }else if(StringUtils.isNotBlank(ticket.getEvent()) && StringUtils.equalsIgnoreCase(ticket.getEvent(), "UPDATE_AUTHORIZED")){ | |||||
| logger.info("------------找回授权码通知"); | |||||
| }else{ | |||||
| logger.info("------------未知通知"); | |||||
| } | } | ||||
| } | } | ||||