小程序推送服务通知(前后端代码)

微信公众平台设置

1.点击功能里的订阅消息
在这里插入图片描述

2.在我的模板中选择需要的模板
在这里插入图片描述

前端相关代码

   data() {
        return {
          token: '',
          openId:'',
          // 模板数据
          // 需要对应模板详情里面的key
          templateData: {
            // 商品
            thing1: {
              value: '通用正面pe6c+背面压纹8c自封包装袋'
            },
            // 支付金额
            amount3: {
              value: '100'
            },
            // 下单时间
            date5: {
              value: '2019-10-14 27:34:21'
            },
            // 订单编号
            character_string6: {
              value: 'ADWMP2933887762'
            }
          }
        };
      },

1. 需要获取openid

 getOpenid(){
    		uni.login({
    			success: res => {
    				// console.log(res);
    				uni.request({
    				  url: `https://api.weixin.qq.com/sns/jscode2session?appid=appid&secret=secret&js_code=${res.code}&grant_type=authorization_code`,
    				  success:(res)=>{
    					this.openId = res.data.openid
    				  }
    				})
    			}
    		})
    	},

2.需要获取token

 getToken() {
          uni.request({
                url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret',
                success: res => {
    				this.token = res.data.access_token
                }
              })
        },

3.调起小程序订阅消息界面

<view @click="sendMessage">点击发送模板消息</view>

   	sendMessage(e) {
          const data = {
            touser: this.openId,
            template_id: 'cOC88hrTVanokHdVoSvvUhr54o44ShPQA3iN-1jeFXY', //微信公众平台上有对应的模板id
            page: 'pages/index/index',
            data: this.templateData // 模板数据
          };
          
          // 调起客户端小程序订阅消息界面
          uni.requestSubscribeMessage({
            tmplIds: ['cOC88hrTVanokHdVoSvvUhr54o44ShPQA3iN-1jeFXY'],
            success: res =>  {
              console.log(res);
              if (res.errMsg === 'requestSubscribeMessage:ok') {
                this.submit(data);
              }
            }
          });
        },

4.发送订阅消息

 submit(data) {
          wx.request({
            url: `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${this.token}`,
            data,
            method: 'POST',
            success: res => {
              console.log('发送成功');
              console.log(res);
            },
            fail: err => {
              console.log('发送失败');
              console.log(err);
            }
          });
        }

