小程序后台拿openId

/**
 * 从后台拿到openId.
 *
 * @param request .
 * @param params  .
 * @return .
 */
@ActionMethod(response = "json")
public Object getWxOpenId(HttpServletRequest request, RequestParameters params) {
   String js_code = request.getParameter("js_code");
   try {
      return getWeChat(js_code, analysisAppId(request));
   } catch (Exception e) {
      e.printStackTrace();
      return "";
   }
}


private JSONObject getWeChat(String code, String appId) throws Exception {
   JSONObject result = new JSONObject();
   Map<String, Object> params = Maps.newHashMap();

   if (StringUtils.isBlank(appId)) {
      LOGGER.info("AppId is null");
      return result;
   }
   Entity swechat = this.entityManager.getEntity(WeChat.ID, "appId", appId);
   if (swechat == null) {
      return result;
   }
   params.put("appid", appId);
   params.put("secret", swechat.getProperty("secret", String.class));
   params.put("js_code", code);
   params.put("grant_type", "authorization_code");
   LOGGER.info("WeChat https://api.weixin.qq.com/sns/jscode2session params:{}", params.toString());
   RestClient restClient = new RestClient();
   result = restClient.request(WX_API_PATH + "/sns/jscode2session").post().withData(params).handleWith(new JSONResponseHandler()).getResult(JSONObject.class);
   LOGGER.info("WeChat https://api.weixin.qq.com/sns/jscode2session result:{}", result.toString());
   return result;
}

private String analysisAppId(HttpServletRequest request) {
   String referer = request.getHeader("Referer");
   LOGGER.info("WeChat get appid,referer:{}", referer);
   if (StringUtils.isBlank(referer)) {
      return "";
   }
   referer = referer.replace("https://servicewechat.com/", "");
   String appId = referer.substring(0, referer.indexOf("/"));
   return appId;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值