Maison  >  Article  >  Applet WeChat  >  Comment implémenter un message de modèle push de mini-programme

Comment implémenter un message de modèle push de mini-programme

WJ
WJoriginal
2020-06-10 14:24:113109parcourir

Comment implémenter un message de modèle push de mini-programme

Comment implémenter le mini programme pour pousser des messages modèles ?

Voici les étapes de développement

Obtenir l'openid de l'utilisateur

Obtenir le form_id ou prepay_id

Obtenir un access_token

Envoyer un modèle de message

Adresse de téléchargement DEMO

Conseils importants

Cette méthode utilise le module curl intégré de PHP pour envoyer des requêtes. Cette méthode est utilisée pour accéder au serveur WeChat afin d'obtenir des données pendant le développement, où url est l'adresse de l'interface, params les paramètres de transport, ispost le. méthode de requête, et https est la vérification du certificat

 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;
    }

Obtenez l'openid de l'utilisateur

Code de l'applet WeChat, il est recommandé de l'enregistrer globalement dans app.js pour un appel facile

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
          }
        })
      }
    })

Code PHP côté serveur, j'utilise le framework laravel. Peut être reconstruit par vous-même

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
    }

Obtenir form_id ou prepay_id

Cet article ne donnera qu'une brève introduction, le laissant au prochain blog. pour expliquer le paiement WeChat

1. form_id est soumis dans le mini-programme L'identifiant généré lors du formulaire lorsque l'utilisateur soumet le formulaire dans le mini-programme et que le formulaire est déclaré pour envoyer des messages modèles et que le développeur en a besoin. pour fournir des services à l'utilisateur, le développeur peut être autorisé à envoyer des messages limités à l'utilisateur dans un délai de 7 jours. Nombre de messages modèles (une soumission de formulaire peut être émise une fois, et le nombre de messages émis par plusieurs soumissions est indépendant et non. s'influencent mutuellement)

2. prepay_id est le prépaiement généré lorsque le mini programme lance l'identifiant de paiement WeChat, lorsque l'utilisateur termine le comportement de paiement dans le mini programme, le développeur est autorisé à pousser un nombre limité de modèles. messages à l'utilisateur dans les 7 jours (3 messages peuvent être envoyés pour un paiement, et le nombre de messages pour plusieurs paiements est indépendant et mutuellement exclusif. Impact)

Obtenir access_token

Cette méthode fournit paramètres pour obtenir access_token et ensuite envoyer des messages modèles. J'utilise le framework laravel, qui peut être reconstruit par vous-même

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;
    }

Envoyer des messages modèles

Méthode d'envoi de message modèle

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)); //访问接口,返回参数
    }

Appeler. exemple

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); //返回结果
    }

Résumé

1 Obtenir openid est assez simple, c'est votre application et votre secret. Ne vous trompez pas

2. comme ci-dessus. Ne vous trompez pas en remplissant les paramètres. Remplissez-les strictement selon les documents officiels

3 Dans les données du modèle de message, passez à l'applet Remplissez l'itinéraire strictement selon. à l'itinéraire écrit par votre mini programme. Lorsque vous accédez aux pages/index/index, n'écrivez pas.../index/inex

Recommandations associées : Tutoriel du mini programme<.>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn