Rumah applet WeChat Pembangunan program mini 如何实现小程序推送模板消息

如何实现小程序推送模板消息

Jun 10, 2020 pm 02:24 PM
Program mini

如何实现小程序推送模板消息

如何实现小程序推送模板消息?

以下为开发步骤

获取用户的openid

获取form_id或者prepay_id

获取access_token

发送模板消息

DEMO下载地址

重要提示

此方法为利用PHP内置curl模块发送请求,开发中都是以此方法访问微信服务器获取数据,其中url为接口地址,params为携带参数,ispost为请求方式,https为证书校验

 public static function curl($url, $params = false, $ispost = 0, $https = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json; charset=utf-8'
            )
        );
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
        }
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        $response = curl_exec($ch);
        if ($response === FALSE) {
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }
Salin selepas log masuk

获取用户的openid

微信小程序代码,建议放在app.js全局保存,方便调用

wx.login({
      success: function (res) {
        wx.request({
          url: "www.xxx.com",  //你的服务器接口地址
          data: {
            code:res.code  //通过wx.login获取code发送至服务器
          },
          header: {
            'content-type': 'application/json'
          },
          success: function (res) {
            that.globalData.OpenId=res.data.openid //存储openid
          }
        })
      }
    })
Salin selepas log masuk

服务器端PHP代码,我用的是laravel框架,可自行重构

public function getUserInfo(Request $request)
    {
        $code = $request->get("code"); 
        $appid="";   //小程序appid
        $secret=""; //小程序secret
        $Url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret=' . $secre . '&js_code=' . $code . '&grant_type=authorization_code'; //微信官方给出的接口,利用小程序内获取的code置换openid
        $UserInfo=HttpUtils::curl($Url, $params = false, $ispost = 0, $https = 1); //上文给出的curl方法
        echo $UserInfo; //输出结果,其中包含openid
    }
Salin selepas log masuk

获取form_id或者prepay_id

本篇只做简要介绍,留到下篇博客微信支付讲解

1.form_id为小程序内提交表单时所产生的id,当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

2.prepay_id为小程序拉起微信支付时所产生的预支付id,当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)

获取access_token

此方法为获取access_token为后续发送模板消息提供参数,我用的是laravel框架,可自行重构

public static function access_token(){
        $appid="";   //小程序appid
        $secret=""; //小程序secret
        $Url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=". $appid."&secret=".$secret; //微信给出的获取access_token的接口
        $access_token=Cache::get("access_token");  //查询缓存中是否已存在access_token
        if($access_token==""){
            $access_token=json_decode(self::curl($Url))->{"access_token"};  //访问接口获取access_token
            Cache::put("access_token",$access_token,120); //设置缓存,过期时间2小时
        }
        return $access_token;
    }
Salin selepas log masuk

发送模板消息

发送模板消息方法

public static function SendMsg($data,$access_token){
        $MsgUrl="https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=".$access_token; //微信官方接口,需要拼接access_token
        return json_decode(self::curl($MsgUrl,$params=json_encode($data),$ispost=1,$https=1)); //访问接口,返回参数
    }
Salin selepas log masuk

调用示例

public function test(Request $request){
        $form_id=$request->get("form_id");
        $openid=$request->get("openid");
        $access_token=WxUtils::access_token();
        $data=[
            "touser"=>$openid, //接收用户的openid
            "template_id"=>"k03-Sk5c4eNlQKrS4VqI4cKjEil7JyvcouxtKBFkVcs",  //模板id
            "page"=>"pages/index/index",//点击模板消息跳转至小程序的页面
            "form_id"=>$form_id, //可为表单提交时form_id,也可是支付产生的prepay_id
            "data"=>[
                "keyword1"=>[
                    "value"=> "五公司", //自定义参数
                    "color"=> '#173177'//自定义文字颜色
                ],
                "keyword2"=>[
                    "value"=> "保洁服务",//自定义参数
                    "color"=> '#173177'//自定义文字颜色
                ],
                "keyword3"=>[
                    "value"=> "2018年10月",//自定义参数
                    "color"=> '#173177'//自定义文字颜色
                ],
                "keyword4"=>[
                    "value"=> "已发布",//自定义参数
                    "color"=> '#173177'//自定义文字颜色
                ],
                "keyword5"=>[
                    "value"=> "请至小程序订单列表进行查看",//自定义参数
                    "color"=> '#173177'//自定义文字颜色
                ],
            ]
        ];
        $res=WxUtils::SendMsg($data,$access_token); //返回结果
    }
Salin selepas log masuk

总结

1.openid获取挺简单的,就是你的appid和secret别搞错就行

2.access_token同上,也是别搞错填写的参数,严格按照官方给出的文档填

3.模板消息的data中,跳转小程序的路由严格按照你小程序所写路由填写,跳转pages/index/index别写成…/index/inex

相关推荐:小程序教程

Atas ialah kandungan terperinci 如何实现小程序推送模板消息. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bangunkan applet WeChat menggunakan Python Bangunkan applet WeChat menggunakan Python Jun 17, 2023 pm 06:34 PM

Bangunkan applet WeChat menggunakan Python

Bolehkah program kecil menggunakan tindak balas? Bolehkah program kecil menggunakan tindak balas? Dec 29, 2022 am 11:06 AM

Bolehkah program kecil menggunakan tindak balas?

Laksanakan kesan flip kad dalam program mini WeChat Laksanakan kesan flip kad dalam program mini WeChat Nov 21, 2023 am 10:55 AM

Laksanakan kesan flip kad dalam program mini WeChat

Cara uniapp mencapai penukaran pantas antara program mini dan H5 Cara uniapp mencapai penukaran pantas antara program mini dan H5 Oct 20, 2023 pm 02:12 PM

Cara uniapp mencapai penukaran pantas antara program mini dan H5

Bagaimana untuk mengendalikan pendaftaran program mini Bagaimana untuk mengendalikan pendaftaran program mini Sep 13, 2023 pm 04:36 PM

Bagaimana untuk mengendalikan pendaftaran program mini

Alipay melancarkan program mini 'Chinese Character Picking-Rare Characters' untuk mengumpul dan menambah pustaka aksara yang jarang ditemui Alipay melancarkan program mini 'Chinese Character Picking-Rare Characters' untuk mengumpul dan menambah pustaka aksara yang jarang ditemui Oct 31, 2023 pm 09:25 PM

Alipay melancarkan program mini 'Chinese Character Picking-Rare Characters' untuk mengumpul dan menambah pustaka aksara yang jarang ditemui

Pengenalan kepada pembangunan applet WeChat dalam bahasa Java Pengenalan kepada pembangunan applet WeChat dalam bahasa Java Jun 09, 2023 pm 10:40 PM

Pengenalan kepada pembangunan applet WeChat dalam bahasa Java

Tutorial menulis program sembang mudah dalam Python Tutorial menulis program sembang mudah dalam Python May 08, 2023 pm 06:37 PM

Tutorial menulis program sembang mudah dalam Python

See all articles