微信推送消息--发送模板消息

author author     2022-08-05     295

关键词:

工具类,详见附件,下载地址:

http://files.cnblogs.com/files/007sx/weixin_util.zip

传的参数参考微信开发者文档-发送模板消息:

http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html#.E5.8F.91.E9.80.81.E6.A8.A1.E6.9D.BF.E6.B6.88.E6.81.AF

全局返回码说明:

http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html

 

jar包(包括了微信支付所需jar此处一起列出)  pom.xml

复制代码
    <!-- weixin -->
    <dependency>
        <groupId>com.ning</groupId>
        <artifactId>async-http-client</artifactId>
        <version>1.8.13</version>
    </dependency>
    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.7</version>
    </dependency>
    <dependency>
      <groupId>com.gson</groupId>
      <artifactId>wechat</artifactId>
      <version>1.0.8</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.14.4</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp</groupId>
        <artifactId>okhttp</artifactId>
        <version>2.7.5</version>
    </dependency>
    <dependency>
    <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.7</version>
    </dependency>
复制代码

 注意com.gson wechat 1.0.8 maven中央仓库没有,需要自己导入本地仓库使用,wechat-1.0.8.jar下载地址:

http://files.cnblogs.com/files/007sx/wechat-1.0.8.zip

 

package isa.qa.blep.admin.controller;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.google.gson.Gson;

import isa.qa.core.weixin.util.WeixinToken;
import net.sf.json.JSONObject;

@Controller
@RequestMapping(value = "/api")
public class WeixinMessageController {
    protected static Logger log = Logger.getLogger(WeixinMessageController.class);
    
    public static final String send_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
    
