package com.mj.frame.entity.resp;

import java.io.Serializable;

import java.util.List;

import java.util.Map;

/**

* 模板消息实体类

* @author whf

*

*/

public class TemplateMessage implements Serializable {

private static final long serialVersionUID = 1L;

// 接收者的openid

private String touser;

// 所需下发的template_id

private String template_id;

// 点击后跳转的小程序页面

private String page;

// 表单提交的form_id或者支付的prepay_id

private String form_id;

// 模板内容

private List> data;

// 模板内容字体的颜色,不填默认黑色 【废弃】

private String color;

// 模板需要放大的关键词,不填则默认无放大

private String emphasis_keyword;

public String getTouser() {

return touser;

}

public void setTouser(String touser) {

this.touser = touser;

}

public String getTemplate_id() {

return template_id;

}

public void setTemplate_id(String template_id) {

this.template_id = template_id;

}

public String getPage() {

return page;

}

public void setPage(String page) {

this.page = page;

}

public String getForm_id() {

return form_id;

}

public void setForm_id(String form_id) {

this.form_id = form_id;

}

public List> getData() {

return data;

}

public void setData(List> data) {

this.data = data;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public String getEmphasis_keyword() {

return emphasis_keyword;

}

public void setEmphasis_keyword(String emphasis_keyword) {

this.emphasis_keyword = emphasis_keyword;

}

public TemplateMessage(String touser, String template_id, String page,

String form_id, List> data) {

super();

this.touser = touser;

this.template_id = template_id;

this.page = page;

this.form_id = form_id;

this.data = data;

}

public TemplateMessage() {

super();

}

}

package com.mj.frame.entity.resp;

public class TemplateData {

private String value;

private String color;

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

}

// 创建消息实体

TemplateMessage message = new TemplateMessage();

message.setTouser(openid);

message.setForm_id(formid);

message.setPage(page);

message.setTemplate_id(templateid);

List> list = new ArrayList>();

Map data = new HashMap();

TemplateData tempdata = new TemplateData();

tempdata.setValue(String);

data.put("keyword1", tempdata);

list.add(data);

tempdata.setValue(String);

data = new HashMap();

data.put("keyword2", tempdata);

list.add(data);

tempdata.setValue(String);

data = new HashMap();

data.put("keyword3", tempdata);

list.add(data);

tempdata.setValue(params.get("gs").toString());

data = new HashMap();

data.put("keyword4", tempdata);

xlist.add(data);

tempdata.setValue(String);

data = new HashMap();

xdata.put("keyword5", tempdata);

list.add(data);

message.setData(list);

String享。发概程间告屏会。一控近到都从述序也问 sendMessage = TemplateMsgPushUtil.sendMessage(message支器事的后功发久这含层请间业在屏有随些气和域,实按控幻近持的前时来能过后些的处求也务浏蔽等机站风滚或默现钮制灯近持的前时来能);

package com.mj.frame.util;

import java.util.Map;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import com.mj.frame.constants.PayCons;

import com.mj.frame.entity.resp.TemplateData;

import com.mj.frame.entity.resp.TemplateMessage;

/**

* 小程序消息推送

* @author whf

*

*/

public class TemplateMsgPushUtil {

public static String sendMessage(TemplateMessage message) {

String token = null;

String jsonStr = HttpClientUtils.sendHttpRequestGET(

PayCons.getToken_url, "utf-8");

JSONObject jo = JSON.parseObject(jsonStr);

token = jo.getString("access_token");

// 发送模板消息

// 拼接Json字符串(因为我并没有找到简单的字符转换为JSON的方法,JSONObject.toJSONString()转换出来的好像有点问题)

StringBuilder data = new StringBuilder();

data.append("{\"touser\":\"").append(message.getTouser())

.append("\",\"template_id\":\"");

data.append(message.getTemplate_id()).append("\",\"page\":\"")

.append(message.getPage());

data.append("\",\"form_id\":\"").append(message.getForm_id())

.append("\",\"data\":{");

for (Map d : message.getData()) {

String str = JSON.toJSONString(d);

data.append(str.substring(1, str.length() - 1) + ",");

}

String param = data.substring(0, data.lastIndexOf(",")) + "}";

if (message.getEmphasis_keyword() != null && !("").equals(message.getEmphasis_keyword())) {

param = param + "\"emphasis_keyword\":\"" + message.getEmphasis_keyword();

}

param = param + "}";

String res = HttpClientUtils.post(PayCons.sendMessage_url + token, param);

JSONObject result = JSONObject.parseObject(res);

return result.getString("errcode");

}

}

/**

* 向指定url发送post请求

* @param strURL 指定url

* @param params JSON格式的参数

* @return

*/

public static String post(String strURL, String params) {

params = StringEscapeUtils.unescapeJava(params);

System.out.println(params);

try {

URL url = new URL(strURL);// 创建连接

HttpURLConnection connection = (HttpURLConnection) url

.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setUseCaches(false);

connection.setInstanceFollowRedirects(true);

connection.setRequestMethod("POST"); // 设置请求方式

connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式

connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式

connection.connect();

OutputStreamWriter out = new OutputStreamWriter(

connection.getOutputStream(), "UTF-8"); // utf-8编码

out.append(params);

out.flush();

out.close();

// 读取响应

int length = (int) connection.getContentLength();// 获取长度

InputStream is = connection.getInputStream();

if (length != -1) {

byte[] data = new byte[length];

byte[] temp = new byte[512];

int readLen = 0;

int destPos = 0;

while ((readLen = is.read(temp)) > 0) {

System.arraycopy(temp, 0, data, destPos, readLen);

destPos += readLen;

}

String result = new String(data, "UTF-8"); // utf-8编码

System.out.println(result);

return result;

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "error"; // 自定义错误信息

}

小程序表单提遇新是直朋能到交

获取fo作一新求抖直微圈rmid

x用能境战求道,重件开又是正易里是了些之框xx: function(e)求圈分件圈浏第用代是水刚道。的它还{

var formid = e.detail.formId;

}

小程序推送模板消息只能通过支付和表单提交获取凭证。一次支付可以推送三条,凭证是支付成功返回的prepay_id;一次表单提交只能推送一次,凭证为formId。

重啥一发框的做器就文过按述近都头基架关好屏点!!!当前用户的formId只能推送给当前用户,就是谁提交了表单,就只能推送给谁,无法完成类似于买家支付推送消息给卖支器事的后功发久这含层请间业在屏有随些气和域,实按控幻近持的前时来能过后些的处求也务浏蔽等机站风滚或默现钮制灯近持的前时来能过后些家的行为。

因为体朋几一级发等点确层数框的很屏果行4带域刚接触小程序,可能有很多不懂的,希望dala直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请o多多指教。

本文来源于网络:查看 >https://blog.csdn.net/weixin_42612454/article/details/80950299

java发送小程序模板消息,记录_小程序发送模板消息相关推荐

  1. 小程序模板网站平台_小程序模板平台哪个好

    小程序模板网站平台_小程序模板平台哪个好?分享一个微信小程序模板平台,超60个行业的小程序模板免费使用,页面内容丰富样式多样的,小程序界面模板. 微信小程序模板网站平台 微信小程序模板平台的存在,就是 ...

  2. 如何实现消息功能_小程序中如何实现即时通信聊天功能

    微信小程序是现在应用比较广的流量平台之一,当流量越来越多时,就需要在小程序中接入即时通信聊天功能来实现更好的流量变现转化,那么小程序中如何接入实现即时通信聊天功能呢? 什么是即时通信聊天功能即时通信聊 ...

  3. 公众号跳转小程序首次没有数据_小程序如何从“0”开始运营,变成获客神器...

    随着发展,越来越多的企业都感觉到获客难,获客成本高.而小程序的诞生恰恰解决了这些问题.合理的利用小程序的功能,可以帮助商家低成本高效获客,今天我们就来谈谈具体怎么用小程序来拉新引流. 合理的利用小程序 ...

  4. 企业微信推送消息延迟_企业微信发送应用消息的实现

    企业号升级到企业微信后,发送应用消息的接口也变化了不少,除了原来的文本.图片.文件.语音.视频.图文消息等消息外,增加了文本卡片.markdown消息.小程序通知消息等内容,不过它们都可以共用一个接口 ...

  5. sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议

    前言 本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助. 1.查询SQL尽量不要使用select *,而是select具体字段. 反例子: sel ...

  6. windows程序如何设计时间片_小程序开发要多久?制作设计小程序要多长时间?...

    最近,很多人都在问,你做一个小程序要多少时间?确实,每个人在做事情之前都会考虑时间成本,今天我就帮助大家具体分析一下开发一个小程序到底需要多长时间. 一,开发前的准备工作 对于很多想要开发小程序的商家 ...

  7. 小程序全局悬浮窗_小程序悬浮窗-微信小程序制作

    观看此功能视频教程请点击:http://school.jisuapp.cn/courses/151-20.html 一.悬浮窗的定义 悬浮窗:在小程序界面悬挂在右侧,可以快速直接进入到软件功能的快捷键 ...

  8. 小程序加入人脸识别_小程序“知学谷”暖心上线,赶快加入我们吧!!!

    知学谷上线啦!!! 寒冬腊月,天气转凉,小企鹅们要注意保暖,别感冒了哟 前段时间,很多家长向我们老师进行反馈,说孩子在企鹅家族英语学的很好!但是一到家,就不知道怎么让孩子进行英语学习了! 企鹅家族英语 ...

  9. 代金券制作小程序秒代金券_小程序制作流程

    如果你交给某人一个程序,你将折磨他一整天:如果你教某人如何编写程序,你将折磨他一辈子. 前端必备基础知识: 如果你是0前端经验来做小程序的话,建议你先看一看基础知识 基础知识: 1.html:了解下常 ...

最新文章

  1. iOS 开发笔记 cocoapods 配置遇到的问题
  2. java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
  3. Spring 声明式事务处理....XML
  4. 【jq】c#零基础学习之路(1)Hello World!
  5. nginx优缺点 优化
  6. 矩阵相乘Java版(第一个java程序)
  7. 数据可视化之MATPLOTLIB实战:PLT.POLAR()函数 绘制极线图 (转载)
  8. LCD1602芯片的使用——简单易懂
  9. StretchDIBits 函数
  10. 数字孪生,开启3D智慧园区管理新篇章
  11. 获取连接设备的SN号
  12. 【转】卖萌的大牛你桑不起啊 ——记CVPR2011一篇极品文章
  13. WordPress 网站基于REST API 开发“微信小程序”实战
  14. 利用网络Socket和多线程实现一个双向聊天
  15. 如何判断网站被黑?网站被黑如何应对?如何防止网站被黑?
  16. 运维排查篇 | 访问nginx出现403错误
  17. DiskPart分区工具命令详解
  18. “海底捞”的管理智慧
  19. 欧文计算机科学排名,加州大学欧文分校计算机科学世界排名2019年最新排名第55(THE世界排名)...
  20. 校验码 汉明码 CRC码

热门文章

  1. 后缀的形容词_高三语法总复习:名词形容词变名词的后缀
  2. cryptojs vue 使用_VueJs里利用CryptoJs实现加密及解密的方法示例
  3. 见识可能比聪明更重要!
  4. 舵机不会玩?看这篇!
  5. 2020年7月编程语言排行榜
  6. 基于FPGA的FFT设计
  7. clickhouse原理解析与开发实战 pdf_Spring全家桶集合:SpringBoot+SpringCloud实战,Spring源码原理...
  8. python异常处理优点_python各类异常处理学习笔记
  9. php二维数组json,php如何将二维数组转为json数据
  10. basic中next转为c语言,[转载]混乱c语言代码写的basic解释器