发送微信小程序消息

                                                                                  发送微信小程序消息

一、需要得到用户的数据:

   1. 用户微信的唯一标识: oppenId

   2. 判断用户使用的是哪种类型的手机,苹果和安卓使用的formId是不一样的,不能混用

   3.  记录用户在小程序点击按钮的formId,formId七天后会过期,如使用过期的formId发送消息,会提示:formId不可用

二、 获取Token

  调用微信小程序开发文档中的接口,获取access_token,有效期为2个小时,使用的时候需要注意调用的次数每日是有限制的

 调用access_token次数:

       体验版: 每日限制次数为200次

       正式环境:每日限制次数为2000次

三、发送消息

    注意:小程序需要配置消息模板,体验版与正式环境的模板id一致  

   接口地址:https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=调用获取access_token接口

 

参数详解:

    access_token :接口调用凭证,需要调用接口获取

    touser : 接收者(用户)的 openid  --- 需要用户在登录小程序的时候授权获得

    template_id : 发送的消息模板id --- 不区分体验版还是正式环境

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

    form_id :表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id  --- 需要收集多个formId

    data :  模板内容   ---  里面的字段是自己配置的  格式: json串

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

 

请求参数示例:

{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "form_id": "FORMID",
  "data": {
    "keyword1": {
      "value": "339208499"
    },
    "keyword2": {
      "value": "2015年01月05日 12:30"
    },
    "keyword3": {
      "value": "腾讯微信总部"
    },
    "keyword4": {
      "value": "广州市海珠区新港中路397号"
    }
  },
  "emphasis_keyword": "keyword1.DATA"
}

代码:

     /**
     * 获取access_token
     */
    private String getAccess_Token() {
        String APPID = "小程序唯一凭证,即APPID";
        String SECRET = "小程序唯一凭证密钥,即AppSecret";

        String access_token = "";
        String post = HttpUtil.doGet("https://api.weixin.qq.com/cgi-bin/token?appid=" + APPID + "&secret=" + SECRET + "&grant_type=client_credential");
        JSONObject jsonObject = (JSONObject) JSON.parse(post);
        access_token = (String) jsonObject.get("access_token");
        System.out.println("access_token==" + access_token);

        return access_token;
    }


    /**
     * 推送微信小程序消息
     */
    private String sendWXTemplateMsg(JSONObject data, String formId, String openId, String templateId, String page, String token) {
        JSONObject param = new JSONObject();
        param.put("touser", openId);
        param.put("template_id", templateId);
        param.put("page", page);
        param.put("form_id", formId);
        // 模板信息
        if (data != null) {
            param.put("data", data);
        }

        String doPost = HttpUtil.doPost("https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=" + token, param.toJSONString());
//        String post = HttpKit.post(, json);
        System.out.println("doPost==" + doPost);
        return doPost;
    }

返回示例:

{
  "errcode": 0,
  "errmsg": "ok"
}

 

返回的错误码:

0 :  推送成功

40037 :template_id不正确

41028 :form_id不正确,或者过期  ---  遇到的次数最多

41029 :form_id已被使用   --- 用过后要即时删除,避免发生此错误

41030 :page不正确   ---  点击消息跳转的页面地址

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

 

官方地址:

获取token: https://developers.weixin.qq.com/miniprogram/dev/api-backend/getAccessToken.html

发送消息:https://developers.weixin.qq.com/miniprogram/dev/api-backend/sendTemplateMessage.html

 

 

 

你可能感兴趣的:(微信)