精华内容
下载资源
问答
  • java实现小程序消息推送
    2021-03-15 11:26:54

    接之前微信公众号的需求后,现在又需要对接微信小程序,实现订阅消息推送功能。

    我把相关的实现逻辑,注意事项总结了一下。

    一、配置信息

    #################微信渠道-服务号##################
    ##granttype可共用
    wechat.auth.granttype=client_credential
    wechat.auth.token=Qwer@123
    wechat.auth.appid=xxxxxxxxxx
    wechat.auth.secret=xxxxxxxxxx
    #获取AccessToken url GET
    wechat.url.accesstoken=https://api.weixin.qq.com/cgi-bin/token
    #模板消息推送 POST
    wechat.url.template.send=https://api.weixin.qq.com/cgi-bin/message/template/send
    #获取所有的消息模板 GET
    wechat.url.get.all.template=https://api.weixin.qq.com/cgi-bin/template/get_all_private_template
    #################微信渠道-服务号##################
    
    #################微信渠道-小程序##################
    #appId 和 secret 不可与公众号共用
    weapp.auth.appid=xxxxxxxxxx
    #小程序secret不再明文显示,如果小程序方重置,需要同步到消息中心
    weapp.auth.secret=xxxxxxxxxxxxxxx
    weapp.message.send=https://api.weixin.qq.com/cgi-bin/message/subscribe/send
    #################微信渠道-小程序##################

    注意事项:

    1、微信公众号与微信小程序是否是同一个主体,我这里不是同一个主体,所以appid和secret是两个不同的配置。

    2、获取token的granttype类型一致,可以共用。

    获取token的方法可以参考之前的文章:https://blog.csdn.net/ILoveController/article/details/111642431

    微信小程序官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html#method-http

    二、参数说明

    根据官方文档说明,有几个必填字段

    1、推送人openid,需要找小程序后端要一下订阅用户的openid

    2、模板id,到小程序里查看需要发送的模板id

    三、JAVA实现

    String sendUrl = weAppSendUrl + "?access_token=" + accessToken;
    
    JSONObject params = new JSONObject();
    params.put("touser", touser);
    params.put("template_id", templateId);
    params.put("data", data);
    if (StringUtils.isNotBlank(page)) {
       params.put("page", page);
    }
    if (StringUtils.isNotBlank(miniProgramState)) {
        params.put("miniprogram_state", miniProgramState);
    }
    if (StringUtils.isNotBlank(lang)) {
       params.put("lang", lang);
    }
    
    //header
    HttpHeaders header = new HttpHeaders();
    header.setContentType(MediaType.APPLICATION_JSON);
    //HttpEntity
    HttpEntity<JSONObject> httpEntity = new HttpEntity<>(params, header);
    RestTemplate restTemplate = new RestTemplate();
    //JSONObject数据结果
    JSONObject result = restTemplate.postForObject(sendUrl, httpEntity, JSONObject.class);

     

    更多相关内容
  • 本课程将带领大家使用java实现微信公号和小程序的推送功能。 本节课你能学到以下知识点 1, 实战入门java后台的开发 2,学会springboot ...4,小程序推送实现 5,入门小程序开发 6,搭建自己的后台服务器
  • java实现小程序订阅消息推送(附源码)

    千次阅读 热门讨论 2021-08-27 09:38:05
    最近做项目时需要做个小程序消息推送,所以在这里记录分享一下实现过程 一、什么是消息推送 ↓↓↓↓ 官方文档 小程序提供了多种消息方式,一般常用的是模板消息和订阅消息,但是模板消息推送,在2020年1月10日...


    前言

    最近做项目时需要做个小程序的消息推送,所以在这里记录分享一下实现过程


    一、什么是消息推送

    ↓↓↓↓
    官方文档

    小程序提供了多种消息方式,一般常用的是模板消息和订阅消息,但是模板消息推送,在2020年1月10日下线,所以我们就是用使用订阅消息了。

    功能介绍
    消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。

    • 订阅消息推送位置:服务通知
    • 订阅消息下发条件:用户自主订阅
    • 订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面

    消息类型

    1. 一次性订阅消息
      一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

    2. 长期订阅消息
      一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。

    目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。
    在这里插入图片描述

    二、获取模板ID

    百度搜索微信公众平台
    在这里插入图片描述
    微信扫码登录
    在这里插入图片描述
    在功能中找到订阅消息

    在这里插入图片描述
    点击开通订阅消息
    在这里插入图片描述

    由于长期性订阅消息,目前仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。仅就线下公共服务这一点,长期性订阅消息就和大部分开发者无缘了。
    所以我们这里只能以使用一次性订阅消息为例。

    选择先要的公共模板,也可以自己定制,但是公共模板已经可以满足我们绝大多数业务场景了
    在这里插入图片描述

    如上图,我们从公共模板库里选择一个一次性订阅的模板。然后编辑模板如下图
    在这里插入图片描述
    下图就是我们添加好的模板,下图的模板id就是我们需要的。
    在这里插入图片描述

    三、获取access_token

    首先来看下access_token是什么,下图是官方给出的:
    在这里插入图片描述
    其实通俗的讲,access_token就是小程序官方给我们提供的一个凭证,你要调用小程序官方的接口,就必须先拿到access_token。这个和我们做的项目调用后台接口必须登录后台给你一个token你带token访问相似。

    看一下官方文档:
    在这里插入图片描述

    grant_type是一个固定的值,只有appid和secret是需要我们填入的,这两个值在我们的小程序后台就可以拿到。

    下面就是Java后台代码的编写了

    我这里用的是springboot,这里要请求小程序官方接口,正常项目开发我都是用的自己写的接口请求工具类的,这里为了大家方便就用了springboot自带的RestTemplate来做网络请求。文章最后我会把我自己写的这个请求工具类贴出来有需要的朋友可以copy,具体代码如下。

    代码如下(示例):
    在这里插入图片描述
    这里代码很简单,就一个简单的get请求。不过要注意一点,这里获取的access_token是有两个小时的过期时间的
    在这里插入图片描述
    所以在获取到access_token的时候,把access_token存到数据库,或者存到本地缓存,并且还要记录当前时间,后面再用的时候先判断这个access_token有没有超过2个小时,如果超过2个小时的话,就要重新获取了。但这里我就不做了,只是你们在做开发的时候尽量还是规范点。

    四、发送消息

    官方文档

    老规矩还是先看官方文档
    在这里插入图片描述
    上面的参数都是我们发送消息时需要的。

    这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下

    在这里插入图片描述
    因为用户不点击允许,你是没有办法给用户推送消息的。每一次授权只允许发送一条消息,所以如果你想尽量多的发送消息,就得尽量多的引导用户授权。

    我们这里用到了wx.requestSubscribeMessage这个方法,来获取用户的授权。

    这里我把前端的代码也贴出来大家可以参考参考

    <button bindtap="getAuthority" type='primary'>获取订阅消息授权</button>
    
    //获取授权的点击事件
      getAuthority() {
        wx.requestSubscribeMessage({
          tmplIds: ['CFeSWarQL*************8V8bFLkBzTU'], //这里填入我们生成的模板id
          success(res) {
            console.log('授权成功', res)
          },
          fail(res) {
            console.log('授权失败', res)
          }
        })
      }
    

    推送的Java代码如下
    代码如下(示例):
    在这里插入图片描述

    可以看到,我们这里需要定义用户的openid,模板id,跳转路径,模板消息内容等。
    这些都定义好以后,我们就可以提供一个服务给到Java的其他代码调用,或者提供一个接口供外界传入openid,然后给对应的用户推送消息了。

    然后小程序就收到了
    在这里插入图片描述

    五、完整的代码

    1. 获取access_token

    下面的appId,appSecret替换成你们自己的,具体的可以去小程序后台查看

    public static final String WX_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type={grant_type}&appid={appid}&secret={secret}";
    
    public String getAccessToken() {
    
            Map<String,Object> params = new HashMap<>();
            params.put("grant_type","client_credential");
            params.put("appid",appId);
            params.put("secret",appSecret);
    
            //发送请求
            String result = RestTemplateUtil.requestForGetString(WX_ACCESS_TOKEN , params);
    
            JSONObject jsonObject = JSONObject.parseObject(result);
            String accessToken = jsonObject.getString("access_token");
            if (StringUtils.isEmpty(accessToken)) {
                log.error("获取access token失败: {}" , jsonObject.getString("errmsg"));
                throw new ApiException("获取access token失败");
            } else {
                log.info("wx access_token : {}",accessToken);
                return accessToken;
            }
    
        }
    
    1. 发送消息
    public static final String SEND_INFO_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";
    
        public String push(QueueInfoTempDto info) {
            RestTemplate restTemplate = new RestTemplate();
            String url =  SEND_INFO_URL  + getAccessToken();
            //拼接推送的模版
            WxMssVO wxMssVo = new WxMssVO();
            wxMssVo.setTouser(info.getOpenId());//用户的openId
            wxMssVo.setTemplate_id(templateId);//订阅消息模板id
            wxMssVo.setPage("pages/appointment/line_up?"+"shopId="+info.getShopId());
    
            Map<String, TemplateData> m = new HashMap<>(5);
            m.put("thing1", new TemplateData(info.getShopName()));
            m.put("thing2", new TemplateData(info.getCode()));
            m.put("thing3", new TemplateData("前面还有"+info.getPreNumber()+"桌,请耐心等待"));
            m.put("thing9", new TemplateData(info.getNumber()+"人"));
            m.put("time8", new TemplateData(DateUtils.sdfTime.format(info.getCreatedTime())));
            wxMssVo.setData(m);
            ResponseEntity<String> responseEntity =
                    restTemplate.postForEntity(url, wxMssVo, String.class);
            return responseEntity.getBody();
        }
    
    1. 对应的两个数据类如下
      WxMssVo用来封装请求官方接口的参数
    @Data
    public class WxMssVO {
    
        private String touser;//用户openid
        private String template_id;//订阅消息模版id
        private String page = "pages/index/index";//默认跳到小程序首页
        private Map<String, TemplateData> data;//推送文字
    }
    

    TemplateData 用来定义消息的内容

    @AllArgsConstructor
    @Data
    public class TemplateData {
        private String value;
    }
    

    到这里我们就可以完整的实现Java发送小程序消息的功能了。完整代码也已经贴给大家了。

    总结

    以上就是今天要分享给大家的内容,本文简单的讲了怎么发送订阅消息,其实大部分大家参考官方文档都是可以写出来的
    展开全文
  • java二次开发接微信公众号接口,实现根据用户授权,获取用户code,再获取openid,然后向其推送模版消息
  • 实现效果:下面要显示五个字段 接下来,参照官方文档,一步步实现:一、官方给出请求示例、返回示例 二、根据上面编写实体类(1)请求参数@Datapublic class SendTemplateReq {/*** 接收者(用户)的 openid*/private ...

    实现效果:

    下面要显示五个字段

    d42379c608e2e0f4f8d8c061aa7b190e.png

    接下来,参照官方文档,一步步实现:

    一、官方给出请求示例、返回示例

    286ccac1bf62b10b0b1a5deed4c3b6c0.png

    7e2c41d2b7e836cd885dbb1bfc9da369.png

    二、根据上面编写实体类

    (1)请求参数

    @Data

    public class SendTemplateReq {

    /**

    * 接收者(用户)的 openid

    */

    private String touser;

    /**

    * 所需下发的模板消息的id

    */

    private String template_id;

    /**

    * 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。

    * 该字段不填则模板无跳转。

    */

    private String page;

    /**

    * 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id

    */

    private String form_id;

    /**

    * 模板内容

    * 不填则下发空模板。具体格式请参考示例。

    */

    private DoctorReplyMsgData data;

    /**

    * 模板需要放大的关键词

    * 不填则默认无放大

    */

    private String emphasis_keyword;

    }

    (2)请求参数中的data,如实现效果所示,这是在小程序显示的五个字段.

    (属性名就要叫keyword1、2、3,否则推送的消息空白)

    @Data

    public class DoctorReplyMsgData {

    private KeyNote keyword1;

    private KeyNote keyword2;

    private KeyNote keyword3;

    private KeyNote keyword4;

    private KeyNote keyword5;

    }

    (3)上面五个字段对应的值(data是对象,所以需要这样)

    @Data

    public class KeyNote {

    private String value;

    }

    (4)请求后,微信返回的消息体

    @Data

    public classSendTemplateResponse {

    /**

    * 错误码

    * 0 ok

    * 40037 template_id不正确

    * 41028 form_id不正确,或者过期

    * 41029 form_id已被使用

    * 41030 page不正确

    * 45009 接口调用超过限额(目前默认每个帐号日调用限额为100万)

    */

    private interrcode;

    /**

    * 错误信息

    */

    privateString errmsg;

    }

    三、实现代码

    public voidsendTemplate() {

    SendTemplateReq sendTemplateReq= newSendTemplateReq();//1、用户的 openid

    sendTemplateReq.setTouser("openid");//2、模板消息的id

    sendTemplateReq.setTemplate_id("小程序启用模板的模板id");//3、formid

    sendTemplateReq.setForm_id("小程序传给后台的formid,七天有效");//4、点击模板跳转页面

    sendTemplateReq.setPage("");//5、Data,按次序,只能叫keyword1、2、3

    DoctorReplyMsgData replyData = newDoctorReplyMsgData();

    KeyNote keyword1= newKeyNote();

    keyword1.setValue("小程序显示的消息字段1");

    replyData.setKeyword1(keyword1);

    KeyNote keyword2= newKeyNote();

    keyword2.setValue("小程序显示的消息字段2");

    replyData.setKeyword2(keyword2);

    sendTemplateReq.setData(replyData);//如上...总共五个字段//6、获取token

    String token = "token,俩小时有效";//7、模板url拼接上token,最上面的请求的url那样

    String url = "TemplateUrl" + "token";//8、请求体转为json

    String reqStr=JsonUtil.ModelToGson(sendTemplateReq);//9、发送httpclient请求

    String resultStr =httpRequestUtil.doPost(sb.toString(), reqStr);//10、接收返回的消息体:是否成功,成功返回0

    SendTemplateResponse sendTemplateResponse = (SendTemplateResponse)JsonUtil.GsonToModel(resultStr,SendTemplateResponse.class);if(sendTemplateResponse.getErrcode() == 0){//"推送成功!"

    }

    }

    1、openid:通过jsCode获取的

    2、formid:小程序端传过来的

    3、Template_id:小程序设置模板时带的

    4、data:对象类型

    5、token:调用接口获取token

    展开全文
  • 最近需要开发微信和小程序推送功能,需要用java后台实现推送,自己本身java小程序都做,所以就自己动手实现小程序的模版推送功能推送实现思路 1 小程序获取用户openid,收集formid传给java...

    本文是比较老得技术来实现,用最新技术实现小程序推送,请看
    5行java代码实现微信小程序模版消息推送 (含springboot后台和小程序源码)
    也可以看最新的视频讲解:https://edu.csdn.net/course/detail/23750

    最近需要开发微信和小程序的推送功能,需要用java后台实现推送,自己本身java和小程序都做,所以就自己动手实现下小程序的模版推送功能推送。

    实现思路

    • 1 小程序获取用户openid,收集formid传给java后台
    • 2 java推送消息给指定小程序用户

    老规矩,还是先看效果图

    在这里插入图片描述
    我的这个是跑腿抢单推送,当用户新下单时,会给跑腿员推送消息。

    下面开始讲解实现步骤

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

    在这里插入图片描述
    这里的模版id很重要,接下来我们推送的都是这个模版。

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

    • 1 看微信官方推送消息所需要的字段
      在这里插入图片描述
      在这里插入图片描述
    • 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<String, TemplateData> data;//推送文字
    }
    
    /*
    * 设置推送的文字和颜色
    * qcl 微信:2501902696
    * */
    @Data
    public class TemplateData {
        //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注
        private String value;//,,依次排下去
    //    private String color;//字段颜色(微信官方已废弃,设置没有效果)
    }
    

    到这里请求推送的数据就组装好了,解下来我们去实现推送功能。
    奥不对,还有一个重要的字段需要获取到: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<String, TemplateData> 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<String> 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<String, TemplateData> 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<String> 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();
        }
    
    }
    

    在需要做推送的地方调用WxPushServiceQcl类中的pushOneUser方法,并传入openid, formid参数即可。
    在这里插入图片描述
    这是我推送成功后打印的log

    下面来讲小程序端开发需要做些什么

    可以看出,我们的formid有效期是7天,并且一个form_id只能使用一次,所以我们小程序端所需要做的就是尽可能的多拿些formid,然后传个后台,让后台存到数据库中,这样7天有效期内,想怎么用就怎么用了。

    在这里插入图片描述

    所以接下来要讲的就是小程序开发怎么尽可能多的拿到formid了。

    在这里插入图片描述
    看下官方提供的,只有在表单提交时把report-submit设为true时才能拿到formid,比如这样

     <form report-submit='true' >
       <button  form-type='submit'>获取formid</button>
      </form>
    

    所以我们就要在这里下功夫了,既然只能在form组件获取,我们能不能把我们小程序里用到最多的地方用form来伪装呢。
    在这里插入图片描述
    我的小程序是跑腿小程序,消息也主要推送给跑腿员的,而跑腿员点击最多的也就是这两个条目,所以我们就用from组件来伪装这两个条目,让用户在点击的同时就可以收集到用的formid。

     <view class='button_item'>
      <form class="form_item" bindsubmit='gorRunnerLobby' report-submit='true' data-type="1">
       <button class="button" form-type='submit'>
        <text>抢单大厅</text>
        <text class='runner_desc'>(兼职也可月入万元)</text>
       </button>
      </form>
      <view class='right_arrow' />
     </view>
    

    这样就可以在用户点击条目时,收集到用户formid了
    在这里插入图片描述
    由于上面的botton有默认样式,所以我们就通过修改css来去除botton默认样式。

    .button_item {
     width: 100%;
     display: flex;
     flex-direction: row;
     align-items: center;
     padding: 2px 20px;
     background: white;
     border-bottom: 1px solid gainsboro;
    }
    /* 主要通过这里去除botton默认样式 */
    .button {
     width: 100%;
     background: white;
     border: none;
     text-align: left;
     padding: 6px 0px;
     margin: 0px;
     line-height: 1.5;
    }
    
    /* 主要通过这里去除botton边框 */
    .button::after {
     border: none;
    }
    
    /* 用button伪装获取formid */
    
    .form_item {
     width: 100%;
    }
    

    到这里我们小程序端也圆满完成自己的任务了。

    补充知识点

    这样我们java后台和小程序开发就可以开开心心的完成微信小程序的消息推送功能了。

    如果有java或小程序相关的问题可以加我微信交流学习2501902696(备注小程序或java)

    视频讲解:https://edu.csdn.net/course/detail/23750

    展开全文
  • 前面写过一篇云开发实现小程序订阅消息(模板消息推送的文章,《借助云开发实现小程序订阅消息和模板消息推送功能》是有好多同学用的是Java写后台,所以今天就再来写一篇Java后台实现小程序订阅消息推送的文章。...
  • 微信小程序消息推送java

    千次阅读 2022-03-09 11:22:10
    1、文档需要的参数 ... * 发送订阅消息 * */ @Async public Object pushOneUser(Repair record ,String WechatOpenid){ return push(record ,WechatOpenid); } public Object push( Repair re.
  • 订阅消息的功能较模板消息有所提升,”7天”的限制取消,同时有”一次性”和”永久”订阅.(功能上是这样说的,但是实际开发时发现”永久”订阅还是对小程序的服务类目有要求的,客户的小程序只支持”一次性”订阅) ...
  • 微信小程序消息推送 java后端

    千次阅读 2021-04-27 10:29:46
    微信小程序消息推送 java后端 参考:https://blog.csdn.net/CodeWu/article/details/91491310 https://blog.csdn.net/qiushi_1990/article/details/8262539 注意上述文章中推送消息请求路径已过时改为订阅消息 详情...
  • 本文实例讲述了微信小程序实现发送模板消息功能。分享给大家供大家参考,具体如下: 一、获取access_token access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_...
  • 阅读文档可知微信小程序所使用的sdk是weixin-java-miniapp 依赖如下 <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <...
  • 接口调用请求说明 ...POST数据示例如下: 参数说明 注: (1)openId:微信用户在当前公众号的唯一标识,消息接收方 (2)template_id: ...若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种
  • 本节知识点1,java开发推送后台2,springboot实现推送功能3,小程序获取用户openid 4,小程序从id获取进行先来看后台推功能的实现只有下面一个简单的PushController类,就可以实现小程序消息推送再来看下...
  • //必须与在小程序后台->开发->开发配置->消息推送中填写的token一致, String token = "mytoken996" ; String [ ] arr = new String [ ] { token , timestamp , nonce } ; String result = ...
  • java代码实现用户操作微信小程序端,后台发送模板消息
  • 公司的小程序最近开始接入小程序的客服功能,主要实现能够自动回复以及人工回复。 查阅微信开放文档后,也基本上完成了需求,但是其中遇到了很多问题,现在...登录小程序后台后,在「开发」-「开发设置」-「消息推送
  • 小程序在开发消息推送时需要先申请模板,第一次申请的时候需要配置一些参数 1、配置服务器URL、Token、秘钥、加密方式、数据格式 Token是做校验用的,秘钥随机生成就行、加密方式就不说了、数据格式按照各自喜好吧...
  • 以订单推送为例,主要为大家详细介绍了java实现微信公众号发送模版消息,具有一定的参考价值,感兴趣的伙伴们可以参考一下
  • 其实我之前有写过一篇:《springboot实现微信消息推送,java实现小程序推送,含小程序端实现代码》 但是有同学反应这篇文章里的代码太繁琐,接入也比较麻烦。今天就来给大家写个精简版的,基本上只需要几行代码,就...
  • Java后台+微信小程序实现推送 “服务通知”

    万次阅读 多人点赞 2019-05-10 16:17:34
    java+微信小程序发送服务通知
  • 微信小程序推送模板消息功能,基于springboot ,包含前端和后端全流程
  • 微信小程序为开发者提供了可以高效触达用户的模板消息能力,在用户本人与小程序页面有交互行为后触发,通过微信聊天列表中的服务通知可快捷进入查看消息,点击查看详情还能跳转到下发消息小程序的指定页面。...
  • 小程序消息推送及客服(JAVA后台)

    千次阅读 热门讨论 2019-06-12 10:43:03
    小程序客服及消息推送开发(后台JAVA) 最近公司在做小程序,涉及到客服及消息推送,简单的记录下开发过程及心得 客服 小程序自带的有客服功能只需要开启就行了. 选择开启后即可使用. 消息推送 首先在开发 ...
  • 微信小程序消息推送

    千次阅读 2021-08-05 08:47:11
    微信小程序是支持消息推送的,但是推送有个限制,只有form表单开启report-submit,用户点击提交这样表单的时候才可以获得一个formid,推送时需要使用这个formid进行推送。所以小程序消息推送需要解决formid的存储,...
  • 微信小程序 消息推送功能实现详解

    万次阅读 多人点赞 2018-09-05 19:30:57
    小程序开发中,如果想实现:用户发给小程序消息以及开发者需要的事件推送,在小程序项目中,我们想要实现这样一个功能, 比如我们小程序中的客服功能,我不想要使用小程序后台的在线客服功能,但我又想实现客服...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,735
精华内容 25,894
关键字:

java实现小程序消息推送