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 {
$param = $request->param();
validate()->rule(['url' => 'require'])->check($param);
$url = urldecode($param['url']);
$WechatService = new WechatService();
return $this->buildSuccess($WechatService->getJsSdkSignature($url));
return $this->buildSuccess($WechatService->getJsSdkSignature());
} catch (\Exception $e) {
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
* @throws FuncException
*/
public function getJsSdkSignature($url): array
public function getJsSdkSignature(): array
{
$url = 'https://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
$timestamp = time();
$nonceStr = generate_random_string(10);
$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 [
'appId' => env('wechat.appid'),
'timestamp' => $timestamp,
'nonceStr' => $nonceStr,
'signature' => $signature,
'signature' => $signature
];
}
@ -102,6 +103,11 @@ class WechatService extends BaseService
$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';
$res = Http::get($url);
@ -111,6 +117,13 @@ class WechatService extends BaseService
}
$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'];
}
}

2
route/wechatRoute.php

@ -15,6 +15,6 @@ Route::group('wechat', function() {
Route::rule('Wechat/index', 'wechat.Wechat/index', 'get');
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/getJsSdkData', 'wechat.Wechat/getJsSdkData', 'post')->middleware(WechatAuth::class);
Route::rule('Wechat/getJsSdkData', 'wechat.Wechat/getJsSdkData', 'get')->middleware(WechatAuth::class);
});

Loading…
Cancel
Save