public static boolean sendAssembleMessage(ServiceAssembleData orderModel, String appId, String appSecret, String mchId, String key, String template) {
AccessToken accessToken = getAccessToken(appId, appSecret, mchId, key);
if (null != accessToken) {
OrderRemindModel model = new OrderRemindModel();
//模板消息的id
model.setTemplate_id(template);
//用户的 openid
model.setTouser(openid);
//formid
model.setForm_id(orderModel.getFormId());
/ /点击模板跳转页面
model.setPage("pages/index/index");
// Set the param
Map<String, Object> datas = new HashMap<String, Object>();
TemplateData keyword1 = new TemplateData();
keyword1.setValue(orderModel.getKeyword1());
datas.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue(orderModel.getKeyword2());
datas.put("keyword2", keyword2);
TemplateData keyword3 = new TemplateData();
keyword3.setValue(orderModel.getKeyword3()); //温馨提示
datas.put("keyword3", keyword3);
TemplateData keyword4 = new TemplateData();
keyword4.setValue(orderModel.getKeyword4());
datas.put("keyword4", keyword4);
TemplateData keyword5 = new TemplateData();
keyword5.setValue(orderModel.getKeyword5());
datas.put("keyword5", keyword5);
TemplateData keyword6 = new TemplateData();
keyword6.setValue(orderModel.getKeyword6());
datas.put("keyword6", keyword6);
model.setData(datas);
// model.setEmphasis_keyword("keyword1.DATA"); //放大标题
//、模板url拼接上token,最上面的请求的url那样
String templeteUrl = TemplateUrl+ accessToken.getAccessToken();
System.out.println("templete param ========= " + JSON.toJSONString(model));
//发送httpclient请求
String returnMessage = PayUtil.httpRequest(templeteUrl, "POST", JSON.toJSONString(model),
false, new XcxWxLogin(appId, appSecret, mchId, key));
System.out.println("returnMessage ========= " + returnMessage);
JSONObject jsonObject = JSON.parseObject(returnMessage);
if (0 != (Integer) jsonObject.get("errcode")) {
return false;
} else {
return true;
}
} else {
return false;
}
}
private static AccessToken getAccessToken(String appId, String appSecret, String mchId, String key) {
try {
String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+ appId + "&secret=" + appSecret;
logger.info("tokenUrl = " + tokenUrl);
String accessToken = PayUtil.httpRequest(tokenUrl, "POST", null, false, new XcxWxLogin(appId, appSecret, mchId, key));
JSONObject json = JSON.parseObject(accessToken);
AccessToken at = new AccessToken();
at.setAccessToken(json.getString("access_token"));
at.setExpiresIn(json.getIntValue("expires_in"));
return at;
} catch (Exception e) {
logger.error("------ Get access token error!!! -------");
return null;
}
}
/**
*
* @param requestUrl请求地址
* @param requestMethod请求方法
* @param outputStr参数
*/
public static String httpRequest(String requestUrl, String requestMethod,
String outputStr,boolean isLoadCert,XcxWxLogin xcxWxLogin) {
// 创建SSLContext
StringBuffer buffer = null;
try {
URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod(requestMethod);
conn.setDoOutput(true);
conn.setDoInput(true);
if(isLoadCert){
SSLSocketFactory ssf = CertUtil.initCert(xcxWxLogin);
conn.setSSLSocketFactory(ssf);
}
conn.connect();
// �?服务器端写内�?
if (null != outputStr) {
OutputStream os = conn.getOutputStream();
//os = new HttpsURLConnection(conn.getOutputStream(),"utf-8");//关键解决
os.write(outputStr.getBytes("UTF-8"));
os.close();
}
// 读取服务器端返回的内�?
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
buffer = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(line);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}