zoukankan      html  css  js  c++  java
  • 微信分享

    <?php
    /**
     * Description of WxShare
     *微信分享
     * @author xinjun
     */
    namespace ControllerWx;
    
    use ControllerHomeHomeBase;
    use ModelWxUserModel;
    use ModelWxTokenModel;
    use FrameworkNetRequest;
    
    class WxShare extends HomeBase
    {
        public function __construct()
        {
            parent::__construct();
        }
        
        /**
         * 分享配置信息
         * @return type
         */
        public function getConfig()
        {
            $url = $_POST['url'];
            $conf = array();
            $conf['debug'] = true;
            $conf['appId'] = $this->getAppid();
            $conf['timestamp'] = time();
            $conf['nonceStr'] = "Wm3WZYTPz0wzccnW";
            $conf['signature'] = $this->getSignature($conf['nonceStr'],$conf['timestamp'],$url);
            $conf['jsApiList'] = ['onMenuShareTimeline','onMenuShareAppMessage'];
    //        print_r($conf);exit;
             return $this->getData($conf);//json_encode($conf,JSON_UNESCAPED_SLASHES) ;
        }
    
        /**
         * 获取appid
         * @return type
         */
        public function getAppid()
        {
            $tokenModel = new TokenModel();
            $appidData = $tokenModel->getAccessToken(array('nf_type'=>1));
            return $appidData['nf_appid'];
        }
    
        /**
         * 获取签名signature
         * @param type $UNSTR
         * @param type $TIMESTAMP
         * @return type
         */
        public function getSignature($UNSTR,$TIMESTAMP,$url)
        {
            // 获取 jsapi_ticket 值
            $jsapi_ticket = $this->getTicket();
            $signature = 'jsapi_ticket=' . $jsapi_ticket . '&noncestr=' . $UNSTR . '&timestamp=' . $TIMESTAMP . '&url=' . $url;
            return sha1($signature);
        }
    
        /**
         * 获取 ticket
         * @return boolean 
         */
        public function getTicket()
        {
            // 判断数据库jsapi_ticket更新时间
            // 超过 1000 秒则重新获取 并更新数据库  ( 每日调用次数为  100万次  2016年12月15日 )
            //取基础access_token
            $tokenModel = new TokenModel();
            $tokenData = $tokenModel->getAccessToken(array('id' => 2));
            $accesstokenData = $tokenModel->getAccessToken(array('id' => 1));
            if (($tokenData['nf_val'] != '')&& (($tokenData['nf_time'] + 6000) > time())) {
                return $tokenData['nf_val'];
            } else {
                // 更新 jsapi_ticket
                $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$accesstokenData['nf_val']."&type=jsapi";
                $https = true;
                $method = 'get';
                $data = null;
                $jsonJsapi_ticket = $this->request($url, $https, $method, $data);
                $jsapi_ticket = json_decode($jsonJsapi_ticket, true);
    
                if (!isset($jsapi_ticket['ticket'])) {
                    return false;
                }
                $upTicket = $tokenModel->edit(array('nf_val'=>$jsapi_ticket['ticket'],'nf_time'=>time()), array('id'=>2));
                if ($upTicket) {
                    $data = $tokenModel->getAccessToken(array('id' => 2));
                    if(!empty($data)){
                        $jsapi_ticket['ticket'] = $data['nf_val'];
                        return  $jsapi_ticket['ticket'];
                    }else{
                        return false;
                    }    
                } else {
                    return false;
                }
            }
        }
    }
    

      

  • 相关阅读:
    codeforces 869E. The Untended Antiquity(二维树状数组,随机化)
    bzoj 3083: 遥远的国度(树上换根操作,树剖+询问整个子树)
    hdu 5534 Partial Tree(dp+降唯,好题)
    AtCoder Regular Contest 075 E
    hihocoder 1387 A Research on "The Hundred Family Surnames"(树,lca,求同一颜色的直径)
    hdu 5458 Stability(生成树,树链剖分,好题)
    推荐一套个人ui组件库
    回望2019,期盼2020
    如何从产品的角度对待自己的博客
    致一名迷茫的我
  • 原文地址:https://www.cnblogs.com/xin-jun/p/7274886.html
Copyright © 2011-2022 走看看