From d35f045c735bdbf0fef0c85cdd25dcfa80597adc Mon Sep 17 00:00:00 2001 From: Anyon Date: Tue, 3 Apr 2018 13:01:52 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=9B=B4=E6=96=B0]=E5=A2=9E=E5=8A=A0=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7=E7=BD=91=E9=A1=B5JSSDK=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/wechat/controller/api/Script.php | 63 ++++++++++++++++++++ application/wechat/view/api/script/index.js | 14 +++++ extend/service/WechatService.php | 7 ++- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 14 ++--- vendor/composer/autoload_static.php | 8 +-- 6 files changed, 93 insertions(+), 15 deletions(-) create mode 100644 application/wechat/controller/api/Script.php create mode 100644 application/wechat/view/api/script/index.js diff --git a/application/wechat/controller/api/Script.php b/application/wechat/controller/api/Script.php new file mode 100644 index 000000000..a8e03d5e6 --- /dev/null +++ b/application/wechat/controller/api/Script.php @@ -0,0 +1,63 @@ +request = app('request'); + } + + /** + * jsSign签名 + * @throws \Exception + */ + public function index() + { + $wechat = WechatService::webOauth($this->request->get('mode', 1)); + $url = $this->request->server('HTTP_REFERER', $this->request->url(true), null); + $assign = [ + 'openid' => $wechat['openid'], + 'fansinfo' => $wechat['fansinfo'], + 'jssdk' => WechatService::webJsSDK($url), + ]; + return Response::create(env('APP_PATH') . 'wechat/view/api/script/index.js', 'view', 200, [ + 'content-type' => 'application/x-javascript;charset=utf-8', + 'cache-control' => 'no-cache', 'pragma' => 'no-cache', 'expires' => '0', + ])->assign($assign); + } +} \ No newline at end of file diff --git a/application/wechat/view/api/script/index.js b/application/wechat/view/api/script/index.js new file mode 100644 index 000000000..317f87ad5 --- /dev/null +++ b/application/wechat/view/api/script/index.js @@ -0,0 +1,14 @@ +!(function () { + if (typeof wx === 'object') { + wx.openid = '{$fansinfo.openid|default=""}'; + wx.unionid = '{$fansinfo.unionid|default=""}'; + wx.getUserInfo = function () { + return eval('{$fansinfo|default=[]|json_encode=###,256|raw}'); + }; + wx.config(eval('({$jssdk|default=[]|json_encode=###,256|raw})')); + wx.ready(function () { + wx.hideOptionMenu(); + wx.hideAllNonBaseMenuItem(); + }); + } +})(); \ No newline at end of file diff --git a/extend/service/WechatService.php b/extend/service/WechatService.php index 1325b76b7..2f16dde0e 100644 --- a/extend/service/WechatService.php +++ b/extend/service/WechatService.php @@ -86,20 +86,21 @@ class WechatService /** * 获取微信网页JSSDK + * @param null|string $url 签名SDK * @return array * @throws \think\Exception * @throws \WeChat\Exceptions\InvalidResponseException * @throws \WeChat\Exceptions\LocalCacheException * @throws \think\exception\PDOException */ - public static function webJsSDK() + public static function webJsSDK($url = null) { switch (strtolower(sysconf('wechat_type'))) { case 'api': - return WechatService::script()->getJsSign(request()->url(true)); + return WechatService::script()->getJsSign(is_null($url) ? request()->url(true) : $url); case 'thr': default: - return WechatService::wechat()->jsSign(request()->url(true)); + return WechatService::wechat()->jsSign(is_null($url) ? request()->url(true) : $url); } } diff --git a/vendor/autoload.php b/vendor/autoload.php index 4ded06e41..b72f4a932 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98::getLoader(); +return ComposerAutoloaderInit95af81df6ac420fb6c658e7c9ee159af::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index c8d785524..8d2b66e79 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98 +class ComposerAutoloaderInit95af81df6ac420fb6c658e7c9ee159af { private static $loader; @@ -19,15 +19,15 @@ class ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit95af81df6ac420fb6c658e7c9ee159af', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit95af81df6ac420fb6c658e7c9ee159af', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ class ComposerAutoloaderInit664b5cbfe1e72b3e993dce3dea0bcb98 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire664b5cbfe1e72b3e993dce3dea0bcb98($fileIdentifier, $file); + composerRequire95af81df6ac420fb6c658e7c9ee159af($fileIdentifier, $file); } return $loader; } } -function composerRequire664b5cbfe1e72b3e993dce3dea0bcb98($fileIdentifier, $file) +function composerRequire95af81df6ac420fb6c658e7c9ee159af($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index db92a495a..d77aefaf3 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98 +class ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af { public static $files = array ( '1cfd2761b63b0a29ed23657ea394cb2d' => __DIR__ . '/..' . '/topthink/think-captcha/src/helper.php', @@ -257,9 +257,9 @@ class ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit664b5cbfe1e72b3e993dce3dea0bcb98::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit95af81df6ac420fb6c658e7c9ee159af::$classMap; }, null, ClassLoader::class); }