hospital-applets-api/extend/Ca/CaGatewayFactory.php
haomingming 1bd00bdcea
Some checks failed
Build Docker / build (push) Has been cancelled
ca认证 V2
2026-04-27 15:26:42 +08:00

38 lines
1.3 KiB
PHP

<?php
namespace Extend\Ca;
use App\Exception\BusinessException;
use Extend\Ca_V2\CaOffline as CaOfflineV2;
use Extend\Ca_V2\CaOnline as CaOnlineV2;
class CaGatewayFactory
{
public static function makeScene(string $scene): Ca
{
$sceneConfig = config("ca.gateway.{$scene}", []);
if (!is_array($sceneConfig)) {
throw new BusinessException("不支持的CA场景配置: {$scene}");
}
$driver = (string) ($sceneConfig['driver'] ?? config('ca.gateway.driver', 'legacy'));
$mode = (string) ($sceneConfig['mode'] ?? config('ca.gateway.mode', 'online'));
return self::make($mode, $driver);
}
public static function make(?string $mode = null, ?string $driver = null): Ca
{
$resolvedMode = strtolower($mode ?: (string) config('ca.gateway.mode', 'online'));
$resolvedDriver = strtolower($driver ?: (string) config('ca.gateway.driver', 'legacy'));
return match ([$resolvedDriver, $resolvedMode]) {
['legacy', 'online'] => new CaOnline(),
['legacy', 'offline'] => new CaOffline(),
['v2', 'online'] => new CaOnlineV2(),
['v2', 'offline'] => new CaOfflineV2(),
default => throw new BusinessException("不支持的CA驱动配置: {$resolvedDriver}/{$resolvedMode}"),
};
}
}