Update pricing UX, billing flows, and API rules
This commit is contained in:
@@ -44,19 +44,109 @@ return [
|
||||
// Optional stub keys for local testing without external HTTP calls.
|
||||
'test_keys' => array_values(array_filter(array_map('trim', explode(',', (string) env('DEWEMOJI_MAYAR_TEST_KEYS', ''))))),
|
||||
],
|
||||
'paypal' => [
|
||||
'enabled' => filter_var(env('DEWEMOJI_PAYPAL_ENABLED', false), FILTER_VALIDATE_BOOL),
|
||||
'timeout' => (int) env('DEWEMOJI_PAYPAL_TIMEOUT', 10),
|
||||
'webhook_ids' => [
|
||||
'sandbox' => env('DEWEMOJI_PAYPAL_SANDBOX_WEBHOOK_ID', ''),
|
||||
'live' => env('DEWEMOJI_PAYPAL_LIVE_WEBHOOK_ID', ''),
|
||||
],
|
||||
'plan_ids' => [
|
||||
'sandbox' => [
|
||||
'personal_monthly' => env('DEWEMOJI_PAYPAL_SANDBOX_PLAN_PERSONAL_MONTHLY', ''),
|
||||
'personal_annual' => env('DEWEMOJI_PAYPAL_SANDBOX_PLAN_PERSONAL_ANNUAL', ''),
|
||||
],
|
||||
'live' => [
|
||||
'personal_monthly' => env('DEWEMOJI_PAYPAL_LIVE_PLAN_PERSONAL_MONTHLY', ''),
|
||||
'personal_annual' => env('DEWEMOJI_PAYPAL_LIVE_PLAN_PERSONAL_ANNUAL', ''),
|
||||
],
|
||||
],
|
||||
'sandbox' => [
|
||||
'api_base' => env('DEWEMOJI_PAYPAL_SANDBOX_API_BASE', 'https://api-m.sandbox.paypal.com'),
|
||||
'web_base' => env('DEWEMOJI_PAYPAL_SANDBOX_WEB_BASE', 'https://www.sandbox.paypal.com'),
|
||||
'client_id' => env('DEWEMOJI_PAYPAL_SANDBOX_CLIENT_ID', ''),
|
||||
'client_secret' => env('DEWEMOJI_PAYPAL_SANDBOX_CLIENT_SECRET', ''),
|
||||
],
|
||||
'live' => [
|
||||
'api_base' => env('DEWEMOJI_PAYPAL_LIVE_API_BASE', 'https://api-m.paypal.com'),
|
||||
'web_base' => env('DEWEMOJI_PAYPAL_LIVE_WEB_BASE', 'https://www.paypal.com'),
|
||||
'client_id' => env('DEWEMOJI_PAYPAL_LIVE_CLIENT_ID', ''),
|
||||
'client_secret' => env('DEWEMOJI_PAYPAL_LIVE_CLIENT_SECRET', ''),
|
||||
],
|
||||
],
|
||||
'pakasir' => [
|
||||
'enabled' => filter_var(env('DEWEMOJI_PAKASIR_ENABLED', false), FILTER_VALIDATE_BOOL),
|
||||
'api_base' => env('DEWEMOJI_PAKASIR_API_BASE', ''),
|
||||
'api_key' => env('DEWEMOJI_PAKASIR_API_KEY', ''),
|
||||
'project' => env('DEWEMOJI_PAKASIR_PROJECT', ''),
|
||||
'timeout' => (int) env('DEWEMOJI_PAKASIR_TIMEOUT', 10),
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'cors' => [
|
||||
'allowed_origins' => array_values(array_filter(array_map('trim', explode(',', (string) env('DEWEMOJI_ALLOWED_ORIGINS', 'http://127.0.0.1:8000,http://localhost:8000,https://dewemoji.com,https://www.dewemoji.com'))))),
|
||||
'allow_methods' => 'GET, POST, OPTIONS',
|
||||
'allow_headers' => 'Content-Type, Authorization, X-License-Key, X-Account-Id, X-Dewemoji-Frontend',
|
||||
'allow_headers' => 'Content-Type, Authorization, X-License-Key, X-Api-Key, X-Admin-Token, X-Account-Id, X-Dewemoji-Frontend, X-Extension-Token',
|
||||
],
|
||||
|
||||
'admin' => [
|
||||
'token' => env('DEWEMOJI_ADMIN_TOKEN', ''),
|
||||
],
|
||||
|
||||
'pricing' => [
|
||||
'usd_rate' => (int) env('DEWEMOJI_USD_RATE', 15000),
|
||||
'defaults' => [
|
||||
[
|
||||
'code' => 'personal_monthly',
|
||||
'name' => 'Personal Monthly',
|
||||
'currency' => 'IDR',
|
||||
'amount' => 30000,
|
||||
'period' => 'month',
|
||||
'status' => 'active',
|
||||
],
|
||||
[
|
||||
'code' => 'personal_annual',
|
||||
'name' => 'Personal Annual',
|
||||
'currency' => 'IDR',
|
||||
'amount' => 300000,
|
||||
'period' => 'year',
|
||||
'status' => 'active',
|
||||
],
|
||||
[
|
||||
'code' => 'personal_lifetime',
|
||||
'name' => 'Personal Lifetime',
|
||||
'currency' => 'IDR',
|
||||
'amount' => 900000,
|
||||
'period' => null,
|
||||
'status' => 'active',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
'payments' => [
|
||||
'qris_url' => env('DEWEMOJI_QRIS_URL', ''),
|
||||
'paypal_url' => env('DEWEMOJI_PAYPAL_URL', ''),
|
||||
],
|
||||
|
||||
'frontend' => [
|
||||
'header_token' => env('DEWEMOJI_FRONTEND_HEADER', 'web-v1'),
|
||||
],
|
||||
|
||||
'public_access' => [
|
||||
'enforce_whitelist' => filter_var(env('DEWEMOJI_PUBLIC_ENFORCE', true), FILTER_VALIDATE_BOOL),
|
||||
'allowed_origins' => array_values(array_filter(array_map('trim', explode(',', (string) env('DEWEMOJI_PUBLIC_ORIGINS', 'http://127.0.0.1:8000,http://localhost:8000,https://dewemoji.com,https://www.dewemoji.com'))))),
|
||||
'extension_ids' => array_values(array_filter(array_map('trim', explode(',', (string) env('DEWEMOJI_EXTENSION_IDS', ''))))),
|
||||
'hourly_limit' => (int) env('DEWEMOJI_PUBLIC_HOURLY_LIMIT', 5000),
|
||||
],
|
||||
|
||||
'extension_verification' => [
|
||||
'enabled' => filter_var(env('DEWEMOJI_EXTENSION_VERIFY_ENABLED', true), FILTER_VALIDATE_BOOL),
|
||||
'project_id' => env('DEWEMOJI_GOOGLE_PROJECT_ID', ''),
|
||||
'server_key' => env('DEWEMOJI_GOOGLE_SERVER_KEY', ''),
|
||||
'cache_ttl' => (int) env('DEWEMOJI_EXTENSION_VERIFY_CACHE_TTL', 3600),
|
||||
],
|
||||
|
||||
'metrics' => [
|
||||
'enabled' => filter_var(env('DEWEMOJI_METRICS_ENABLED', true), FILTER_VALIDATE_BOOL),
|
||||
'token' => (string) env('DEWEMOJI_METRICS_TOKEN', ''),
|
||||
|
||||
Reference in New Issue
Block a user