* @copyright walkor * @link http://www.workerman.net/ * @license http://www.opensource.org/licenses/mit-license.php MIT License */ use support\Request; return [ /** * DDPay(Payment Gateway)全量配置来自环境变量,见仓库根目录 `.env-example` 中 DDPAY_* 说明。 * * - DDPAY_PUBLIC_BASE_URL:站点对外的 HTTPS 根地址(无尾斜杠),用于拼接入金/出金 callback_url;不配置则从请求头推导(本地可能为 http,生产务必配置)。 * - DDPAY_CLIENT_ID / DDPAY_IDENTIFIER / DDPAY_API_SECRET:商户标识与签名密钥(文档 Authentication)。 * - DDPAY_DEPOSIT_INIT_URL / DDPAY_DEPOSIT_STATUS_URL:入金发起、入金状态查询(文档 §3.1 / §3.3)。 * - DDPAY_PAYOUT_INIT_URL / DDPAY_PAYOUT_STATUS_URL:出金发起、出金状态查询(文档 §3.2 / §3.4)。 */ 'ddpay_public_base_url' => is_string(getenv('DDPAY_PUBLIC_BASE_URL')) ? trim(getenv('DDPAY_PUBLIC_BASE_URL')) : '', /** H5 前端游戏页地址:模拟充值收银台「返回游戏」在当前窗口跳转至此(无尾斜杠) */ 'h5_game_url' => is_string(getenv('H5_GAME_URL')) ? trim(getenv('H5_GAME_URL')) : '', 'ddpay_client_id' => is_string(getenv('DDPAY_CLIENT_ID')) ? trim(getenv('DDPAY_CLIENT_ID')) : '', 'ddpay_identifier' => is_string(getenv('DDPAY_IDENTIFIER')) ? trim(getenv('DDPAY_IDENTIFIER')) : '', 'ddpay_api_secret' => is_string(getenv('DDPAY_API_SECRET')) ? trim(getenv('DDPAY_API_SECRET')) : '', 'ddpay_deposit_init_url' => is_string(getenv('DDPAY_DEPOSIT_INIT_URL')) ? trim(getenv('DDPAY_DEPOSIT_INIT_URL')) : '', 'ddpay_deposit_status_url' => is_string(getenv('DDPAY_DEPOSIT_STATUS_URL')) ? trim(getenv('DDPAY_DEPOSIT_STATUS_URL')) : '', 'ddpay_payout_init_url' => is_string(getenv('DDPAY_PAYOUT_INIT_URL')) ? trim(getenv('DDPAY_PAYOUT_INIT_URL')) : '', 'ddpay_payout_status_url' => is_string(getenv('DDPAY_PAYOUT_STATUS_URL')) ? trim(getenv('DDPAY_PAYOUT_STATUS_URL')) : '', // 模拟支付(channel_code=mock):未接入 DDPay 时用于联调;FINANCE_MOCK_PAY_ENABLED=0 可关闭 'finance_mock_pay_enabled' => (static function (): bool { $raw = getenv('FINANCE_MOCK_PAY_ENABLED'); if (is_string($raw) && $raw !== '') { $norm = strtolower(trim($raw)); if (in_array($norm, ['0', 'false', 'no', 'off'], true)) { return false; } if (in_array($norm, ['1', 'true', 'yes', 'on'], true)) { return true; } } $debugRaw = getenv('APP_DEBUG'); if ($debugRaw === false || $debugRaw === '') { return true; } return in_array(strtolower(trim((string) $debugRaw)), ['1', 'true', 'yes', 'on'], true); })(), /** 充值待支付订单有效秒数(超时未支付自动失败;支付链接倒计时与此一致) */ 'deposit_pending_expire_seconds' => (static function (): int { $raw = getenv('DEPOSIT_PENDING_EXPIRE_SECONDS'); if (is_string($raw) && trim($raw) !== '') { $v = filter_var(trim($raw), FILTER_VALIDATE_INT); if ($v !== false && $v > 0) { return $v; } } return 60; })(), 'debug' => true, 'error_reporting' => E_ALL, 'default_timezone' => 'Asia/Shanghai', 'request_class' => Request::class, 'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', 'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', 'controller_suffix' => 'Controller', 'controller_reuse' => false, ];