后端相关代码

 String accessToken;//因为用到的地方很多,所以我写成全局变量了
    	//获取accessToken
    	@RequestMapping("at")
    	@ResponseBody
    	public JSONObject at() {
            // 微信小程序ID
            String appid = "你自己的appid";
            // 微信小程序秘钥
            String secret = "你自己的秘钥";
    
            String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret;
            // 发送请求,返回Json字符串
            String str = WeChatUtil.httpRequest(url, "GET", null);
            // 转成Json对象 获取openid
            Map<String,String> map=new HashMap<String,String>();
            //转化成json
            JSONObject fromObject = JSONObject.fromObject(str);
            //获取at
            accessToken = fromObject.getString("access_token");
            System.out.println("后台获取的"+accessToken);
            //给小程序端返回at
            map.put("mes", accessToken);
        	JSONObject json=JSONObject.fromObject(map);
    		return json;
            //JSONObject jsonObject = JSONObject.parseObject(str);
            //System.out.println("access_token---"+jsonObject.toJSONString());
            // 我们需要的openid,在一个小程序中,openid是唯一的
    //        String access_token = jsonObject.get("access_token").toString();
    //        return access_token;	
    	}
    

    //发送消息
    	@RequestMapping("addsenddata")
        @ResponseBody
          public void sendMessage(@RequestBody String _jsonData){
            System.out.println("sendMesg传入参数"+_jsonData);
            // 微信小程序ID
            String appid = "自己appid";
            // 微信小程序秘钥
            String secret = "自己的秘钥";
    
            String ACCESS_TOKEN=accessToken;
            // 根据小程序穿过来的code想这个url发送请求
            String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token="+ACCESS_TOKEN;
            // 发送请求,返回Json字符串
            String str = WeChatUtil.httpRequest(url, "POST", _jsonData);
            // 转成Json对象 获取openid
            JSONObject fromObject = JSONObject.fromObject(str);
            
            //JSONObject jsonObject = JSONObject.parseObject(str);
            System.out.println("jsonObject____"+fromObject.toString());
            // 我们需要的openid,在一个小程序中,openid是唯一的
        }
    

    public class WeChatUtil {
        public static String httpRequest(String requestUrl,String requestMethod,String output){
            try{
                URL url = new URL(requestUrl);
                HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
                connection.setDoOutput(true);
                connection.setDoInput(true);
                connection.setUseCaches(false);
                if(null != output){
                    OutputStream outputStream = connection.getOutputStream();
                    outputStream.write(output.getBytes("utf-8"));
                    outputStream.close();
                }
                // 从输入流读取返回内容
                InputStream inputStream = connection.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);
                }
                bufferedReader.close();
                inputStreamReader.close();
                inputStream.close();
                inputStream = null;
                connection.disconnect();
                return buffer.toString();
            }catch(Exception e){
                e.printStackTrace();
            }
            return "";
        }
    }
  • 26
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
### 回答1: Java语言是一种广泛应用于后端开发的语言,它的应用范围很广,在数据库、网络通信、数据处理等方面都有广泛的应用。如果要使用Java语言来进行微信小程序的开发,需要构建一个完整的后端服务,包括接收和处理小程序请求,调用数据库进行数据操作等。 首先,我们需要使用Java来编写一个Web服务器,可以使用Spring、SpringBoot等框架,来简化开发流程,提高开发效率。这个服务器可以直接接收来自微信小程序的请求,并对其进行处理。对于微信小程序的接口调用,我们可以使用Spring集成了微信API的开源项目,例如Weixin-java-tools等,来简化接口调用和数据解析。 其次,后端代码还需要与数据库进行交互,生成、查询、修改和删除数据。Java语言的Hibernate框架可以极大地降低数据库操作的难度和复杂度。Hibernate提供了一系列的API,让开发者可以简单轻松地执行常见的CRUD操作。此外,Hibernate还提供了事务管理等高级特性,用于将多条数据处理过程转化为一个原子操作,确保数据的完整性。 最后,Java语言还可以使用Spring集成了第三方库来加速开发效率,例如lombok、Commons Lang、Apache、HttpClient,等等。这些第三方工具可以减少模板代码,利用Java的OOP特性来提高代码整洁程度和可维护性,并且增强接口的异常处理能力,从而提高应用程序的稳定性。 因此,通过使用Java语言开发后端服务,我们可以快速构建出高效可靠的微信小程序后端服务,轻松实现小程序接口的开发和调试。 ### 回答2: Java 作为一种流行的编程语言,可以用于开发微信小程序前端后端代码。在前端方面,Java 的主要作用是通过框架和工具创建基于小程序的用户界面,其中一些常用的小程序框架包括 WePY 和 mpvue。这些框架都能帮助开发人员轻松地构建小程序页面和组件,同时提供良好的开发体验和优化的性能。 对于后端开发,Java 可以使用 Spring Boot 框架来构建应用程序的后端服务,Spring Boot 提供了完整的解决方案,包括 Web 服务开发、数据访问和消息传递。通过使用 Spring Boot,开发人员可以轻松地创建高可用且高度可伸缩的微服务,并为微信小程序提供强大和可靠的后端服务。 此外,Java 还可以使用其他工具和技术来集成微信的各种功能,例如使用支付宝支付 SDK 实现小程序支付功能,或使用微信开放平台的 API 实现小程序登录、分享和消息推送等功能。 总之,Java 是一种在微信小程序开发中非常有用的编程语言,可以用于构建小程序前端后端代码,以及集成微信的各种功能。无论是个人开发者还是企业开发团队,都可以利用 Java 的强大功能和广泛的生态系统,为微信小程序开发提供优质的解决方案。 ### 回答3: Java是一种跨平台性的编程语言,可以为微信小程序提供强大的后端支持。下面将介绍如何使用Java编写微信小程序前后端代码前端代码部分: 微信小程序前端代码可以使用微信官方提供的微信开发者工具进行开发。我们可以使用Java开发微信小程序前端代码,具体步骤如下: 1. 使用Java开发web应用程序,与前端代码进行数据交互。 2. 使用Java中的RESTful API,为微信小程序提供数据服务。 3. 将Java开发的web应用程序部署在服务器上,给微信小程序提供服务后端代码部分: Java可以用来编写微信小程序后端代码,前提是你需要了解微信的开发须知、了解基本的后台技术,如:Java Web开发、MySql等技术。具体的步骤如下: 1. 首先准备一台服务器,搭建好Java环境和MySql数据库环境。 2. 开发Java Web应用程序,为微信小程序提供数据接口服务,这些数据接口使用RESTful API来提供服务。 3. 编写Java程序来访问MySql数据库,完成数据存储、更新等操作。 4. 部署Java Web应用程序,将它部署在服务器上,给微信小程序提供服务。 总之,Java作为一种跨平台性的编程语言,为微信小程序的开发提供了强大的后端支持。开发人员可以根据需求来选择使用Java来编写微信小程序前后端代码,从而为应用程序提供更好的性能和稳定性。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值