diff --git a/common/AppConfig.php b/common/AppConfig.php index dfa94b6..bb9d65f 100644 --- a/common/AppConfig.php +++ b/common/AppConfig.php @@ -3,6 +3,9 @@ namespace wchat\common; use JetBrains\PhpStorm\ArrayShape; +use wchat\common\libs\Aliyun; +use wchat\common\libs\Qq; +use wchat\common\libs\Wx; class AppConfig { @@ -55,6 +58,15 @@ class AppConfig public array $notice = ['token' => '', 'secret' => '', 'unionId' => '']; + public function __construct() + { + $this->pay = new PayConfig(); + $this->pay->wx = new Wx(); + $this->pay->qq = new Qq(); + $this->pay->ali = new Aliyun(); + } + + /** * @param object $app * @return static @@ -65,7 +77,9 @@ class AppConfig $model->appId = $app->appId; $model->appSecret = $app->appSecret; $model->type = $app->type; - $model->pay = PayConfig::parse($app->pay); + + PayConfig::parse($app->pay, $model->pay); + return $model; } diff --git a/common/PayConfig.php b/common/PayConfig.php index 546dc0a..b1dd1eb 100644 --- a/common/PayConfig.php +++ b/common/PayConfig.php @@ -30,17 +30,24 @@ class PayConfig /** * @param string|array $pay + * @param PayConfig|null $model * @return static */ - public static function parse(string|array $pay): static + public static function parse(string|array $pay, ?PayConfig $model = null): static { if (is_string($pay)) { $pay = json_decode($pay, true); } - $model = new static(); - $model->ali = \Kiri::configure(new Aliyun(), $pay['ali']); - $model->qq = \Kiri::configure(new Qq(), $pay['qq']); - $model->wx = \Kiri::configure(new Wx(), $pay['wx']); + if ($model === null) { + $model = new static(); + $model->ali = \Kiri::configure(new Aliyun(), $pay['ali']); + $model->qq = \Kiri::configure(new Qq(), $pay['qq']); + $model->wx = \Kiri::configure(new Wx(), $pay['wx']); + } else { + $model->ali = \Kiri::configure($model->ali, $pay['ali']); + $model->qq = \Kiri::configure($model->qq, $pay['qq']); + $model->wx = \Kiri::configure($model->wx, $pay['wx']); + } return $model; }