    /**
     * 发送模板消息
     * @param send_url
     * @param map
     * @return
     */
    @RequestMapping(value = "/weixin/sendMessage/placeOrder",
            method = RequestMethod.POST,
            produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public JSONObject sendMessage(@RequestBody HashMap<String, Object> map) {
        JSONObject jsonObject = null;
        String strJson = mapToJson(map);
        
        try {
            String access_token = WeixinToken.getRecentToken();
            jsonObject = sendMessageUtil(send_url+access_token,strJson);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }
    
    /**
     * 将Map转化为Json
     * 
     * @param map
     * @return String
     */
    public static <T> String mapToJson(Map<String, T> map) {
     Gson gson = new Gson();
     String jsonStr = gson.toJson(map);
     return jsonStr;
    }
    
    
    
    /**
     * 发送post请求
     * @param url
     * @throws Exception 
     */
    public static JSONObject sendMessageUtil(String send_url,String strJson) throws Exception {
        StringBuffer sb = new StringBuffer("");
        JSONObject jsonObject = null;
        try{
            //创建连接
            URL url = new URL(send_url);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            
            //connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            connection.setRequestProperty("Content-Type","application/json; charset=UTF-8");       
            
            connection.connect();

            //POST请求
            DataOutputStream out = new DataOutputStream(connection.getOutputStream());
            out.write(strJson.getBytes("UTF-8"));//这样可以处理中文乱码问题
            out.flush();
            out.close();
            
            //读取响应
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String lines;
            while ((lines = reader.readLine()) != null) {
                lines = new String(lines.getBytes(), "utf-8");
                sb.append(lines);
            }
            System.out.println(sb);
            reader.close();
             jsonObject = JSONObject.fromObject(sb.toString());
             if(jsonObject.get("errcode").equals("0")){
                 throw new Exception(jsonObject.getString("errmsg"));
             }
            // 断开连接
            connection.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonObject;
    } 
}

传后台:

      {
           "touser":"oL0VOuBXNdeK6J0aFh0RB6A6LTjI",
           "template_id":"w-6o1rsYobEzI2qYfbEocKQ5wewF7bhNJctiGg7J8Fg",
           "url":"http://weixin.qq.com/download",            
           "data":{
                   "first": {
                       "value":"恭喜你购买成功!",
                       "color":"#173177" 
                   },
                   "keynote1":{
                       "value":"巧克力",
                       "color":"#173177" 
                   },
                   "keynote2": {
                       "value":"39.8元",
                       "color":"#173177" 
                   },
                   "keynote3": {
                       "value":"2014年9月22日",
                       "color":"#173177" 
                   },
                   "remark":{
                       "value":"欢迎再次购买!",
                       "color":"#173177" 
                   }
           }
       }

发送成功的返回值:

{
   "errcode": 0,
   "errmsg": "ok",
   "msgid": 540227432
}

 

消息推送之微信模板消息

参考技术A微服务中消息推送模块,一般消息推送分为微信模板消息、阿里云短信、APP消息推送,APP消息推送选择个推,本文主要介绍微信消息模板WxTemplateData.java微信消息的服务实现类WxTemplateDataController.java微信模板的建立可以... 查看详情

.net微信公众号开发——模板消息

   本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介;(2)设置所属行业;(3)获得模板id;(4)发送模板消息;(5)接收推送模板消息发送结果事件。  本文演示地址:http://xrwang.... 查看详情

小程序接入订阅消息操作指南

参考技术A最近,微信对小程序模板消息下发条件进行了调整,订阅消息已经登场,小程序模板消息将退出舞台,作为开发者的你,跟上微信的节奏了吗?以前,在用户点击小程序内按钮后,开发者必须在7天内给用户下发模板消... 查看详情

微信公众号模板消息推送

...通access_token的区别获取普通access_token的接口模板id需要在微信官方申请自己企业的推送模板,成功会获得一个模板id1、模板消息实体类2、access_token实体类1、获取access_token方法2、消息推送方法 查看详情

微信公众平台发送模板消息

前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下。微信... 查看详情

微信发送模板消息

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。 关于使用规则,请注意... 查看详情

主动发送微信公众平台“模板消息”需要啥条件?

...消息。主动发送消息目前可以通过两种方式实现:1、通过微信的,高级群发接口和客服接口(须认证后才能够使用)进行消息的群发规则服务器每个月4条订阅号每天一条客服接口可以实现向单独用户发送消息但是必须该用户24小时... 查看详情

wechat微信模板消息推送demo(代码片段)

先上一波微信的官方文档中对消息模板的推送https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5下面请求的token是用的别人的…具体获取accesstoken大家可以参考微信官方文档https://developers.weixin.qq.com/do 查看详情

微信小程序订阅消息调研

...接收消息的权利交给用户呢?  众所周知,根据微信小程序模板消息规则,商家则可在不经用户同意的情况下,在限定时间内向用户发起限定条数的消息。比如原来使用模板消息支付完成后商家可在7天内发送3条模板消... 查看详情

微信服务号开发模式下怎么发送推送消息

你好余恨余世,微信公众号在开发者模式下当用户关注你的公共帐号的时腾讯会发送一个事件通知你的,事件类型包括subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件);这个时候你可以通过判断发送的事件来做相... 查看详情

php之微信公众号发送模板消息

讲一下开发项目中微信公众号发送模板消息的实现过程(我用的还是Thinkphp5.0)。先看一下效果,如图:就是类似于这样的,下面讲一下实现过程:第一步:微信公众号申请模板消息权限:立即申请:申请过程就不说了,提交并且... 查看详情

简单使用java实现微信公众号推送模板消息

原文链接: https://blog.csdn.net/qq_41936224/article/details/108076005以下例子是简单的使用Java代码实现微信公众号推送模板消息,不包含跳转到小程序网页代码1、pom.xml文件中添加依赖<!--lombok--><depend 查看详情

python:消息推送-发送短信(以聚合数据为例)

参考技术A聚合数据网址:https://passport.juhe.cn/cas/login实现推送的处理步骤:创建账号,申请聚合数据账号-申请短信API服务新建短信模板:使用申请到的key和短信模板,套用官方给的发短信模板:****组装发送的短信内容,源码:... 查看详情

微信公众号模板消息无法跳转到指定小程序页面

参考技术A最近做了一个需求在公众号网页推送的模板消息,连接跳转到关联小程序,遇到总是跳转到首页的问题。说一下里面的坑后端是PHP进 行消息发送 官方发送数据例子如下:最开始为了构造一个json数据格式,第一... 查看详情

微信小程序实现模板消息群发、发送给指定用户

...参与达到一定数量后则拼课成功。按理说很平常的需求,微信公众号里边应该很容易实现,但是想在小程序里边实现这么个功能却有点蛋疼了。为什么小程序实现起来比较费劲呢,那就要说下小程序发送模板消息的机制了,先看... 查看详情

活用微信公众号的推送功能

...标,一般来说,APP推送可尝试使用效果较好的三方渠道;微信内推送应建立适当的推送时间避免Formid过期。据了解,APP的推送触达率在75%左右,微信的触达率在90%左右。3.推送点击率:这个和推送人群、推送时间、推送素材紧密... 查看详情

微信公众平台的模板消息如何发送?

不是问如何申请,是如何发送。需要SDK?微信公众平台的图文消息是这样发的:1、先在左侧栏目管理栏目下点击素材管理项,然后在中间编辑区选择“单图文消息”或“多图文消息”进入编辑界面。(单图文消息适合一条消息... 查看详情

微信模板消息群发系统

 一、使用场景:微信公众号模板消息群发,用于提醒、通知、营销等。只要关注的用户都可以收到二、使用条件:1、认证服务号2、已经申请开通模板消息功能(认证服务号即可申请)三、功能介绍:微信公众号模板消息一... 查看详情