zoukankan      html  css  js  c++  java
  • php实现微信推送消息

    一.
    <?php
    namespace OrgWeixin;

    class OrderPush
    {
    protected $appid;
    protected $secrect;
    protected $accessToken;
    function __construct($appid, $secrect)
    {
    $this->appid = $appid;
    $this->secrect = $secrect;
    $this->accessToken = $this->getToken($appid, $secrect);
    }
    /**
    * 发送post请求
    * @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); //抓取指定网页
    curl_setopt($ch, CURLOPT_HEADER, 0); //设置header
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_POST, 1); //post提交方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec($ch); //运行curl
    curl_close($ch);
    return $data;
    }
    /**
    * 发送get请求
    * @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 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $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;
    }
    /**
    * 发送自定义的模板消息
    * @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("您好,您已购买成功"),'color'=>"#743A3A"),
    'name'=>array('value'=>urlencode("商品信息:微时代电影票"),'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 = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $this->accessToken;
    $dataRes = $this->request_post($url, urldecode($json_template));
    if ($dataRes['errcode'] == 0) {
    return true;
    } else {
    return false;
    }
    }
    }
    原文链接:https://www.jianshu.com/p/f3caa4fd54ad(感谢分享)

    二、
    public function http_request($url,$data)
    {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
    }
    public function moban($name, $zu, $remain, $openid)
    {
    $appid = ""; //填写微信后台的appid
    $appsecret = ""; //填写微信后台的appsecret
    //从数据库查看access_token
    $sql = "SELECT * FROM `tokentime` WHERE id='$appid'";
    $query = mysql_query($sql);
    $rk = mysql_fetch_array($query);
    $time = date('Y-m-d H:i:s', time());
    if ($rk == "") //数据库查询无结果 获取access_token并存入
    {
    $TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
    $json = file_get_contents($TOKEN_URL);
    $result = json_decode($json, true);
    $ACCESS_TOKEN = $result['access_token'];

    $sql1 = "INSERT INTO `tokentime` (`id`,`access_token`,`time`) VALUES ('$appid','$ACCESS_TOKEN','$time')";
    $query1 = mysql_query($sql1);
    } else {
    $time_b = $rk['time'];//上次存的时间
    $time_n = date('Y-m-d H:i:s', time() - 7200);

    if ($rk['access_token'] == "" || $time_b < $time_n) {
    $TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
    $json = file_get_contents($TOKEN_URL);
    $result = json_decode($json, true);
    $ACCESS_TOKEN = $result['access_token'];

    $sql2 = "UPDATE tokentime SET access_token='$ACCESS_TOKEN',time='$time' WHERE id='$appid'";
    $query2 = mysql_query($sql2);
    } else {
    $ACCESS_TOKEN = $rk['access_token'];
    }
    }

    //模板消息
    $times = date('m月d日 H:i:s', time());

    $template = array(
    'touser' => $openid,
    'template_id' => "_0DQerSIqPZaB4vjQjjOIPRXZhcVooFT_390vDhHhVw", //模板的id
    'url' => "http://weixin.qq.com/download",
    'topcolor' => "#FF0000",
    'data' => array(
    'name' => array('value' => urlencode($name), 'color' => "#00008B"), //函数传参过来的name
    'zu' => array('value' => urlencode($zu), 'color' => '#00008B'), //函数传参过来的zu
    'time' => array('value' => urlencode($times), 'color' => '#00008B'), //时间
    'remain' => array('value' => urlencode($remain), 'color' => '#00008B'),//函数传参过来的ramain
    )
    );
    $json_template = json_encode($template);
    $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $ACCESS_TOKEN;
    $res = http_request($url, urldecode($json_template));
    if ($res[errcode] == 0) echo '消息发送成功!';
    }
    原文链接:https://yq.aliyun.com/articles/200767?spm=a2c4e.11155472.0.0.2061590cl0G6F2(感谢分享)

  • 相关阅读:
    牛客多校(2020第三场)C Operation Love
    牛客多校(2020第三场)C Operation Love
    牛客多校(2020第三场)B Classical String Problem
    牛客多校(2020第三场)B Classical String Problem
    牛客多校(2020第三场)L Problem L is the Only Lovely Problem
    牛客多校(2020第三场)L Problem L is the Only Lovely Problem
    一个图形或者控件旋转时 判断方向逆时针还是顺时针
    为什么 dll 改名字之后无法使用
    C# 几个特殊运算符的理解和Nullable<T> 的研究
    再次深入 C# Attribute
  • 原文地址:https://www.cnblogs.com/luqiang213917/p/11777828.html
Copyright © 2011-2022 走看看