load(); } return self::$stInstance; } private $mStubs = []; public function load() { //配置文件样式 // $cfgs = [ // 'open_crash' => true, // 'cfgs_crash' => [ // 'channels' => 'beirui_sec', // 'succ_interval' => 900 // ] // ]; $this->mStubs = []; $cacher = Cache::getInstance('cacheredis'); $cfgs = $cacher->get('event-config', 'refill-'); if (empty($cfgs)) { return; } else { $cfgs = unserialize($cfgs); } Log::record("card_crash load open_crash={$cfgs['open_crash']}.", Log::DEBUG); //卡号碰撞控制 $open_crash = $cfgs['open_crash'] ?? false; if($open_crash) { $crash = new card_crash(); $crash->load($cfgs['cfgs_crash'] ?? []); $this->mStubs[] = $crash; } //流水号和短信透传控制 if($cfgs['open_notify_osn'] || $cfgs['open_sms']) { $event = new cbparams_pick(); $event->load($cfgs); $this->mStubs[] = $event; } } public function onBeforeSubmit(order $order) { $stubs = $this->mStubs; foreach ($stubs as $stub) { if($stub->onBeforeSubmit($order) === false) { return false; } } return true; } public function onSubmit(order $order) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onSubmit($order); } } public function onBeforeCommit(order $order, $ch_name): bool { $stubs = $this->mStubs; foreach ($stubs as $stub) { if ($stub->onBeforeCommit($order, $ch_name) === false) { return false; } } return true; } public function onCommit(order $order, $ch_name) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onCommit($order, $ch_name); } } public function onNeterror(order $order, $ch_name) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onNeterror($order, $ch_name); } } public function onNotify($refill_info, $order_info, $success) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onNotify($refill_info, $order_info, $success); } } public function onComplete($refill_info, $order_info, $success) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onComplete($refill_info, $order_info, $success); } } public function onEventCallback($refill_info, $mch_info, &$ctls) { $stubs = $this->mStubs; foreach ($stubs as $stub) { $stub->onEventCallback($refill_info, $mch_info, $ctls); } } }