微信服務號發送模板消息


 

 

package org.liufeng.course.servlet;



import java.io.IOException;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;



import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import net.sf.json.JSONString;



import org.liufeng.course.pojo.Token;

import org.liufeng.course.util.AdvancedUtil;

import org.liufeng.course.util.CommonUtil;

import org.liufeng.course.util.UserConfig;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;



/**

 * 發送模板消息

 * @author Administrator

 */

public class TemplateServlet extends HttpServlet {



    private static final long serialVersionUID = 3493133031468141822L;

    

    private static Logger log = LoggerFactory.getLogger(TemplateServlet.class);

    

    //接收后端推送消息

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");

        response.setCharacterEncoding("utf-8");



        HttpSession session = request.getSession();

        //獲取請求參數

        String openId = (String)request.getParameter("openId");

        String data = (String)request.getParameter("data");

        String type = (String)request.getParameter("type");

        //獲取服務器地址

        String url = request.getRequestURL().toString();

        url = url.substring(0, url.lastIndexOf("/")+1);

        //獲取新的token

        Token token = CommonUtil.getToken(UserConfig.APPID, UserConfig.SECRET);

        if(token!=null){

            session.setAttribute("access_token", token.getAccessToken());

            send(openId,token.getAccessToken(),url,data,type);

        }else{

            log.info("獲取access_token異常");

        }

    }

    

    /**

     * 發送模板消息接口

     * @param openId 用戶的openid

     * @param access_token 調用接口憑證

     * @param url 服務器地址

     * @param data 模板數據

     * @param type 模板類型(1隱患 2任務 3審批 4質量排查)

     */

    public void send(String openId, String access_token, String url, String data, String type){

        //拼模板請求參數

        String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token;

        String param = "{\"touser\":\"TOUSER\",\"template_id\":\"TEMPLATE_ID\","

                + "\"url\":\"URL\",\"data\":DATA}";

        param = param.replace("TOUSER", openId);//接收者openid

        param = param.replace("URL", url+"showTemplateServlet?title="+JSONObject.fromObject(data).getString("first"));//模板跳轉鏈接

        

        switch (type) {

            case "1"://隱患提醒

                param = param.replace("TEMPLATE_ID", UserConfig.YINHUAN_TEMPLATE_ID);//模板ID

                break;

            case "2"://任務指派

                param = param.replace("TEMPLATE_ID", UserConfig.RENWU_TEMPLATE_ID);//模板ID

                break;

            case "3"://流程待審批

                param = param.replace("TEMPLATE_ID", UserConfig.SHENPI_TEMPLATE_ID);//模板ID

                break;

            case "4"://質量排查

                param = param.replace("TEMPLATE_ID", UserConfig.PAICHA_TEMPLATE_ID);//模板ID

                break;

            default:

                log.info("推送消息的類型不存在");

                break;

        }

        param = param.replace("DATA", data);

        

//        param = param.replace("DATA", "{\"first\":{\"value\":\"隱患提醒\"},\"keyword1\":{\"value\":\"C 機電\"},\"keyword2\":{\"value\":\"3-5#層運大巷內無交通管控信號。\"},\"keyword3\":{\"value\":\"已聯系廠家制作,預計10月底完工。\"},\"keyword4\":{\"value\":\"2017-07-03\"},\"keyword5\":{\"value\":\"孫榮廷(機二隊)\"},\"remark\":{\"value\":\"該隱患暫未銷號\"}}");//模板數據

        

        System.out.println(requestUrl);

        System.out.println(param);

        //發送模板消息

//        JSONObject jsonObject = CommonUtil.sendPost(requestUrl, param);

        JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", param);

        int errorCode     = jsonObject.getInt("errcode");

        String errorMsg = jsonObject.getString("errmsg");

        String msgid = jsonObject.getString("msgid");

        log.info("已調用模板消息接口 errcode:"+errorCode+", errmsg:"+errorMsg+", msgid:"+msgid);

    }



}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM