diff --git a/app/Console/Commands/SendNotification.php b/app/Console/Commands/SendNotification.php index 6db490f..b6f39c2 100755 --- a/app/Console/Commands/SendNotification.php +++ b/app/Console/Commands/SendNotification.php @@ -259,7 +259,7 @@ class SendNotification extends Command */ public function urlLink() { - $app = Factory::miniProgram(miniProgramConfig()); + $app = miniProgramApp(); $result = $app->url_link->generate([]); return $result['url_link'] ?? ''; } @@ -269,7 +269,7 @@ class SendNotification extends Command */ public function appletNotice($vo, $sendData) { - $app = Factory::miniProgram(miniProgramConfig()); + $app = miniProgramApp(); $result = $app->subscribe_message->send($sendData); // 写记录 $vo->via_times++; diff --git a/app/Http/Controllers/Admin/CourseController.php b/app/Http/Controllers/Admin/CourseController.php index 7e5fb73..514b1f6 100755 --- a/app/Http/Controllers/Admin/CourseController.php +++ b/app/Http/Controllers/Admin/CourseController.php @@ -470,10 +470,10 @@ class CourseController extends BaseController } $debug('request wechat app_code'); - $app = Factory::miniProgram(miniProgramConfig([ + $app = miniProgramApp([ 'app_id' => $appId, 'secret' => $secret, - ])); + ]); $tmp = $app->app_code->get('packages/course/detail?id=' . $courseId, [ 'env_version' => 'release', ]); diff --git a/app/Http/Controllers/Mobile/UserController.php b/app/Http/Controllers/Mobile/UserController.php index 3fb78c6..0d99226 100755 --- a/app/Http/Controllers/Mobile/UserController.php +++ b/app/Http/Controllers/Mobile/UserController.php @@ -310,7 +310,7 @@ class UserController extends CommonController if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $app = Factory::miniProgram(miniProgramConfig()); + $app = miniProgramApp(); $result = $app->phone_number->getUserPhoneNumber($all['code']); $mobile = $result['phone_info']['purePhoneNumber'] ?? ''; // 判断手机号是否存在 diff --git a/app/Http/functions.php b/app/Http/functions.php index c694553..721c212 100755 --- a/app/Http/functions.php +++ b/app/Http/functions.php @@ -749,6 +749,24 @@ function miniProgramConfig(array $extra = []): array ], $extra); } +/** + * 创建小程序实例,并把 access_token 缓存绑到 storage(避免 /tmp/symfony-cache 权限问题) + */ +function miniProgramApp(array $extra = []) +{ + $cacheDir = storage_path('framework/cache/easywechat'); + if (!is_dir($cacheDir)) { + @mkdir($cacheDir, 0775, true); + } + + $app = \EasyWeChat\Factory::miniProgram(miniProgramConfig($extra)); + $psr6 = new \Symfony\Component\Cache\Adapter\FilesystemAdapter('easywechat', 0, $cacheDir); + $cache = new \Symfony\Component\Cache\Psr16Cache($psr6); + $app->rebind('cache', $cache); + + return $app; +} + /** * 将JSON字符串或数组的键值对组合成"键:值,键:值"格式的字符串 * diff --git a/app/Models/Course.php b/app/Models/Course.php index f5dbe31..191411b 100755 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -312,10 +312,10 @@ class Course extends SoftDeletesModel } try { - $app = Factory::miniProgram(miniProgramConfig([ + $app = miniProgramApp([ 'app_id' => $appId, 'secret' => $secret, - ])); + ]); $tmp = $app->app_code->get($page, [ 'env_version' => 'release', ]); diff --git a/app/Models/CourseContent.php b/app/Models/CourseContent.php index 0581ff1..6486a1d 100755 --- a/app/Models/CourseContent.php +++ b/app/Models/CourseContent.php @@ -82,7 +82,7 @@ class CourseContent extends SoftDeletesModel if ($fileSys->exists($path)) { return $url; } - $app = Factory::miniProgram(miniProgramConfig()); + $app = miniProgramApp(); $tmp = $app->app_code->get('/packages/sign/index?course_content_id=' . $courseContentId, [ 'env_version' => "release" // 正式版 //'env_version' => "trial" // 体验版 diff --git a/wechat_qrcode_diag.php b/wechat_qrcode_diag.php index 8516322..90d98d1 100644 --- a/wechat_qrcode_diag.php +++ b/wechat_qrcode_diag.php @@ -124,23 +124,12 @@ if ($appId === '' || $secretCfg === '') { $put('skip: missing appid/secret'); } else { try { - $mini = EasyWeChat\Factory::miniProgram(function_exists('miniProgramConfig') ? miniProgramConfig([ - 'app_id' => $appId, - 'secret' => $secretCfg, - ]) : [ - 'app_id' => $appId, - 'secret' => $secretCfg, - 'log' => [ - 'default' => 'prod', - 'channels' => [ - 'prod' => [ - 'driver' => 'single', - 'path' => storage_path('logs/easywechat.log'), - 'level' => 'error', - ], - ], - ], - ]); + $mini = function_exists('miniProgramApp') + ? miniProgramApp(['app_id' => $appId, 'secret' => $secretCfg]) + : EasyWeChat\Factory::miniProgram([ + 'app_id' => $appId, + 'secret' => $secretCfg, + ]); $token = $mini->access_token->getToken(true); $put('token_ok=yes'); $put('expires_in=' . ($token['expires_in'] ?? 'n/a'));