微信小程序之模板消息

模板消息

参考:官方文档

微信小程序网页上创建模板消息模板

创建完的模板消息如下:

image.png

小程序前台页面准备

官方文档原话

页面的<form/> 组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支付行为,可以获取prepay_id用于发送模板消息。

调用接口下发模板消息(详见接口说明)

所以我们可以直接在页面上写一个form表单就行了哈

<form report-submit bindsubmit="formSubmit" bindreset="formReset">
  <view class="section section_gap">
    <view class="section__title">switch</view>
    <switch name="switch"/>
  </view>
  <view class="section section_gap">
    <view class="section__title">slider</view>
    <slider name="slider" show-value ></slider>
  </view>
    <view class="btn-area">
    <button formType="submit">Submit</button>
    <button formType="reset">Reset</button>
  </view>
</form>

主要是加一个属性 report-submittrue
在js里则写一个请求到后台去处理模板消息的发送

var app = getApp()
var SERVER_NAME = app.server_name

Page({
  formSubmit: function (e) {
    console.log('form发生了submit事件,携带数据为:', e.detail.value)
    var formId = e.detail.formId;
    wx.request({
      url: SERVER_NAME+'/template/sendTemplate',
        data: {
          form_id: formId
        },
        header: {
          'content-type': 'application/json'
        },
        success: function (res) {
          console.log(res)
        },
        fail: function (res) {
          console.log(res)
        }
      })
  },
  formReset: function () {
    console.log('form发生了reset事件')
  }
})

前台基本就是这样了 ,后台代码如下:


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.udbac.util.HttpUtil;
import com.udbac.util.WxApiClient;

import net.sf.json.JSONObject;

/**
 * 测试模板消息发送 
 * Title:TemplateTest 
 * Description:
 * @author root
 * @date 2017年6月6日 上午11:40:49
 */

@RequestMapping("/template")
@Controller
public class TemplateController {

    //private static String form_id = "2017060601";// 表单提交场景下,为 submit 事件带上的

    
    /**
     * form_id只有在手机上调试的时候是数字串的,在web开发工具上formId显示的是: "the formId is a mock one。
     * @param form_id
     * @return
     */
    @ResponseBody
    @RequestMapping("/sendTemplate")
    public JSONObject sendTemplate(@RequestParam("form_id") String form_id){
        JSONObject obj = new JSONObject();
        obj.put("touser", WxApiClient.touser);
        obj.put("template_id", WxApiClient.template_id);
        obj.put("form_id", form_id);
        
        JSONObject data = new JSONObject();
        
        JSONObject keyWord1 = new JSONObject();
        keyWord1.put("value", "北京市朝阳区幸福二村40号兰博基尼展厅");
        keyWord1.put("color", "#173177");
        
        JSONObject keyWord2 = new JSONObject();
        keyWord2.put("value", "2017年06月06日 16:45:55");
        keyWord2.put("color", "#173177");
        
        JSONObject keyWord3 = new JSONObject();
        keyWord3.put("value", "兰博基尼LP750");
        keyWord3.put("color", "#173177");
        
        JSONObject keyWord4 = new JSONObject();
        keyWord4.put("value", "20170606151111010");
        keyWord4.put("color", "#173177");


        JSONObject keyWord5 = new JSONObject();
        keyWord5.put("value", "8500000元");
        keyWord5.put("color", "#173177");
        
        data.put("keyword1", keyWord1);
        data.put("keyword2", keyWord2);
        data.put("keyword3", keyWord3);
        data.put("keyword4", keyWord4);
        data.put("keyword5", keyWord5);
        
        obj.put("data", data);
        
        System.out.println(obj.toString());
        JSONObject jsonObject = HttpUtil.httpsRequest(WxApiClient.getTemplateUrl(), "POST", obj.toString());
        
        System.out.println(jsonObject);
        return jsonObject;
    }
    
}

keyword1到keyword5这块有先后顺序的,要是不按照官方给的顺序来,模板先后顺序就乱套了,名称和值不然就对不上了

模板消息_3

附上一个发送post请求用到的工具类:

    /*** 发送的POST请求
     * @param urlPath
     * @return
     * @throws IOException
     */
    public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr) {
        JSONObject jsonObject = null;
        try {
            
            URL url = new URL(requestUrl);
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod(requestMethod);
            if (null != outputStr) {
                OutputStream outputStream = conn.getOutputStream();
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }
            InputStream inputStream = conn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            if(buffer.toString().contains("\n")) {
                return null;
            }
            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            inputStream = null;
            conn.disconnect();
            jsonObject = JSONObject.fromObject(buffer.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

最后测试一下:
在刚才注册的小程序表单页面随便勾选一个,点击submit,小程序会发请求到后台,然后拼接成json字符串,调用模板消息发送的接口,把json字符串post请求传过去就ok.

模板消息_2

最后测试发送,手机上成功得到了一个模板消息(^-^)V

我的博客文章地址:http://www.hanyz.cn/2017/06/07/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%B9%8B%E6%A8%A1%E6%9D%BF%E6%B6%88%E6%81%AF/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容