getSignaturePackage($debug); $base = array( 'debug' => $debug, ); $config = array_merge($base, $signPackage, array('jsApiList' => $APIs)); return $json ? json_encode($config) : $config; } /** * 获取数组形式的配置. * * @param array $APIs * @param bool $debug * * @return array */ public function getConfigArray(array $APIs, $debug = false) { return $this->config($APIs, $debug, false); } /** * 获取jsticket. * * @return string */ public function getTicket() { $key = 'kuxin.weixin.jsapi_ticket.' . $this->appId; $data = DI::Cache()->get($key); if (!$data || empty($data['ticket'])) { $token = $this->getToken(); $data = $this->parseJSON(Http::get(self::API_TICKET, ['access_token' => $token])); if ($data && !empty($data['ticket'])) { DI::Cache()->set($key, $data, $data['expires_in']/10); } else { $data['ticket'] = null; } } return $data['ticket']; } /** * 签名. * * @param bool $debug * @param string $url * @param string $nonce * @param int $timestamp * * @return array */ public function getSignaturePackage($debug=false,$url = null, $nonce = null, $timestamp = null) { $url = $url ? $url : $this->getUrl(); $nonce = $nonce ? $nonce : $this->getNonce(); $timestamp = $timestamp ? $timestamp : time(); $ticket = $this->getTicket(); $sign = [ 'appId' => $this->appId, 'nonceStr' => $nonce, 'timestamp' => $timestamp, 'signature' => $this->getSignature($ticket, $nonce, $timestamp, $url), ]; if($debug){ $sign['url']=$url; $sign['ticket']=$ticket; } return $sign; } /** * 生成签名. * * @param string $ticket * @param string $nonce * @param int $timestamp * @param string $url * * @return string */ public function getSignature($ticket, $nonce, $timestamp, $url) { return sha1("jsapi_ticket={$ticket}&noncestr={$nonce}×tamp={$timestamp}&url={$url}"); } /** * 设置当前URL. * * @param string $url * * @return Js */ public function setUrl($url) { $this->url = $url; return $this; } /** * 获取当前URL. * * @return string */ public function getUrl() { if ($this->url) { return $this->url; } return Url::weixin(); } /** * 获取随机字符串. * * @return string */ public function getNonce() { return uniqid('kxcms_'); } }