ホームページ  >  記事  >  WeChat アプレット  >  ミニプログラムプッシュテンプレートメッセージの実装方法

ミニプログラムプッシュテンプレートメッセージの実装方法

WJ
WJオリジナル
2020-06-10 14:24:113111ブラウズ

ミニプログラムプッシュテンプレートメッセージの実装方法

テンプレート メッセージをプッシュするミニ プログラムを実装するにはどうすればよいですか?

以下は開発手順です。

ユーザーの openid を取得します

##form_id または prepay_id を取得します

access_token の取得

テンプレート メッセージの送信

デモ ダウンロード アドレス

重要なヒント

このメソッドは、PHP の組み込みカール モジュールを使用してリクエストを送信します。開発中、このメソッドは WeChat サーバーにアクセスしてデータを取得するために使用されます。ここで、url はインターフェイス アドレス、params は伝送パラメータ、ispost はrequest メソッド、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;
    }

ユーザーの openid

WeChat アプレット コードを取得します。呼び出しを容易にするために、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
          }
        })
      }
    })

サーバー側の 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
    }

form_id または prepay_id を取得します

この記事では簡単な紹介のみを行い、次の記事に残します。 WeChat 支払いを説明するブログ

1.form_id はミニ プログラム内で送信されます。フォーム中に生成される ID。ユーザーがミニ プログラムでフォームを送信し、フォームがテンプレート メッセージを送信するように宣言されている場合、開発者はユーザーにサービスを提供する必要がある場合、開発者は 7 日以内に限定されたメッセージをユーザーにプッシュできるようにすることができます テンプレート メッセージの数 (フォームの 1 つの送信は 1 回発行でき、複数の送信によって発行されるエントリの数は独立しています)相互に影響しません)

2.prepay_id は、ミニ プログラムが WeChat 支払いを開始するときに生成される前払い ID であり、ユーザーがミニ プログラムで支払い動作を完了すると、開発者は制限付きのプッシュを許可されます。 7 日以内にユーザーに送信するテンプレート メッセージの数 (1 回の支払いに対して 3 つのメッセージを送信できます。複数の支払いに対するメッセージの数は独立しており、相互に排他的です。影響)

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

テンプレート メッセージの送信

テンプレート メッセージの送信メソッド

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

Call example

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

summary

1. openid の取得は非常に簡単で、appid でありシークレットです。間違えないでください

2. Access_tokenパラメータは上記と同じです パラメータの記入は間違えないよう公式ドキュメントに従って記入してください

3. テンプレートメッセージのデータ内でアプレットへジャンプします ルートを記入してくださいミニ プログラムによって記述されたルートに厳密に従います。pages/index/index にジャンプするときは、.../index/inex

とは書かないでください。関連する推奨事項:

小プログラムチュートリアル

以上がミニプログラムプッシュテンプレートメッセージの実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。