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

      

  • 相关阅读:
    Javascript的this用法
    angularjs学习笔记--1.入门
    git的简单应用
    转:Netty服务器线程模型概览
    Netty 4.0 中文文档
    转:腾讯CKV海量分布式存储系统
    转Redis性能测试
    maven assemby 打包问题
    转发:TCP
    转:HBase Server启动过程
  • 原文地址:https://www.cnblogs.com/xin-jun/p/7274886.html
Copyright © 2011-2022 走看看