概述
********步骤********
1.登录微信公众号开发平台,进行企业认证、
2.获取appid、appsecret
3.查找相应的接口
*所有的操作都需要带有accessToken
*可以先利用测试号进行测试
以下是重点部分代码
package com.ruoyi.project.wx.info;
public class WXSo {
//会话密钥
private String sessionKey;
//用户的唯一标识(同一用户同一应用)
private String openid;
public String getSessionKey() {
return sessionKey;
}
public void setSessionKey(String sessionKey) {
this.sessionKey = sessionKey;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
}
package com.ruoyi.project.wx.info;
/**
* 微信公众平台用户信息类
*/
public class WXUserInfo {
//用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
private String subscribe;
//用户的唯一标识(同一用户同一应用)
private String openid;
//昵称
private String nickname;
//1:男、2:女
private Integer sex;
//语言
private String language;
//城市
private String city;
//省份
private String province;
//国家
private String country;
//头像
private String headimgurl;
//用户关注时间
private String subscribeTime;
//只有在用户将公众号绑定到微信开放平台帐号后
private String unionid;
//公众号运营者对粉丝的备注
private String remark;
//用户所在的分组ID
private String groupid;
//用户被打上的标签ID列表
private String tagid_list;
//用户关注的渠道来源
private String subscribe_scene;
//二维码扫码场景(开发者自定义)
private String qr_scene;
//二维码扫码场景描述(开发者自定义)
private String qr_scene_str;
public String getSubscribe() {
return subscribe;
}
public void setSubscribe(String subscribe) {
this.subscribe = subscribe;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getHeadimgurl() {
return headimgurl;
}
public void setHeadimgurl(String headimgurl) {
this.headimgurl = headimgurl;
}
public String getSubscribeTime() {
return subscribeTime;
}
public void setSubscribeTime(String subscribeTime) {
this.subscribeTime = subscribeTime;
}
public String getUnionid() {
return unionid;
}
public void setUnionid(String unionid) {
this.unionid = unionid;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getGroupid() {
return groupid;
}
public void setGroupid(String groupid) {
this.groupid = groupid;
}
public String getTagid_list() {
return tagid_list;
}
public void setTagid_list(String tagid_list) {
this.tagid_list = tagid_list;
}
public String getSubscribe_scene() {
return subscribe_scene;
}
public void setSubscribe_scene(String subscribe_scene) {
this.subscribe_scene = subscribe_scene;
}
public String getQr_scene() {
return qr_scene;
}
public void setQr_scene(String qr_scene) {
this.qr_scene = qr_scene;
}
public String getQr_scene_str() {
return qr_scene_str;
}
public void setQr_scene_str(String qr_scene_str) {
this.qr_scene_str = qr_scene_str;
}
@Override
public String toString() {
return "WXUserInfo{" +
"subscribe='" + subscribe + ''' +
", openid='" + openid + ''' +
", nickname='" + nickname + ''' +
", sex=" + sex +
", language='" + language + ''' +
", city='" + city + ''' +
", province='" + province + ''' +
", country='" + country + ''' +
", headimgurl='" + headimgurl + ''' +
", subscribeTime='" + subscribeTime + ''' +
", unionid='" + unionid + ''' +
", remark='" + remark + ''' +
", groupid='" + groupid + ''' +
", tagid_list='" + tagid_list + ''' +
", subscribe_scene='" + subscribe_scene + ''' +
", qr_scene='" + qr_scene + ''' +
", qr_scene_str='" + qr_scene_str + ''' +
'}';
}
}
package com.ruoyi.project.wx.supply;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.redis.RedisCache;
import com.ruoyi.framework.security.LoginUser;
import com.ruoyi.project.wx.info.WXUserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
public class WxService {
@Autowired
private RedisCache redisUtils;
@Value("${wx.wx-baseUrl}")
private String baseUrl;
@Value("${wx.wx-appid}")
private String APP_ID;
@Value("${wx.wx-appsecret}")
private String APP_SECRET;
/**
* 将AccessToken存入Redis
* @return
*/
public String getAccessToken(){
//return redisUtils.getCacheOrSet("WX_ACCESS_TOKEN_", () -> {
String result;
JSONObject jsonObject;
//发送get请求并接收响应数据
String url = baseUrl + "/cgi-bin/token?grant_type=client_credential&appid="+APP_ID+"&secret="+APP_SECRET;
result = HttpRequest.get(url).header("Content-type", "application/json").execute().body();
//jsonObject = com.alibaba.fastjson.JSONObject.parseObject(result);
jsonObject = JSONUtil.parseObj(result);
//System.err.println("将AccessToken存入Redis:"+jsonObject.getStr("access_token"));
return jsonObject.getStr("access_token");
//}, 7000, TimeUnit.SECONDS, String.class);
}
/**
* 模板消息推送
* @param accessToken
* @param templateId
* @param openId
* @param dataMap
* @return
*/
public String sendTemplateMessage(String accessToken, String templateId, String openId, Map<String,Object> dataMap){
String url = baseUrl+"/cgi-bin/message/template/send?access_token="+accessToken;
Map<String,Object> params = new HashMap<>(16);
params.put("touser",openId);
params.put("template_id",templateId);
params.put("lang","zh_CN");
params.put("data",dataMap);
String dataJson = new JSONObject(params).toString();
return HttpRequest.post(url).body(dataJson).execute().body();
}
/**
* 获取微信用户openid
*/
public JSONArray getWxUserOpenId(String accessToken){
//String token = "47_O09dxB4Wii7AcH_29e1CH9TemaQaFDjiNJwslDmgZb60gRdWeeu59_XoW5uEdOdegh2ZZeem4YbKvnEl1EiVvUPqKNnz3ok8hoBawbQZ-uYdKUYQ7IylFQIBubCli5d0wHk8mxdqhFeTg7dAFILfAHAZCF";
String url = baseUrl+"/cgi-bin/user/get?access_token="+accessToken;
String body = HttpRequest.get(url).execute().body();
JSONObject jsonObject = JSONUtil.parseObj(body);
return jsonObject.getJSONObject("data").getJSONArray("openid");
}
/**
* 获取微信用户基本信息
*/
public WXUserInfo getWxUserInfo(String accessToken,String OpenId){
//String token = "47_O09dxB4Wii7AcH_29e1CH9TemaQaFDjiNJwslDmgZb60gRdWeeu59_XoW5uEdOdegh2ZZeem4YbKvnEl1EiVvUPqKNnz3ok8hoBawbQZ-uYdKUYQ7IylFQIBubCli5d0wHk8mxdqhFeTg7dAFILfAHAZCF";
String url = baseUrl+"/cgi-bin/user/info?access_token="+accessToken+"&openid="+OpenId+"&lang=zh_CN";
String body = HttpRequest.get(url).execute().body();
JSONObject jsonObject = JSONUtil.parseObj(body);
return jsonObject.toBean(WXUserInfo.class);
}
}
最后
以上就是魔幻电脑为你收集整理的微信公众号-消息推送的全部内容,希望文章能够帮你解决微信公众号-消息推送所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复