java put请求_计算机毕业设计中用java实现小程序推送(springboot实现)

0eb25fd916ca02281b11ae042a02d50c.png点击上方“蓝字”,关注我们.
  • 如何实现1 小程序获取用户openid,收集formid传给java后台

  • 2 java推送消息给指定小程序用户

老规矩,还是先看效果图

a32b0ae63bca4d29aebfb8c421a0cac3.png

实现步骤

一,微信小程序管理后台开通模版推送

fd3c5717e830a573c8dbeab10dd26126.png
这里的模版id很重要,接下来我们推送的都是这个模版。

二,java后台实现推送所需字段

  • 1 看微信官方推送消息所需要的字段c0dbd9fa143e8e5de6dd502f7da81761.pngaa1625090a84254b20ff3933831ef983.png

  • 2 有了官方说明,我门接下来就去拿到官方所需要的这些字段,来组装请求数据就可以了。

三、下面讲解实现步骤

我的java后台是基于springboot开发的,如果你不了解spring boot,建议你先去了解下springboot再回来接着学习。
还有RestTemplate是我们java后台做get和post请求必须的,我们和微信服务器交互就用的RestTemplate

  • 1 首先根据官方推送所需字段组装java-bean
    这里用到两个javabean

/*
* 小程序推送所需数据
* qcl 微信:2501902696
* */
@Data
public class WxMssVo {
private String touser;//用户openid
private String template_id;//模版id
private String page = "index";//默认跳到小程序首页
private String form_id;//收集到的用户formid
private String emphasis_keyword = "keyword1.DATA";//放大那个推送字段
private Map data;//推送文字
}

312d999867f10c31b3c8f0336f31db6c.png

到这里请求推送的数据就组装好了,解下来我们去实现推送功能。
奥不对,还有一个重要的字段需要获取到:access_token

access_token的获取

/*
* 获取access_token
* appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来
* */
public String getAccess_token(String appid, String appsecret) {
//获取access_token
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +
"&appid=" + appid + "&secret=" + appsecret;
String json = restTemplate.getForObject(url, String.class);
AccessToken accessToken = new Gson().fromJson(json, AccessToken.class);
return accessToken.getAccess_token();
}

这次是真正的可以来请求微信服务器来实现消息推送了

/*
* 微信小程序推送单个用户
* */
public String pushOneUser(String openid, String formid) {


//获取access_token
String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);
String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +
"?access_token=" + access_token;

//拼接推送的模版
WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);//用户openid
wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id
wxMssVo.setForm_id(formid);//formid


Map m = new HashMap<>(5);
//keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注
TemplateData keyword1 = new TemplateData();
keyword1.setValue("新下单待抢单");
m.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue("这里填下单金额的值");
m.put("keyword2", keyword2);
wxMssVo.setData(m);
TemplateData keyword3 = new TemplateData();
keyword3.setValue("这里填配送地址");
m.put("keyword3", keyword3);
wxMssVo.setData(m);
TemplateData keyword4 = new TemplateData();
keyword4.setValue("这里填取件地址");
m.put("keyword4", keyword4);
wxMssVo.setData(m);
TemplateData keyword5 = new TemplateData();
keyword5.setValue("这里填备注");
m.put("keyword5", keyword5);
wxMssVo.setData(m);
ResponseEntity responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
log.error("小程序推送结果={}", responseEntity.getBody());
return responseEntity.getBody();
}

openid可以让小程序开发人员给你传过来,也可以自己获取。
formid需要小程序开发给你传过来,你也可以把formid存到数据库里,什么时候需要直接拿出来用就可以了。
注意:formid必须和用户openid对应。

下面贴出来完整代码

package com.qcl.paotuischool.wechat;

import com.google.gson.Gson;
import com.qcl.userwechat.bean.AccessToken;
import com.qcl.utils.ConstantUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

import lombok.extern.slf4j.Slf4j;

/**
* Created by qcl on 2018/9/11.
* 微信小程序推送服务,
* 包含获取access_token的服务
*/
@Service
@Slf4j
public class WxPushServiceQcl {
//用来请求微信的get和post
@Autowired
private RestTemplate restTemplate;


/*
* 微信小程序推送单个用户
* */
public String pushOneUser(String openid, String formid) {


//获取access_token
String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET);
String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" +
"?access_token=" + access_token;

//拼接推送的模版
WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);//用户openid
wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id
wxMssVo.setForm_id(formid);//formid


Map m = new HashMap<>(5);
//keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注
TemplateData keyword1 = new TemplateData();
keyword1.setValue("新下单待抢单");
m.put("keyword1", keyword1);
TemplateData keyword2 = new TemplateData();
keyword2.setValue("这里填下单金额的值");
m.put("keyword2", keyword2);
wxMssVo.setData(m);
TemplateData keyword3 = new TemplateData();
keyword3.setValue("这里填配送地址");
m.put("keyword3", keyword3);
wxMssVo.setData(m);
TemplateData keyword4 = new TemplateData();
keyword4.setValue("这里填取件地址");
m.put("keyword4", keyword4);
wxMssVo.setData(m);
TemplateData keyword5 = new TemplateData();
keyword5.setValue("这里填备注");
m.put("keyword5", keyword5);
wxMssVo.setData(m);
ResponseEntity responseEntity =
restTemplate.postForEntity(url, wxMssVo, String.class);
log.error("小程序推送结果={}", responseEntity.getBody());
return responseEntity.getBody();
}
/*
* 获取access_token
* appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来
* */
public String getAccess_token(String appid, String appsecret) {
//获取access_token
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" +
"&appid=" + appid + "&secret=" + appsecret;
String json = restTemplate.getForObject(url, String.class);
AccessToken accessToken = new Gson().fromJson(json, AccessToken.class);
return accessToken.getAccess_token();
}
}
60fab642c2060d2b88c19e6247ecab5f.gif

更多请关注小编继续了解,免费赠送网页设计作业源代码哦!

如需要精品网页设计作业和毕业设计作品

联系QQ:2656895362进行咨询

7f1ef66210ce884c170bfc9f03adafb9.png ebe34cb48e9d27f3a6f30d71a51076dc.png 网站地址: http://www.85work.com/ 扫码关注最新动态更多精彩,点击下方“
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值