Browse Source

获取微信JsSDK数据接口4

master
wanghongjun 2 years ago
parent
commit
6125a842ef
  1. 9
      app/controller/wechat/Wechat.php
  2. 21
      app/service/wechat/WechatService.php
  3. 2
      route/wechatRoute.php

9
app/controller/wechat/Wechat.php

@ -130,16 +130,11 @@ class Wechat extends Base
} }
} }
public function getJsSdkData(Request $request) public function getJsSdkData()
{ {
try { try {
$param = $request->param();
validate()->rule(['url' => 'require'])->check($param);
$url = urldecode($param['url']);
$WechatService = new WechatService(); $WechatService = new WechatService();
return $this->buildSuccess($WechatService->getJsSdkSignature($url)); return $this->buildSuccess($WechatService->getJsSdkSignature());
} catch (\Exception $e) { } catch (\Exception $e) {
return $this->buildFailed(ReturnCode::INVALID,$e->getMessage()); return $this->buildFailed(ReturnCode::INVALID,$e->getMessage());
} }

21
app/service/wechat/WechatService.php

@ -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&timestamp=%s&url=%s', $jsapi_ticket, $nonceStr, $timestamp, $url)); $str = sprintf('jsapi_ticket=%s&noncestr=%s&timestamp=%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'];
} }
} }

2
route/wechatRoute.php

@ -15,6 +15,6 @@ Route::group('wechat', function() {
Route::rule('Wechat/index', 'wechat.Wechat/index', 'get'); Route::rule('Wechat/index', 'wechat.Wechat/index', 'get');
Route::rule('Wechat/savePuCode', 'wechat.Wechat/savePuCode', 'post')->middleware(WechatAuth::class); Route::rule('Wechat/savePuCode', 'wechat.Wechat/savePuCode', 'post')->middleware(WechatAuth::class);
Route::rule('Wechat/sendSms', 'wechat.Wechat/sendSms', 'post')->middleware(WechatAuth::class); Route::rule('Wechat/sendSms', 'wechat.Wechat/sendSms', 'post')->middleware(WechatAuth::class);
Route::rule('Wechat/getJsSdkData', 'wechat.Wechat/getJsSdkData', 'post')->middleware(WechatAuth::class); Route::rule('Wechat/getJsSdkData', 'wechat.Wechat/getJsSdkData', 'get')->middleware(WechatAuth::class);
}); });

Loading…
Cancel
Save