|
|
@ -71,25 +71,26 @@ class WechatService extends BaseService |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* |
|
|
* |
|
|
* @param $url |
|
|
|
|
|
* @return array |
|
|
* @return array |
|
|
* @throws FuncException |
|
|
* @throws FuncException |
|
|
*/ |
|
|
*/ |
|
|
public function getJsSdkSignature($url): array |
|
|
public function getJsSdkSignature(): array |
|
|
{ |
|
|
{ |
|
|
|
|
|
$url = 'https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; |
|
|
$timestamp = time(); |
|
|
$timestamp = time(); |
|
|
|
|
|
|
|
|
$nonceStr = generate_random_string(10); |
|
|
$nonceStr = generate_random_string(10); |
|
|
|
|
|
|
|
|
$jsapi_ticket = $this->getJsApiTicket(); |
|
|
$jsapi_ticket = $this->getJsApiTicket(); |
|
|
|
|
|
|
|
|
$signature = sha1(sprintf('jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s', $jsapi_ticket, $nonceStr, $timestamp, $url)); |
|
|
$str = sprintf('jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s', $jsapi_ticket, $nonceStr, $timestamp, $url); |
|
|
|
|
|
$signature = sha1($str); |
|
|
|
|
|
|
|
|
return [ |
|
|
return [ |
|
|
'appId' => env('wechat.appid'), |
|
|
'appId' => env('wechat.appid'), |
|
|
'timestamp' => $timestamp, |
|
|
'timestamp' => $timestamp, |
|
|
'nonceStr' => $nonceStr, |
|
|
'nonceStr' => $nonceStr, |
|
|
'signature' => $signature, |
|
|
'signature' => $signature |
|
|
]; |
|
|
]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -102,6 +103,11 @@ class WechatService extends BaseService |
|
|
|
|
|
|
|
|
$access_token = $this->getAccessToken(); |
|
|
$access_token = $this->getAccessToken(); |
|
|
|
|
|
|
|
|
|
|
|
$ticket = $this->redis->get('wechat_js_api'); |
|
|
|
|
|
if ($ticket) { |
|
|
|
|
|
return $ticket; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' . $access_token . '&type=jsapi'; |
|
|
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' . $access_token . '&type=jsapi'; |
|
|
|
|
|
|
|
|
$res = Http::get($url); |
|
|
$res = Http::get($url); |
|
|
@ -111,6 +117,13 @@ class WechatService extends BaseService |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
$data = json_decode($res['data'],true); |
|
|
$data = json_decode($res['data'],true); |
|
|
|
|
|
|
|
|
|
|
|
if (isset($data['errcode']) && $data['errcode'] != 0) { |
|
|
|
|
|
throw new FuncException($data['errmsg']); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$this->redis->set('wechat_js_api', $data['ticket'], 7200); |
|
|
|
|
|
|
|
|
return $data['ticket']; |
|
|
return $data['ticket']; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|