init
- 框架初始化 - 安装插件 - 修复PHP8.4报错
This commit is contained in:
131
addons/epay/library/v2/Yansongda/Pay/Pay.php
Normal file
131
addons/epay/library/v2/Yansongda/Pay/Pay.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
|
||||
namespace Yansongda\Pay;
|
||||
|
||||
use Exception;
|
||||
use Yansongda\Pay\Contracts\GatewayApplicationInterface;
|
||||
use Yansongda\Pay\Exceptions\InvalidGatewayException;
|
||||
use Yansongda\Pay\Gateways\Alipay;
|
||||
use Yansongda\Pay\Gateways\Wechat;
|
||||
use Yansongda\Pay\Listeners\KernelLogSubscriber;
|
||||
use Yansongda\Supports\Config;
|
||||
use Yansongda\Supports\Log;
|
||||
use Yansongda\Supports\Logger;
|
||||
use Yansongda\Supports\Str;
|
||||
|
||||
/**
|
||||
* @method static Alipay alipay(array $config) 支付宝
|
||||
* @method static Wechat wechat(array $config) 微信
|
||||
*/
|
||||
class Pay
|
||||
{
|
||||
/**
|
||||
* Config.
|
||||
*
|
||||
* @var Config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* Bootstrap.
|
||||
*
|
||||
* @author yansongda <me@yansongda.cn>
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
{
|
||||
$this->config = new Config($config);
|
||||
|
||||
$this->registerLogService();
|
||||
$this->registerEventService();
|
||||
}
|
||||
|
||||
/**
|
||||
* Magic static call.
|
||||
*
|
||||
* @author yansongda <me@yansongda.cn>
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $params
|
||||
*
|
||||
* @throws InvalidGatewayException
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function __callStatic($method, $params): GatewayApplicationInterface
|
||||
{
|
||||
$app = new self(...$params);
|
||||
|
||||
return $app->create($method);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a instance.
|
||||
*
|
||||
* @author yansongda <me@yansongda.cn>
|
||||
*
|
||||
* @param string $method
|
||||
*
|
||||
* @throws InvalidGatewayException
|
||||
*/
|
||||
protected function create($method): GatewayApplicationInterface
|
||||
{
|
||||
$gateway = __NAMESPACE__.'\\Gateways\\'.Str::studly($method);
|
||||
|
||||
if (class_exists($gateway)) {
|
||||
return self::make($gateway);
|
||||
}
|
||||
|
||||
throw new InvalidGatewayException("Gateway [{$method}] Not Exists");
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a gateway.
|
||||
*
|
||||
* @author yansongda <me@yansonga.cn>
|
||||
*
|
||||
* @param string $gateway
|
||||
*
|
||||
* @throws InvalidGatewayException
|
||||
*/
|
||||
protected function make($gateway): GatewayApplicationInterface
|
||||
{
|
||||
$app = new $gateway($this->config);
|
||||
|
||||
if ($app instanceof GatewayApplicationInterface) {
|
||||
return $app;
|
||||
}
|
||||
|
||||
throw new InvalidGatewayException("Gateway [{$gateway}] Must Be An Instance Of GatewayApplicationInterface");
|
||||
}
|
||||
|
||||
/**
|
||||
* Register log service.
|
||||
*
|
||||
* @author yansongda <me@yansongda.cn>
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function registerLogService()
|
||||
{
|
||||
$config = $this->config->get('log');
|
||||
$config['identify'] = 'yansongda.pay';
|
||||
|
||||
$logger = new Logger();
|
||||
$logger->setConfig($config);
|
||||
|
||||
Log::setInstance($logger);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register event service.
|
||||
*
|
||||
* @author yansongda <me@yansongda.cn>
|
||||
*/
|
||||
protected function registerEventService()
|
||||
{
|
||||
Events::setDispatcher(Events::createDispatcher());
|
||||
|
||||
Events::addSubscriber(new KernelLogSubscriber());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user