rentaiming
2024-05-22 dc0ade6bfc59db3d133673952bd674ba7a63dc84
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package com.ruoyi.member.util;
 
import java.util.Map;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import com.alibaba.fastjson.JSONObject;
 
public class WX_TemplateMsgUtil {
    private static Logger log = LoggerFactory.getLogger(WX_TemplateMsgUtil.class);
 
    /**
     * 封装模板详细信息
     * 
     * @return
     */
    public static JSONObject packJsonmsg(Map<String, TemplateData> param) {
        JSONObject json = new JSONObject();
        for (Map.Entry<String, TemplateData> entry : param.entrySet()) {
            JSONObject keyJson = new JSONObject();
            TemplateData dta = entry.getValue();
            keyJson.put("value", dta.getValue());
            keyJson.put("color", dta.getColor());
            json.put(entry.getKey(), keyJson);
        }
        return json;
    }
 
    /**
     * 根据模板的编号 新增并获取模板ID
     * 
     * @param templateSerialNumber
     *            模板库中模板的 "编号"
     * @return 模板ID
     */
    public static String getWXTemplateMsgId(String templateSerialNumber,String access_token) {
        String tmpurl = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token="
                + access_token;
        JSONObject json = new JSONObject();
        json.put("template_id_short", templateSerialNumber);
        JSONObject result = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString());
        JSONObject resultJson = new JSONObject(result);
        String errmsg = (String) resultJson.get("errmsg");
        log.info("获取模板编号返回信息:" + errmsg);
        if (!"ok".equals(errmsg)) {
            return "error";
        }
        String templateId = (String) resultJson.get("template_id");
        return templateId;
    }
 
    /**
     * 根据模板ID 删除模板消息
     * @param templateId 模板ID
     * @return
     */ public static String deleteWXTemplateMsgById(String templateId,String access_token){ 
         String tmpurl = "https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token="+ access_token; 
     JSONObject json = new JSONObject(); json.put("template_id", templateId); 
     try{ 
         JSONObject result = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString()); 
         JSONObject resultJson = new JSONObject(result); 
         log.info("删除"+templateId+"模板消息,返回CODE:"+ resultJson.get("errcode")); 
         String errmsg = (String) resultJson.get("errmsg"); 
         if(!"ok".equals(errmsg)){ 
             return "error"; 
             } 
         }catch(Exception e){
             e.printStackTrace(); 
             } return "success"; 
    }
  
 
    /**
     * 发送微信消息(模板消息)
     * @param touser 用户 OpenID
     * @param templatId 模板消息ID
     * @param clickurl URL置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。
     * @param topcolor 标题颜色
     * @param data 详细内容
     * @return
     */ public static String sendWechatMsgToUser(String touser, String templatId, String clickurl, String topcolor, JSONObject data,String access_token) { 
         String tmpurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+ access_token; 
         JSONObject json = new JSONObject(); 
         json.put("touser", touser); 
         json.put("template_id", templatId); 
         json.put("url", clickurl); json.put("topcolor", topcolor); 
         json.put("data", data); 
         try{ 
             JSONObject result = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString()); 
             JSONObject resultJson = new JSONObject(result); 
             log.info("发送微信消息返回信息:" + resultJson.get("errcode")); 
             String errmsg = (String) resultJson.get("errmsg"); 
             if(!"ok".equals(errmsg)){ 
                 //如果为errmsg为ok,则代表发送成功,公众号推送信息给用户了。 
                 return "error"; 
                 } 
             }catch(Exception e){
                 e.printStackTrace(); 
                 return "error"; }finally { 
                     if(templatId!=null) { 
                         //删除新增的 微信模板 
                         deleteWXTemplateMsgById(templatId,access_token); 
                         } 
                     } return "success"; 
                }
     }