Files
midi-php/extend/Yzh/Config.php

96 lines
3.2 KiB
PHP
Raw Normal View History

2025-08-13 10:43:56 +08:00
<?php
namespace Yzh;
use Yzh\Exception\ConfigException;
use Yzh\Exception\ExceptionCode;
class Config
{
public $app_dealer_id;
public $app_broker_id;
public $app_key;
public $sign_type;
public $app_private_key;
public $yzh_public_key;
public $app_des3_key;
public $timeout;
public $env;
public $service_name;
const SIGN_TYPE_RSA = 'rsa';
const SIGN_TYPE_HMAC = 'sha256';
private function __construct()
{
}
public static function newFromArray($params = array())
{
$config = new Config();
if (isset($params['app_dealer_id']) && !empty($params['app_dealer_id'])) {
$config->app_dealer_id = $params['app_dealer_id'];
} else {
throw new ConfigException("缺少 app_dealer_id", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
if (isset($params['app_broker_id']) && !empty($params['app_broker_id'])) {
$config->app_broker_id = $params['app_broker_id'];
} else {
throw new ConfigException("缺少 app_broker_id", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
if (isset($params['app_key']) && !empty($params['app_key'])) {
$config->app_key = $params['app_key'];
} else {
throw new ConfigException("缺少 app_key", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
if (isset($params['app_des3_key']) && !empty($params['app_des3_key'])) {
$config->app_des3_key = $params['app_des3_key'];
} else {
throw new ConfigException("缺少 app_des3_key", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
if (isset($params['sign_type']) && !empty($params['sign_type'])) {
$config->sign_type = $params['sign_type'];
} else {
$config->sign_type = self::SIGN_TYPE_RSA; // 默认是 RSA 签名
}
if (!in_array($config->sign_type, array(self::SIGN_TYPE_RSA, self::SIGN_TYPE_HMAC))) {
throw new ConfigException("缺少 app_private_key", ExceptionCode::CONFIG_ERROR_WRONG_SIGN_TYPE);
}
if ($config->sign_type == self::SIGN_TYPE_RSA) {
if (isset($params['app_private_key']) && !empty($params['app_private_key'])) {
$config->app_private_key = $params['app_private_key'];
} else {
throw new ConfigException("缺少 app_private_key", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
if (isset($params['yzh_public_key']) && !empty($params['yzh_public_key'])) {
$config->yzh_public_key = $params['yzh_public_key'];
} else {
throw new ConfigException("缺少 yzh_public_key", ExceptionCode::CONFIG_ERROR_LOST_KEY);
}
}
if (isset($params['timeout']) && intval($params['timeout']) > 0) {
$config->timeout = intval($params['timeout']);
}
if (isset($params['env']) && !empty($params['env'])) {
$config->env = $params['env'];
} else {
$config->env = BaseClient::ENV_PROD;
}
if (isset($params["service_name"]) && !empty($params["service_name"])) {
$config->service_name = $params["service_name"];
}
return $config;
}
}