<?php
/*** Description of WxShare*微信分享* @author xinjun*/
namespace Controller\Wx;use Controller\Home\HomeBase;
use Model\Wx\UserModel;
use Model\Wx\TokenModel;
use Framework\Net\Request;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 . '×tamp=' . $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;}}}
}