php實(shí)現(xiàn)發(fā)送微信模板消息的方法

字號(hào):


    這篇文章主要介紹了php實(shí)現(xiàn)發(fā)送微信模板消息的方法,實(shí)例分析了php操作curl及自定義模板消息的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    本文實(shí)例講述了php實(shí)現(xiàn)發(fā)送微信模板消息的方法。分享給大家供大家參考。具體如下:
    該方法基于thinkphp實(shí)現(xiàn)實(shí)現(xiàn),具體OrderPush.class.php文件如下:
    代碼如下:
    <?php
    namespace Org\Weixin;
    /**
    * Created by PhpStorm.
    * User: StandOpen
    * Date: 15-1-7
    * Time: 9:41
    */
    class OrderPush
    {
    protected $appid;
    protected $secrect;
    protected $accessToken;
    function __construct($appid, $secrect)
    {
    $this->appid = $appid;
    $this->secrect = $secrect;
    $this->accessToken = $this->getToken($appid, $secrect);
    }
    /**
    * 發(fā)送post請(qǐng)求
    * @param string $url
    * @param string $param
    * @return bool|mixed
    */
    function request_post($url = '', $param = '')
    {
    if (empty($url) || empty($param)) {
    return false;
    }
    $postUrl = $url;
    $curlPost = $param;
    $ch = curl_init(); //初始化curl
    curl_setopt($ch, CURLOPT_URL, $postUrl); //抓取指定網(wǎng)頁
    curl_setopt($ch, CURLOPT_HEADER, 0); //設(shè)置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求結(jié)果為字符串且輸出到屏幕上
    curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($ch); //運(yùn)行curl
    curl_close($ch);
    return $data;
    }
    /**
    * 發(fā)送get請(qǐng)求
    * @param string $url
    * @return bool|mixed
    */
    function request_get($url = '')
    {
    if (empty($url)) {
    return false;
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
    }
    /**
    * @param $appid
    * @param $appsecret
    * @return mixed
    * 獲取token
    */
    protected function getToken($appid, $appsecret)
    {
    if (S($appid)) {
    $access_token = S($appid);
    } else {
    $url = "=" . $appid . "&secret=" . $appsecret;
    $token = $this->request_get($url);
    $token = json_decode(stripslashes($token));
    $arr = json_decode(json_encode($token), true);
    $access_token = $arr['access_token'];
    S($appid, $access_token, 720);
    }
    return $access_token;
    }
    /**
    * 發(fā)送自定義的模板消息
    * @param $touser
    * @param $template_id
    * @param $url
    * @param $data
    * @param string $topcolor
    * @return bool
    */
    public function doSend($touser, $template_id, $url, $data, $topcolor = '#7B68EE')
    {
    /*
    * data=>array(
    'first'=>array('value'=>urlencode("您好,您已購(gòu)買成功"),'color'=>"#743A3A"),
    'name'=>array('value'=>urlencode("商品信息:微時(shí)代電影票"),'color'=>'#EEEEEE'),
    'remark'=>array('value'=>urlencode('永久有效!密碼為:1231313'),'color'=>'#FFFFFF'),
    )
    */
    $template = array(
    'touser' => $touser,
    'template_id' => $template_id,
    'url' => $url,
    'topcolor' => $topcolor,
    'data' => $data
    );
    $json_template = json_encode($template);
    $url = "=" . $this->accessToken;
    $dataRes = $this->request_post($url, urldecode($json_template));
    if ($dataRes['errcode'] == 0) {
    return true;
    } else {
    return false;
    }
    }
    }
    希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。