zoukankan      html  css  js  c++  java
  • 微信模版消息封装接口

    微信模版消息封装接口

    本文主要就微信模板消息写了个通用接口,参数参考微信文档。

    1. 使用模版消息,首先需在微信公众号设好微信模版,如(微信测试号模版消息设置):
      enter description here
      模版消息:
      您的订单已签收! 上门取货时间:{{FIRST.DATA}} 货物名称:{{KEYWORD1.DATA}} 物流公司:{{KEYWORD2.DATA}}
      “{{keywords.DATA}}”时我们接下来要传的数据参数,可以看到每个模版有自己的模版id;

    2. 发送模版消息接口(微信)
      enter description here
      enter description here
      调用接口:https://api.weixin.qq.com/cgi-bin/template/send?access_token=ACCESS_TOKEN
      注意下post参数就是个json格式数据,需要对应你的模板消息数据,上面的列子对应的post参数为:

    /*
    *data 是 模板数据
    *color 否 模板内容字体颜色,不填默认为黑色
    */
      {
               "touser":"OPENID",  //指定用户openid
               "template_id":"UFHH7QQjA2MO7_wIfMNhobF5WPaPl_O8LuZS0LWNY7U",
               "url":"",  
               "miniprogram":"",          
               "data":{
                       "FIRST": {
                           "value":"2019年9月22日 15:30",
                           "color":"#173177"
                       },
                       "KEYWORD1":{
                           "value":"安踏运动鞋",
                           "color":"#173177"
                       },
                       "KEYWORD2": {
                           "value":"韵达物流",
                           "color":"#173177"
                       }                
               }
           }
    
    1. 封装接口(php)
      为了避免post数据的不可控性(不同模版的参数属性不一致),依据模版的数据结构,做了一套通用的接口。在这之前需要获取微信access_token的方法,提供个参考类文件:
      JSSDK.php

        //获取access_token信息
         public function jssdk_param(){
            $jssdk = new JSSDK();
            $signPackage = $jssdk->getSignPackage();
    
            $data = array();
            $token = md5(microtime(true));
            $_SESSION['signtoken'] = $token;
            $data['token'] = $token;
            $data['signPackage'] = $signPackage;
            $data['access_token']=$jssdk->getAccessToken();
            return $data;
        }
        
        #发送模版消息
        public function actionSendModelMsg(){
            $param = array();
            $param['touser'] = $_POST['touser'];
            $param['template_id'] = $_POST['template_id'];
            $param['url'] = $_POST['url']; 
            $param['miniprogram'] = $_POST['miniprogram']; 
            $data =$_POST['data']; 
            if( ! $param['touser'] ) $this->error("touser不能为空");
            if( ! $param['template_id'] ) $this->error("请提供合法的模版id");
            if( !$data ) $this->error('请提供模版数据');
            $param['data'] = json_decode($data,1);
    
            $d = $this->jssdk_param();
            $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$d['access_token']}";
            $res = $this->https_request($url,json_encode($param),'json');
            echo json_encode($res);
        }
        
           //发送请求
         function https_request($url,$data,$type){
                if($type=='json'){
                     $headers = array("Content-type: application/json;charset=UTF-8","Accept: application/json","Cache-Control: no-cache", "Pragma: no-cache");
                }
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
                if (!empty($data)){
                    curl_setopt($curl, CURLOPT_POST, 1);                                
                    curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
                }
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt( $curl, CURLOPT_HTTPHEADER, $headers );
                $output = curl_exec($curl);
                curl_close($curl); print_r($output);die;
                return $output;
         }
         
            
        #返回错误信息
         public  function error($msg){
            header("Content-type: application/json");
            $o['code'] = '1';
            $o['errorMsg'] = $msg;
            echo json_encode($o);
            die;
        }
    

    这样来发送模版主要变更的就是data参数了,配置好参数,业务处理完http方式调下接口就可以了。

  • 相关阅读:
    oracle 的exists 的用法
    linux
    C++纯虚函数
    C++ 的虚析构函数
    C++ new
    C++点和箭头操作符用法区别
    static
    关于C的int
    互斥量mutex的简单使用
    nginx服务器屏蔽上游错误码
  • 原文地址:https://www.cnblogs.com/followyou/p/7419102.html
Copyright © 2011-2022 走看看