'paycenter', 'title' => '支付中心', 'description' => '统一支付插件:支付宝(PC/WAP/扫码/App)+ 微信支付(Native/H5/JSAPI/小程序/App)', 'status' => 1, 'author' => 'ywxapp', 'version' => '1.0.0', 'type' => 1, ]; public function install() { // install.sql 由框架导入(白名单仅 CREATE TABLE / INSERT); // 这里再兜底一次,确保表齐备且不缺列。 Schema::ensure(); return true; } public function uninstall() { $prefix = $this->prefix(); foreach (self::TABLES as $table) { try { // 用配置前缀拼接,勿硬编码 wxapp_ Db::execute("DROP TABLE IF EXISTS `{$prefix}{$table}`"); } catch (\Throwable) { // 单表删除失败不阻断整体卸载 } } // 菜单由框架 deleteMenu() 清理;这里补清配置残留 // (框架卸载默认不清配置,重装会继承旧值) try { Db::name('common_addonconf')->where('addon', 'paycenter')->delete(); } catch (\Throwable) { // 表不存在时忽略 } AddonService::clearConfigCache('paycenter'); return true; } public function enable() { // 启用时做一次轻量建表兜底 Schema::ensure(); return true; } public function disable() { return true; } /** * 升级:install.sql 的 ALTER 会被 importsql 白名单跳过, * 因此「老库补列」必须放在这里(Schema::ensure)。 */ public function upgrade($currentVersion = '') { Schema::ensure(); return true; } /** 支付签名依赖 openssl */ public function getExtensions(): array { return ['openssl']; } private function prefix(): string { $default = (string) config('database.default', 'mysql'); return (string) config("database.connections.{$default}.prefix", ''); } }