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