[ 'key' => env('POSTMARK_API_KEY'), ], 'resend' => [ 'key' => env('RESEND_API_KEY'), ], 'ses' => [ 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), ], 'slack' => [ 'notifications' => [ 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), ], ], // Капча самозаписи (G1/SP1). driver=null → NullCaptchaVerifier (dev/test). // Реальный Yandex SmartCaptcha подключается позже (SP3/ops). 'captcha' => [ 'driver' => env('CAPTCHA_DRIVER', 'null'), 'fake_passes' => filter_var(env('CAPTCHA_FAKE_PASSES', true), FILTER_VALIDATE_BOOL), 'yandex_server_key' => env('YANDEX_SMARTCAPTCHA_SERVER_KEY'), 'yandex_validate_url' => env('YANDEX_SMARTCAPTCHA_VALIDATE_URL', 'https://smartcaptcha.cloud.yandex.ru/validate'), ], 'supplier' => [ 'login' => env('SUPPLIER_LOGIN'), 'password' => env('SUPPLIER_PASSWORD'), 'portal_url' => env('SUPPLIER_PORTAL_URL', 'https://crm.bp-gr.ru'), 'alert_email' => env('SUPPLIER_ALERT_EMAIL', 'ops@liderra.ru'), // Плитка балансов (28.06): у кабинета поставщика НЕ денежный баланс, а остаток // НОМЕРОВ («Баланс ГЦК» в выпадашке). Деньги = номера × number_price_rub (20 ₽/шт, // подтверждено владельцем 28.06). avg_lead_price_rub=0 → расход/день неизвестен. 'number_price_rub' => (float) env('SUPPLIER_NUMBER_PRICE_RUB', 20), 'avg_lead_price_rub' => (float) env('SUPPLIER_AVG_LEAD_PRICE_RUB', 0), 'red_floor_rub' => (int) env('SUPPLIER_RED_FLOOR_RUB', 5000), 'amber_floor_rub' => (int) env('SUPPLIER_AMBER_FLOOR_RUB', 15000), 'topup_url' => env('SUPPLIER_TOPUP_URL', env('SUPPLIER_PORTAL_URL', 'https://crm.bp-gr.ru')), ], // DaData phone cleaner — резолв региона лида по телефону (lead region resolution). // Ключи → YC Lockbox на проде; на dev/staging — .env. enabled=false до раскатки. 'dadata' => [ 'api_key' => env('DADATA_API_KEY'), 'secret' => env('DADATA_SECRET'), 'timeout_ms' => (int) env('DADATA_TIMEOUT_MS', 2000), 'retries' => (int) env('DADATA_RETRIES', 1), 'daily_cap_rub' => (int) env('DADATA_DAILY_CAP_RUB', 10000), 'call_cost_kopecks' => (int) env('DADATA_CALL_COST_KOPECKS', 60), // ≈0.60 ₽/вызов, откалибровать по тарифу 'enabled' => filter_var(env('LEAD_REGION_RESOLVER_ENABLED', false), FILTER_VALIDATE_BOOL), 'cache_ttl_days' => (int) env('PHONE_REGION_CACHE_TTL_DAYS', 30), // G1/SP2: подтяжка организации по ИНН (suggestions findById/party). Тот же api_key // (Token), secret не нужен. Default false → NullPartyLookup (dev/тесты не ходят в сеть). 'party_enabled' => filter_var(env('DADATA_PARTY_ENABLED', false), FILTER_VALIDATE_BOOL), // Плитка балансов (28.06): чтение баланса профиля + пороги светофора + ссылка пополнения. 'balance_url' => env('DADATA_BALANCE_URL', 'https://dadata.ru/api/v2/profile/balance'), 'red_floor_rub' => (int) env('DADATA_RED_FLOOR_RUB', 500), 'amber_floor_rub' => (int) env('DADATA_AMBER_FLOOR_RUB', 2000), 'topup_url' => env('DADATA_TOPUP_URL', 'https://dadata.ru/profile/#billing'), ], // Плитка балансов (28.06): Yandex Cloud биллинг (серверы + Managed PG ~18к/мес). // OAuth владельца (interim) → IAM-токен → billing API. SA billing-reader создан, // миграция на него — follow-up (только источник токена сменится). console_billing_url // + billing_account_id строят прямую ссылку «Пополнить» в дашборде. 'yandex_cloud' => [ 'oauth_token' => env('YC_OAUTH_TOKEN'), 'billing_account_id' => env('YC_BILLING_ACCOUNT_ID'), 'iam_url' => env('YC_IAM_URL', 'https://iam.api.cloud.yandex.net/iam/v1/tokens'), 'billing_url' => env('YC_BILLING_URL', 'https://billing.api.cloud.yandex.net/billing/v1/billingAccounts'), 'console_billing_url' => env('YC_CONSOLE_BILLING_URL', 'https://console.yandex.cloud/billing/accounts'), 'daily_spend_rub' => (int) env('YC_DAILY_SPEND_RUB', 600), // оценка ~18к/мес; откалибровать 'red_floor_rub' => (int) env('YC_RED_FLOOR_RUB', 1000), 'amber_floor_rub' => (int) env('YC_AMBER_FLOOR_RUB', 5000), ], // G7-A: клиентская «Помощь». 'support' => [ 'email' => env('SUPPORT_EMAIL', 'support@liderra.ru'), ], 'jivosite' => [ 'widget_id' => env('JIVO_WIDGET_ID'), ], // Платёжный шлюз ЮKassa. webhook_ip_allowlist — CSV IP/CIDR из env (defense-in-depth // на /api/webhook/payment). Пусто → fail-open (поток не ломается). На проде заполнить // опубликованными ЮKassa подсетями: 185.71.76.0/27,185.71.77.0/27,77.75.153.0/25, // 77.75.154.128/25,77.75.156.11,77.75.156.35,2a02:5180::/32. 'yookassa' => [ 'webhook_ip_allowlist' => array_values(array_filter(array_map( 'trim', explode(',', (string) env('YOOKASSA_WEBHOOK_IPS', '')), ))), ], ];