All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xnx3.weixin.TemplateMessageUtil Maven / Gradle / Ivy

The newest version!
package com.xnx3.weixin;

import java.util.HashMap;
import java.util.Map;

import com.xnx3.BaseVO;
import com.xnx3.net.HttpResponse;
import com.xnx3.net.HttpsUtil;
import net.sf.json.JSONObject;

/**
 * 模板消息
 * @author 管雷鸣
 * 

官方网址

*

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#1

*

https://mp.weixin.qq.com/advanced/tmplmsg?action=faq&token=1663114&lang=zh_CN

* @deprecated */ public class TemplateMessageUtil { static HttpsUtil https; static{ https = new HttpsUtil(); } public static void main(String[] args) { String token = "33_OcuF70QVeNIoozqpAaFPlhdRq42K_HGxa4i1L-eax7NOoUTErAgMGJeu0L9qT1iGlNCB5qsd-3_nlyANnDaQm7y2lH5eskaE8WW1v--sbURNoTDDQ2NGJduaBzVUwOQwijaLgmi6gZvd-dyNROJeAHADAV"; String openid = "oa04fwGxDJsbIzzfwp4VPEBNGMd"; String templateId = "BBN1yKFB3lZPqGAikXoOrBV80we32SIEVb_T0hmn4J"; String url = "http://www.leimingyun.com"; //如果不想点击后跳转, url 可以设置为 null Map dataMap = new HashMap(); dataMap.put("first", "测试的"); dataMap.put("tradeDateTime", "02月18日 01时05分"); dataMap.put("orderType", "询价订单"); dataMap.put("customerInfo", "管雷鸣"); BaseVO vo = TemplateMessageUtil.sendMessage(token, openid, templateId, url, dataMap); System.out.println(vo); } /** * 发送小程序的模板消息 * @param accessToken 通过 appId 跟 appSecret 得到的 access_token * @param appletAppId 小程序的appid * @param appletPagePath 跳转到小程序的页面路径,如 pages/index/index * @param openid 接收的用户openid,如 oa04fwGxDJsbIzzfwp4VPEBNGM21 * @param templateId 模板id,如 3YV61HeNU6k59PfswwGs8zDCQxLUr2CaHre5GWyHu61 * @param url 点击消息跳转到的url,如果没有跳转,则传入 null * @param dataMap 模板消息的信息。如 *
	 * 		Map<String, String> dataMap = new HashMap<String, String>();
	 *		dataMap.put("first", "测试的");
	 * 		dataMap.put("tradeDateTime", "我是时间");
	 * 	
* @return {@link BaseVO} 如果 result() 为 BaseVO.SUCCESS ,那么是成功。 如果是 BaseVO.FAILURE ,可以用 getInfo() 获得失败原因 */ public static BaseVO sendAppletMessage(String accessToken, String appletAppId, String appletPagePath, String openid, String templateId, String url, Map dataMap){ JSONObject json = new JSONObject(); json.put("touser", openid); //护理美容 json.put("template_id", templateId); if(url != null && url.length() > 0){ json.put("url", url); } JSONObject appletJson = new JSONObject(); appletJson.put("appid", appletAppId); appletJson.put("pagepath", appletPagePath); json.put("miniprogram", appletJson); JSONObject dataJson = new JSONObject(); for(Map.Entry entry : dataMap.entrySet()){ JSONObject item = new JSONObject(); item.put("value", entry.getValue()); dataJson.put(entry.getKey(), item); } json.put("data", dataJson); return sendMessage(accessToken, json.toString()); } /** * 发送微信公众号服务号的模板消息 * @param accessToken 通过 appId 跟 appSecret 得到的 access_token * @param openid 接收的用户openid,如 oa04fwGxDJsbIzzfwp4VPEBNGM21 * @param templateId 模板id,如 3YV61HeNU6k59PfswwGs8zDCQxLUr2CaHre5GWyHu61 * @param url 点击消息跳转到的url,如果没有跳转,则传入 null * @param dataMap 模板消息的信息。如 *
	 * 		Map<String, String> dataMap = new HashMap<String, String>();
	 *		dataMap.put("first", "测试的");
	 * 		dataMap.put("tradeDateTime", "我是时间");
	 * 	
* @return {@link BaseVO} 如果 result() 为 BaseVO.SUCCESS ,那么是成功。 如果是 BaseVO.FAILURE ,可以用 getInfo() 获得失败原因 */ public static BaseVO sendMessage(String accessToken, String openid, String templateId, String url, Map dataMap){ JSONObject json = new JSONObject(); json.put("touser", openid); //护理美容 json.put("template_id", templateId); if(url != null && url.length() > 0){ json.put("url", url); } JSONObject dataJson = new JSONObject(); for(Map.Entry entry : dataMap.entrySet()){ JSONObject item = new JSONObject(); item.put("value", entry.getValue()); dataJson.put(entry.getKey(), item); } json.put("data", dataJson); return sendMessage(accessToken, json.toString()); } /** * 向关注者发送一条小程序模版消息 * @param accessToken 通过 appId 跟 appSecret 得到的 access_token * @param jsonString 发送的消息的内容,json格式字符串。 传入如 {"touser":"OPENID","template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY","url":"http://www.leimingyun.com","topcolor":"#FF0000","data":{"User":{"value":"黄先生"},"Date":{"value":"06月07日 19时24分"},"CardNumber":{"value":"0426"},"Type":{"value":"消费"},"Money":{"value":"人民币260.00元"},"DeadTime":{"value":"06月07日19时24分"},"Left":{"value":"6504.09"}}} * @return {@link BaseVO} 如果 result() 为 BaseVO.SUCCESS ,那么是成功。 如果是 BaseVO.FAILURE ,可以用 getInfo() 获得失败原因 */ public static BaseVO sendMessage(String accessToken, String jsonString){ HttpResponse hr; try { hr = https.send("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+accessToken, jsonString, new HashMap()); if(hr.getCode() - 200 == 0){ //响应200,拿到数据了,将数据格式化 JSONObject resultJson = JSONObject.fromObject(hr.getContent()); Object errcode = resultJson.get("errcode"); if(errcode != null && errcode.toString().equals("0")){ Object msgid = resultJson.get("msgid"); if(msgid != null){ //成功 return BaseVO.success(msgid.toString()); } }else { //失败 if(errcode != null && errcode.toString().equals("40013")){ return BaseVO.failure("公众号需要和小程序关联,才可以进行跳转,不然即使写了跳转参数,也直接会报错 invalid appid. 接口响应:"+hr.getContent()); } } return BaseVO.failure(hr.getContent()); }else{ return BaseVO.failure("weixin server response http code:"+hr.getCode()+","+hr.getContent()); } } catch (Exception e) { e.printStackTrace(); return BaseVO.failure(e.getMessage()); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy