zoukankan      html  css  js  c++  java
  • 微信小程序发送模板消息

    微信小程序发送模板消息

    标签(空格分隔): php


    看小程序文档

    【模板消息文档总览】:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html
    
    【发送模板消息】:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/template-message/sendTemplateMessage.html
    
    【先看一下模板消息的效果】
    

    分析模板消息

    发送模板消息【url和参数】
    
    【Url】 https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
    【Method】POST
    【Params】:
    
    
        {
          "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"
        }
        
    touser :要发送用户的openid
    template_id : 模板id编号【待会儿创建】
    page :点击模板消息跳转的页面
    form_id : 就是formid 需要去收集用户的formid
    data:就是发送的内容
    keyword1:一一对应模板的内容
    keywork2:一一对应模板的内容
    emphasis_keyword:可以忽略【模板需要放大的关键词,不填则默认无放大】
    

    第一步:创建模板-记录模板id[template_id]

    登录公众平台:-> 模板消息 -> 添加
    

    记录模板id到数据库【根据项目需求来决定,多个小程序的话通过程序生成统一管理】
    

    第二步:收集formId[form_id]

    前端form表单:
    

    注意:
    1 要存储formid和对应的openid【每个用户每天最多10个,用一个删一个】
    
    2 因为我们是在开发者工具中测试,所以得到的formId值为the formId is a mock     one。所以测试真实场景务必在真机中测试
    

    第三步:代码

    /**
     * @param $params [参数]
     * @param $appid [小程序appid]
     * @param $secret [小程序secret]
     * @param $type [模板消息的类型] 如:审核,通知, 签到 。。。。
     */
    public function templateMessage($params, $appid, $secret, $type)
    {
        # 获取模板信息
        $tpl = $this->template(['appid'=>$appid, 'type'=>$type]);
    
        # 模板关键字
        $data = [];
        foreach ($params['data'] as $k => $v) {
            $data['keyword'.($k+1)] = ['value'=>$v];
        }
    
        $postData = [
            'touser'        =>  $params['openid'],
            'template_id'   =>  $tpl['tpl_id'],
            'page'          =>  $params['page'],
            'form_id'       =>  $params['form_id'],
            'data'          =>  $data
        ];
    
        # user_token 必须全局获取|存储
    
        $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.self::getUserToken($appid, $secret);
    
        $ret = curl($url, $postData);
    
        /* 成功返回
         {
             "errcode": 0,
             "errmsg": "ok",
             "template_id": "wDYzYZVxobJivW9oMpSCpuvACOfJXQIoKUm0PY397Tc"
         }
         */
        return $ret;
    }
    
    
    # 发送模板消息
    public function hello()
    {
        $appid = 'xxxxxxxxxxx';
        $secret = 'xxxxxxxxxxx';
    
        $data = [
            'openid' => 'openid',
            'page' => 'pages/index/index',
            'form_id' => '拿openid去查', 【收集formid的表】
            'data' => [
                keyword1,
                keyword2,
                keywrod3,
                ........
            ]
        ];
    
        $ret = $this->templateMessage($data, $appid, $secret, '1');
    
        删除formid这条数据;
    }
  • 相关阅读:
    MS MDS系列之MDS层次结构(Hierarchy)
    Tabular系列之问题1:如何利用其他人的账号进行权限测试?
    MS MDS系列之初识MS Master Data Service(微软主数据服务)
    SQL Server系列之SQL Server 2016 中文企业版详细安装步骤(超多图)
    Pivot Table系列之切片器 (Slicer)
    Pivot Table系列之展开/折叠用法 (Expand/Collapse)
    MyBatis逆向工程——Java代码自动生成
    汇智网练习:修改示例代码,使EzApp组件的标题颜色每秒钟随机变化一次
    关于事件模型,js事件绑定和解除的学习
    使用block进行界面之间的反向传值
  • 原文地址:https://www.cnblogs.com/yanweifeng/p/9810536.html
Copyright © 2011-2022 走看看