微信小程序消息推送

package com.borntrust.weixin.server.provider.impl;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;
import com.borntrust.common.redis.RedisRepository;
import com.borntrust.common.utils.HttpHelper;
import com.borntrust.weixin.server.api.service.IWeixinServer;
import com.borntrust.weixin.server.provider.config.WeixinConfig;
@Service(“weixinServer”)
public class WeixinServerImpl implements IWeixinServer{

@Autowired
private WeixinConfig weixinConfig;

@Autowired
private RedisRepository redisRepository;

//获取access_token
 public Map<String,Object> getAccessToken() {
	  Map<String, Object> map =new HashMap<>();
	   try {
		  
	        //获取access_token的连接
	        String accessTokenUrl =weixinConfig.getAccessTokenUrl()+"&appid="
	        +weixinConfig.getAppid()+"&secret="+weixinConfig.getSecret();
	        //获取返回的code
	        HttpClient httpClient = HttpClientBuilder.create().build();//获取DefaultHttpClient请求
	        HttpGet httpGet = new HttpGet(accessTokenUrl);
	        ResponseHandler<String> responseHandler = new BasicResponseHandler();
	        //向微信发送请求并获取response
	        String response;
		    response = httpClient.execute(httpGet,responseHandler);
		    JSONObject jsonObject = JSONObject.parseObject(response);
			String accessToken = jsonObject.getString("access_token");
			String expiresIn = jsonObject.getString("expires_in");
			String errcode = jsonObject.getString("errcode");
			String errmsg = jsonObject.getString("errmsg");
			redisRepository.setExpire("ACCESS_TOKEN:accessToken", accessToken, Long.parseLong(expiresIn));
			map.put("accessToken", accessToken);
			map.put("expiresIn", expiresIn);
			map.put("errcode", errcode);
			map.put("errmsg", errmsg);
			return map;
			} catch (ClientProtocolException e) {
				return map;
			} catch (IOException e) {
				return map;
			}
}
 
 
 @Override
 public Map<String, Object> getSessionKey(String code) throws Exception{
	 
	        Map<String, Object> map = new HashMap<>();
	        map.put("openid", "");
	        map.put("session_key", "");
     		if (code != null) {
    	
	        //获取openid和access_token的连接
	        String getOpenIdUrl = weixinConfig.getGetOpenIdUrl()
	        		+ "&appid="+weixinConfig.getAppid()
	        		+"&secret="+weixinConfig.getSecret()
	        		+"&js_code="+code
	        		+"&grant_type=authorization_code";
	        //获取返回的code
	        HttpClient httpClient = HttpClientBuilder.create().build();//获取DefaultHttpClient请求
	        HttpGet httpGet = new HttpGet(getOpenIdUrl);
	        ResponseHandler<String> responseHandler = new BasicResponseHandler();
	        //向微信发送请求并获取response
	        String response;
			response = httpClient.execute(httpGet,responseHandler);
			JSONObject jsonObject = JSONObject.parseObject(response);
			String openid = jsonObject.getString("openid");
			String session_key = jsonObject.getString("session_key");
	        map.put("openid", openid);
	        map.put("session_key", session_key);
     		}
     		return map;
	 
 }
 
 

 @Override
 public Map<String, Object> sendCustomerMessage(Map<String, Object> map){
	 String accessToken = redisRepository.get("ACCESS_TOKEN:accessToken");
	 if (accessToken == null) {
		 Map<String, Object> accessTokenMap = getAccessToken();
		 accessToken = (String) accessTokenMap.get("accessToken");
	 }
	 String messageUrl =weixinConfig.getMessageUrl()+accessToken;
	 JSONObject param = new JSONObject();
     param.put("touser", map.get("openId"));
     param.put("template_id",map.get("templateId"));
     param.put("page", map.get("page"));
     param.put("form_id",map.get("formId"));
     param.put("data", map.get("data"));
     //param.put("emphasis_keyword", "keyword2.DATA");
     String response = HttpHelper.sendPOST(messageUrl, param.toString());
     Map<String, Object> returnMap=new HashMap<>();
     JSONObject jsonObject = JSONObject.parseObject(response);
     String errcode = jsonObject.getString("errcode");
     String errmsg = jsonObject.getString("errmsg");
     returnMap.put("errcode", errcode);
     returnMap.put("errmsg", errmsg);
	return returnMap;
	 
 }

猜你喜欢

转载自blog.csdn.net/qq_41879588/article/details/88971165