Autosave: 20260218-135014
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
session_start();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
@ -8,7 +9,7 @@ $db = db();
|
||||
$user_id = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if (!$user_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Unauthorized']);
|
||||
echo json_encode(['success' => false, 'error' => __('unauthorized')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -16,7 +17,7 @@ if (!$user_id) {
|
||||
$stmt = $db->prepare("SELECT status FROM users WHERE id = ?");
|
||||
$stmt->execute([$user_id]);
|
||||
if ($stmt->fetchColumn() === 'frozen') {
|
||||
echo json_encode(['success' => false, 'error' => 'Account frozen']);
|
||||
echo json_encode(['success' => false, 'error' => __('account_frozen')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -31,7 +32,7 @@ if ($action === 'place_order') {
|
||||
$profit_rate = (int)$_POST['profit_rate'];
|
||||
|
||||
if ($amount <= 0) {
|
||||
echo json_encode(['success' => false, 'error' => 'Invalid amount']);
|
||||
echo json_encode(['success' => false, 'error' => __('invalid_amount')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -43,7 +44,7 @@ if ($action === 'place_order') {
|
||||
$bal = $stmt->fetchColumn();
|
||||
|
||||
if ($bal < $amount) {
|
||||
throw new Exception("Insufficient balance");
|
||||
throw new Exception(__('insufficient_balance'));
|
||||
}
|
||||
|
||||
// Deduct balance
|
||||
@ -73,7 +74,7 @@ if ($action === 'settle_order') {
|
||||
$order = $stmt->fetch();
|
||||
|
||||
if (!$order || $order['status'] !== 'pending') {
|
||||
echo json_encode(['success' => false, 'error' => 'Order not found or already settled']);
|
||||
echo json_encode(['success' => false, 'error' => __('no_records_found')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
session_start();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
@ -8,7 +9,7 @@ $db = db();
|
||||
$user_id = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if (!$user_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Unauthorized']);
|
||||
echo json_encode(['success' => false, 'error' => __('unauthorized')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -23,7 +24,7 @@ if ($action === 'place_order') {
|
||||
$type = $_POST['type'] ?? 'market';
|
||||
|
||||
if ($amount <= 0) {
|
||||
echo json_encode(['success' => false, 'error' => 'Invalid amount']);
|
||||
echo json_encode(['success' => false, 'error' => __('invalid_amount')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -37,7 +38,7 @@ if ($action === 'place_order') {
|
||||
$bal = $stmt->fetchColumn() ?: 0;
|
||||
|
||||
if ($bal < $margin) {
|
||||
throw new Exception("Insufficient balance for margin");
|
||||
throw new Exception(__('insufficient_balance'));
|
||||
}
|
||||
|
||||
// Deduct margin
|
||||
@ -67,7 +68,7 @@ if ($action === 'place_order') {
|
||||
$order = $stmt->fetch();
|
||||
|
||||
if (!$order) {
|
||||
echo json_encode(['success' => false, 'error' => 'Order not found']);
|
||||
echo json_encode(['success' => false, 'error' => __('no_records_found')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ $db = db();
|
||||
$user_id = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if (!$user_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Unauthorized']);
|
||||
echo json_encode(['success' => false, 'error' => __('unauthorized')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ if (!$user_id) {
|
||||
$stmt = $db->prepare("SELECT status FROM users WHERE id = ?");
|
||||
$stmt->execute([$user_id]);
|
||||
if ($stmt->fetchColumn() === 'frozen') {
|
||||
echo json_encode(['success' => false, 'error' => 'Account frozen']);
|
||||
echo json_encode(['success' => false, 'error' => __('account_frozen')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ if ($action === 'recharge') {
|
||||
$fiat_currency = $_POST['fiat_currency'] ?? null;
|
||||
|
||||
if ($amount <= 0) {
|
||||
echo json_encode(['success' => false, 'error' => 'Invalid amount']);
|
||||
echo json_encode(['success' => false, 'error' => __('invalid_amount')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -187,7 +187,7 @@ if ($action === 'withdraw') {
|
||||
$bal = $stmt->fetchColumn();
|
||||
|
||||
if ($bal < $amount) {
|
||||
echo json_encode(['success' => false, 'error' => 'Insufficient balance']);
|
||||
echo json_encode(['success' => false, 'error' => __('insufficient_balance')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../db/config.php';
|
||||
require_once __DIR__ . '/../includes/lang.php';
|
||||
session_start();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
@ -8,7 +9,7 @@ $db = db();
|
||||
$user_id = $_SESSION['user_id'] ?? null;
|
||||
|
||||
if (!$user_id) {
|
||||
echo json_encode(['success' => false, 'error' => 'Unauthorized']);
|
||||
echo json_encode(['success' => false, 'error' => __('unauthorized')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -19,7 +20,7 @@ $amount = (float)($_POST['amount'] ?? 0);
|
||||
$type = $_POST['type'] ?? 'limit';
|
||||
|
||||
if ($amount <= 0) {
|
||||
echo json_encode(['success' => false, 'error' => 'Invalid amount']);
|
||||
echo json_encode(['success' => false, 'error' => __('invalid_amount')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
@ -34,7 +35,7 @@ try {
|
||||
$bal = $stmt->fetchColumn() ?: 0;
|
||||
|
||||
if ($bal < $total_cost) {
|
||||
throw new Exception("Insufficient balance");
|
||||
throw new Exception(__('insufficient_balance'));
|
||||
}
|
||||
|
||||
// Deduct balance
|
||||
|
||||
@ -229,6 +229,14 @@ a:hover {
|
||||
padding-right: 10px !important;
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
.register-card, .login-card {
|
||||
padding: 30px 15px !important;
|
||||
margin: 10px 0;
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
.register-card .logo-text, .login-card .logo-text {
|
||||
font-size: 20px !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Custom Scrollbar */
|
||||
|
||||
@ -663,30 +663,29 @@
|
||||
|
||||
/* Mobile Switcher Module */
|
||||
.mobile-type-switcher {
|
||||
padding: 12px 15px;
|
||||
padding: 8px 15px;
|
||||
background: #0b0e11;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
}
|
||||
|
||||
.switcher-module {
|
||||
display: flex;
|
||||
background: #1e2329;
|
||||
padding: 4px;
|
||||
border-radius: 12px;
|
||||
gap: 4px;
|
||||
box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
|
||||
background: #161a1e;
|
||||
padding: 3px;
|
||||
border-radius: 10px;
|
||||
gap: 3px;
|
||||
}
|
||||
|
||||
.switcher-item {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 10px 5px;
|
||||
border-radius: 10px;
|
||||
padding: 8px 5px;
|
||||
border-radius: 8px;
|
||||
text-decoration: none;
|
||||
color: var(--term-muted);
|
||||
font-size: 13px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transition: all 0.3s ease;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@ -702,41 +701,123 @@
|
||||
.terminal-header {
|
||||
height: 60px;
|
||||
padding: 0 15px;
|
||||
gap: 15px;
|
||||
}
|
||||
.terminal-header .fs-4 {
|
||||
font-size: 14px !important;
|
||||
}
|
||||
.price-jump.fs-4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.terminal-chart {
|
||||
height: 380px !important;
|
||||
height: 350px !important;
|
||||
}
|
||||
|
||||
.trading-panels {
|
||||
padding: 15px;
|
||||
padding: 12px;
|
||||
background: #0b0e11;
|
||||
border-top: 1px solid var(--term-border);
|
||||
height: auto;
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.binary-order-panel .btn-buy-sell {
|
||||
height: 50px;
|
||||
font-size: 14px;
|
||||
border-radius: 10px;
|
||||
height: 60px;
|
||||
font-size: 16px;
|
||||
border-radius: 15px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.cycle-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }
|
||||
|
||||
.cycle-btn {
|
||||
min-height: 45px;
|
||||
border-radius: 10px;
|
||||
min-height: 50px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.cycle-btn .cycle-time { font-size: 12px; }
|
||||
.cycle-btn .cycle-profit { font-size: 10px; }
|
||||
.cycle-btn .cycle-time { font-size: 14px; }
|
||||
|
||||
.amount-input-wrapper .form-control {
|
||||
height: 45px;
|
||||
font-size: 16px;
|
||||
height: 50px;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
.quick-amounts .btn {
|
||||
height: 35px;
|
||||
height: 40px;
|
||||
font-size: 12px;
|
||||
padding: 0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.order-form-container .btn {
|
||||
height: 55px;
|
||||
border-radius: 15px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.input-wrapper {
|
||||
border-radius: 12px !important;
|
||||
height: 50px !important;
|
||||
}
|
||||
|
||||
/* Mobile Chart Toolbar */
|
||||
.mobile-chart-toolbar {
|
||||
background: #161a1e;
|
||||
border-bottom: 1px solid var(--term-border);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.toolbar-scroll {
|
||||
display: flex;
|
||||
overflow-x: auto;
|
||||
padding: 8px 10px;
|
||||
gap: 8px;
|
||||
scrollbar-width: none;
|
||||
}
|
||||
.toolbar-scroll::-webkit-scrollbar { display: none; }
|
||||
|
||||
.toolbar-item {
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: var(--term-muted);
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.toolbar-item.active {
|
||||
color: #fff;
|
||||
background: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.toolbar-divider {
|
||||
width: 1px;
|
||||
height: 15px;
|
||||
background: var(--term-border);
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.toolbar-tabs {
|
||||
display: flex;
|
||||
border-top: 1px solid var(--term-border);
|
||||
}
|
||||
.tab-item {
|
||||
flex: 1;
|
||||
background: transparent;
|
||||
border: none;
|
||||
color: var(--term-muted);
|
||||
font-size: 13px;
|
||||
font-weight: 700;
|
||||
padding: 10px;
|
||||
border-bottom: 2px solid transparent;
|
||||
}
|
||||
.tab-item.active {
|
||||
color: var(--term-primary);
|
||||
border-bottom-color: var(--term-primary);
|
||||
background: rgba(0, 98, 255, 0.05);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
assets/pasted-20260218-123410-15ddfb21.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/pasted-20260218-124429-13ea957c.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
assets/pasted-20260218-125419-34c315c6.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
assets/pasted-20260218-131510-4a5b8fc3.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
assets/pasted-20260218-132532-9efdb3e6.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
assets/pasted-20260218-133815-06e0d484.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
assets/pasted-20260218-134814-1beb4a1a.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
@ -49,7 +49,7 @@ include __DIR__ . '/../includes/header.php';
|
||||
<path d="M2 12L12 17L22 12" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="logo-text fs-1 ms-2" style="letter-spacing: 2px;">BYRO</span>
|
||||
<span class="logo-text fs-1 ms-2" style="letter-spacing: 2px;"><?= $lang === 'zh' ? '数字交易' : 'BYRO' ?></span>
|
||||
</div>
|
||||
<h2 class="fw-bold text-white mb-2"><?= __('login') ?></h2>
|
||||
<p class="text-muted"><?= __('welcome_back') ?></p>
|
||||
@ -64,7 +64,7 @@ include __DIR__ . '/../includes/header.php';
|
||||
<form method="POST">
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-muted small fw-bold"><?= __('account') ?></label>
|
||||
<input type="text" name="account" class="form-control bg-black border-secondary text-white py-3 px-4 rounded-4" style="background: #0b0e11 !important; border-color: #2b3139 !important;" required>
|
||||
<input type="text" name="account" class="form-control bg-black border-secondary text-white py-3 px-4 rounded-4" style="background: #0b0e11 !important; border-color: #2b3139 !important;" placeholder="<?= __('account') ?>" required>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
@ -72,7 +72,7 @@ include __DIR__ . '/../includes/header.php';
|
||||
<label class="form-label text-muted small fw-bold"><?= __('password') ?></label>
|
||||
<a href="#" class="small text-primary text-decoration-none"><?= __('forgot_password') ?></a>
|
||||
</div>
|
||||
<input type="password" name="password" class="form-control bg-black border-secondary text-white py-3 px-4 rounded-4" style="background: #0b0e11 !important; border-color: #2b3139 !important;" required>
|
||||
<input type="password" name="password" class="form-control bg-black border-secondary text-white py-3 px-4 rounded-4" style="background: #0b0e11 !important; border-color: #2b3139 !important;" placeholder="<?= __('password') ?>" required>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100 py-3 fw-bold rounded-pill mb-4 shadow-primary"><?= __('login') ?></button>
|
||||
|
||||
@ -91,7 +91,9 @@ if (isset($_GET['action']) && $_GET['action'] === 'send_code') {
|
||||
$_SESSION['email_code'] = $code;
|
||||
|
||||
require_once __DIR__ . '/../mail/MailService.php';
|
||||
$res = MailService::sendMail($email, (__('verification_code') . ' - Byro Registration'), (__('verification_code') . ": $code"), "Your verification code is: $code");
|
||||
$subject = __('verification_code') . ' - ' . __('register');
|
||||
$content = __('verification_code') . ": $code";
|
||||
$res = MailService::sendMail($email, $subject, $content, $content);
|
||||
|
||||
echo json_encode(['success' => true]);
|
||||
exit;
|
||||
@ -175,7 +177,7 @@ include __DIR__ . '/../includes/header.php';
|
||||
<path d="M2 12L12 17L22 12" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="logo-text fs-1 ms-3">BYRO</span>
|
||||
<span class="logo-text fs-1 ms-3"><?= $lang === 'zh' ? '数字交易' : 'BYRO' ?></span>
|
||||
</div>
|
||||
<h2 class="fw-bold text-white mb-2" style="font-size: 28px;"><?= __('register') ?></h2>
|
||||
<p class="text-muted" style="font-size: 15px;"><?= __('join_secure') ?></p>
|
||||
@ -253,7 +255,7 @@ function setRegType(type) {
|
||||
|
||||
if (type === 'email') {
|
||||
label.innerText = '<?= __('email') ?>';
|
||||
input.placeholder = 'example@mail.com';
|
||||
input.placeholder = '<?= __('email_placeholder') ?>';
|
||||
input.type = 'email';
|
||||
if (verifyLabel) verifyLabel.innerText = '<?= __('email_verify') ?>';
|
||||
} else {
|
||||
|
||||
10
fees.php
@ -20,25 +20,25 @@ require_once __DIR__ . '/includes/header.php';
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>VIP 0 (<?= __('regular') ?>)</td>
|
||||
<td><?= __('level') ?> 0 (<?= __('regular') ?>)</td>
|
||||
<td>< $10,000</td>
|
||||
<td>0.100%</td>
|
||||
<td>0.100%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 1</td>
|
||||
<td><?= __('level') ?> 1</td>
|
||||
<td>≥ $10,000</td>
|
||||
<td>0.080%</td>
|
||||
<td>0.090%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 2</td>
|
||||
<td><?= __('level') ?> 2</td>
|
||||
<td>≥ $100,000</td>
|
||||
<td>0.060%</td>
|
||||
<td>0.080%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 3</td>
|
||||
<td><?= __('level') ?> 3</td>
|
||||
<td>≥ $500,000</td>
|
||||
<td>0.040%</td>
|
||||
<td>0.070%</td>
|
||||
@ -64,7 +64,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<td>0.050%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>VIP 1</td>
|
||||
<td><?= __('level') ?> 1</td>
|
||||
<td>0.015%</td>
|
||||
<td>0.045%</td>
|
||||
</tr>
|
||||
|
||||
28
help.php
@ -5,9 +5,9 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<main class="container py-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="display-5 fw-bold mb-3"><?php echo __('help'); ?></h1>
|
||||
<p class="text-muted">Search for articles or browse categories below.</p>
|
||||
<p class="text-muted"><?= __('help_subtitle') ?></p>
|
||||
<div class="input-group mb-3 mx-auto" style="max-width: 600px;">
|
||||
<input type="text" class="form-control form-control-lg bg-dark text-white border-secondary" placeholder="How can we help you?">
|
||||
<input type="text" class="form-control form-control-lg bg-dark text-white border-secondary" placeholder="<?= __('help_search_placeholder') ?>">
|
||||
<button class="btn btn-primary px-4"><i class="bi bi-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
@ -16,48 +16,48 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-person-plus fs-1 text-primary mb-3"></i>
|
||||
<h4 class="fw-bold">Getting Started</h4>
|
||||
<p class="text-muted small">Learn how to create an account, verify your identity, and secure your funds.</p>
|
||||
<h4 class="fw-bold"><?= __('getting_started') ?></h4>
|
||||
<p class="text-muted small"><?= __('getting_started_desc') ?></p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-wallet2 fs-1 text-success mb-3"></i>
|
||||
<h4 class="fw-bold">Deposits & Withdrawals</h4>
|
||||
<p class="text-muted small">Everything you need to know about moving assets in and out of Byro.</p>
|
||||
<h4 class="fw-bold"><?= __('dep_with_title') ?></h4>
|
||||
<p class="text-muted small"><?= __('dep_with_desc') ?></p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-graph-up-arrow fs-1 text-info mb-3"></i>
|
||||
<h4 class="fw-bold">Trading Tutorials</h4>
|
||||
<p class="text-muted small">Master spot, contract, and binary options trading with our guides.</p>
|
||||
<h4 class="fw-bold"><?= __('trading_tutorials') ?></h4>
|
||||
<p class="text-muted small"><?= __('trading_tutorials_desc') ?></p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-shield-lock fs-1 text-warning mb-3"></i>
|
||||
<h4 class="fw-bold">Security & Account</h4>
|
||||
<p class="text-muted small">Troubleshoot login issues, 2FA, and manage your account settings.</p>
|
||||
<h4 class="fw-bold"><?= __('sec_acc_title') ?></h4>
|
||||
<p class="text-muted small"><?= __('sec_acc_desc') ?></p>
|
||||
<a href="#" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-cpu fs-1 text-danger mb-3"></i>
|
||||
<h4 class="fw-bold">API Documentation</h4>
|
||||
<p class="text-muted small">Integrate Byro trading features into your own applications.</p>
|
||||
<h4 class="fw-bold"><?= __('api_doc_title') ?></h4>
|
||||
<p class="text-muted small"><?= __('api_doc_desc') ?></p>
|
||||
<a href="/api.php" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="card bg-dark border-secondary h-100 p-4 text-center hover-up">
|
||||
<i class="bi bi-chat-dots fs-1 text-light mb-3"></i>
|
||||
<h4 class="fw-bold">Contact Support</h4>
|
||||
<p class="text-muted small">Can't find what you're looking for? Reach out to our 24/7 team.</p>
|
||||
<h4 class="fw-bold"><?= __('contact_sup_title') ?></h4>
|
||||
<p class="text-muted small"><?= __('contact_sup_desc') ?></p>
|
||||
<a href="/support.php" class="stretched-link"></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
</svg>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<span class="logo-text"><?= $site_name ?></span>
|
||||
<span class="logo-text"><?= $lang === 'zh' ? '数字交易' : $site_name ?></span>
|
||||
</div>
|
||||
<p class="text-muted small mb-4">
|
||||
<?= __('footer_desc') ?>
|
||||
@ -232,7 +232,7 @@ csFileInput.addEventListener('change', async () => {
|
||||
if (data.success) {
|
||||
// Success
|
||||
} else {
|
||||
alert(data.error || 'Upload failed');
|
||||
alert(data.error || '<?= __("send_failed") ?>');
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Upload error:', err);
|
||||
|
||||
@ -340,7 +340,7 @@ if (!function_exists('getSetting')) {
|
||||
</svg>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<span class="logo-text" style="letter-spacing: 1px;"><?= strtoupper($site_name) ?></span>
|
||||
<span class="logo-text" style="letter-spacing: 1px;"><?= $lang === 'zh' ? '数字交易' : strtoupper($site_name) ?></span>
|
||||
</a>
|
||||
<nav>
|
||||
<a href="/"><?= __('home') ?></a>
|
||||
@ -403,7 +403,7 @@ if (!function_exists('getSetting')) {
|
||||
?>
|
||||
<div class="stat-item">
|
||||
<span class="stat-label"><?= __('assets') ?></span>
|
||||
<span class="stat-value"><?= number_format($bal['available'] ?? 0, 2) ?> USDT</span>
|
||||
<span class="stat-value"><?= number_format($bal['available'] ?? 0, 2) ?> <?= __('USDT') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dropdown-links">
|
||||
|
||||
@ -30,13 +30,13 @@ $translations = [
|
||||
'help' => '帮助中心',
|
||||
'privacy' => '法律与隐私',
|
||||
'submit_request' => '提交请求',
|
||||
'api_doc' => 'API文档',
|
||||
'api_doc' => '接口文档',
|
||||
'fee_structure' => '费率标准',
|
||||
'app_download' => 'APP下载',
|
||||
'app_download' => '应用下载',
|
||||
'system_status' => '系统状态',
|
||||
'normal' => '正常',
|
||||
'cookie_policy' => 'Cookie 政策',
|
||||
'platform_advantage' => '为什么选择 Byro',
|
||||
'cookie_policy' => '隐私政策',
|
||||
'platform_advantage' => '为什么选择数字交易',
|
||||
'partners' => '合作伙伴',
|
||||
'deposit' => '充值',
|
||||
'withdraw' => '提现',
|
||||
@ -64,12 +64,12 @@ $translations = [
|
||||
'buy' => '买',
|
||||
'sell' => '卖',
|
||||
'approx' => '约等于',
|
||||
'cookie_policy_title' => 'Cookie 政策',
|
||||
'cookie_policy_content' => '<h3>1. 什么是 Cookie?</h3><p>Cookie 是您访问网站时存储在您的计算机或移动设备上的小文本文件。它们广泛用于使网站运行或更高效地运行,并向网站所有者提供信息。</p>',
|
||||
'recharge_msg_fiat' => "用户ID:%uid% 申请充值金额:%amount% %currency%=%res%USDT",
|
||||
'recharge_msg_crypto' => "用户ID:%uid% 申请充值金额:%amount% USDT (%network%)",
|
||||
'withdraw_msg_fiat' => "用户ID:%uid% 申请提现金额:%amount% USDT=%res% %currency%",
|
||||
'withdraw_msg_crypto' => "用户ID:%uid% 申请提现金额:%amount% USDT (%network%)",
|
||||
'cookie_policy_title' => '隐私政策',
|
||||
'cookie_policy_content' => '<h3>1. 什么是隐私数据?</h3><p>隐私数据是您访问网站时存储在您的计算机或移动设备上的信息。它们广泛用于使网站运行或更高效地运行。</p>',
|
||||
'recharge_msg_fiat' => "用户ID:%uid% 申请充值金额:%amount% %currency%=%res%泰达币",
|
||||
'recharge_msg_crypto' => "用户ID:%uid% 申请充值金额:%amount% 泰达币 (%network%)",
|
||||
'withdraw_msg_fiat' => "用户ID:%uid% 申请提现金额:%amount% 泰达币=%res% %currency%",
|
||||
'withdraw_msg_crypto' => "用户ID:%uid% 申请提现金额:%amount% 泰达币 (%network%)",
|
||||
'select_network' => '选择网络',
|
||||
'address_copied' => '地址已复制',
|
||||
'withdrawal_password_error' => '提现密码错误',
|
||||
@ -78,7 +78,7 @@ $translations = [
|
||||
'withdraw_amount_label' => '提现金额',
|
||||
'i_have_paid' => '我已付款',
|
||||
'enter_amount' => '请输入金额',
|
||||
'crypto_recharge_warning' => '请仅向此地址发送 USDT。发送其他资产可能会导致永久丢失。',
|
||||
'crypto_recharge_warning' => '请仅向此地址发送泰达币。发送其他资产可能会导致永久丢失。',
|
||||
'recharge_steps' => '充值步骤',
|
||||
'security_tips' => '安全提示',
|
||||
'est_receive_fiat' => '预计收到法币',
|
||||
@ -91,14 +91,14 @@ $translations = [
|
||||
'recharge_amount' => '充值金额',
|
||||
'withdraw_amount' => '提现金额',
|
||||
'withdraw_address' => '提现地址',
|
||||
'min_withdraw_hint' => '最小提现金额 10 USDT',
|
||||
'min_withdraw_hint' => '最小提现金额 10 泰达币',
|
||||
'secure' => '安全',
|
||||
'fast' => '极速',
|
||||
'support_247' => '24/7 支持',
|
||||
'support_247' => '全天候支持',
|
||||
'market_name' => '行情',
|
||||
'trading' => '交易',
|
||||
'status_normal' => '系统状态:正常',
|
||||
'copyright' => '© 2023-2026 Byro. 版权所有。',
|
||||
'copyright' => '© 2023-2026 数字交易. 版权所有。',
|
||||
'back' => '返回',
|
||||
'crypto_withdraw' => '加密货币提现',
|
||||
'fiat_withdraw' => '法币提现',
|
||||
@ -107,7 +107,7 @@ $translations = [
|
||||
'select_currency' => '选择币种',
|
||||
'fiat_recharge' => '法币充值',
|
||||
'crypto_recharge' => '加密货币充值',
|
||||
'est_usdt' => '预计 USDT',
|
||||
'est_usdt' => '预计泰达币',
|
||||
'enter_address' => '请输入地址',
|
||||
'enter_password' => '请输入密码',
|
||||
'request_sent' => '请求已发送,请检查聊天。',
|
||||
@ -122,16 +122,16 @@ $translations = [
|
||||
'advantage_1_desc' => '全球合规化运营,冷热钱包隔离。',
|
||||
'advantage_2_title' => '深度流动性',
|
||||
'advantage_2_desc' => '毫秒级撮合引擎,流动性充足。',
|
||||
'advantage_3_title' => '24/7 客服',
|
||||
'advantage_3_title' => '全天候支持',
|
||||
'advantage_3_desc' => '多语言客服全天候在线。',
|
||||
'advantage_4_title' => '多元化产品',
|
||||
'advantage_4_desc' => '涵盖现货、合约、秒合约和挖矿。',
|
||||
'popular_markets' => '热门市场',
|
||||
'view_more' => '更多',
|
||||
'why_choose_us' => '为什么选择我们',
|
||||
'footer_desc' => 'Byro 是全球领先的数字资产交易平台,为个人和机构提供安全、可靠的交易服务。',
|
||||
'footer_desc' => '数字交易是全球领先的数字资产交易平台,为个人和机构提供安全、可靠的交易服务。',
|
||||
'hero_title' => '全球领先的数字资产平台',
|
||||
'hero_subtitle' => '在 Byro 开启您的加密货币之旅,安全、稳定、可靠。',
|
||||
'hero_subtitle' => '在数字交易开启您的加密货币之旅,安全、稳定、可靠。',
|
||||
'get_started' => '立即开启',
|
||||
'account_exists' => '账号已存在或数据库错误',
|
||||
'pwd_mismatch' => '两次输入的密码不一致',
|
||||
@ -183,7 +183,7 @@ $translations = [
|
||||
'high' => '最高',
|
||||
'low' => '最低',
|
||||
'chinese' => '中文',
|
||||
'english' => 'English',
|
||||
'english' => '英文',
|
||||
'qr_code' => '二维码',
|
||||
'bitcoin' => '比特币',
|
||||
'ethereum' => '以太坊',
|
||||
@ -209,8 +209,8 @@ $translations = [
|
||||
'real_name' => '实名认证',
|
||||
'credit_score' => '信用分',
|
||||
'last_price' => '最新价',
|
||||
'change_24h' => '24h 涨跌',
|
||||
'vol_24h' => '24h 成交额',
|
||||
'change_24h' => '24小时涨跌',
|
||||
'vol_24h' => '24小时成交额',
|
||||
'welcome_back' => '欢迎回来',
|
||||
'forgot_password' => '忘记密码?',
|
||||
'no_account' => '没有账号?',
|
||||
@ -246,7 +246,7 @@ $translations = [
|
||||
'kyc_instructions' => '请确保上传的照片清晰可见,光线充足,不要遮挡关键信息。认证成功后将无法修改,请务必填写真实信息。',
|
||||
'online_support' => '在线客服',
|
||||
'type_message' => '输入消息...',
|
||||
'welcome_support' => '欢迎来到 Byro 支持中心!有什么可以帮您的?',
|
||||
'welcome_support' => '欢迎来到数字交易支持中心!有什么可以帮您的?',
|
||||
'mining_desc' => '专业的云挖矿和质押平台,加入成千上万的用户。',
|
||||
'mining_pool' => '矿池',
|
||||
'day' => '天',
|
||||
@ -256,9 +256,9 @@ $translations = [
|
||||
'lock_period' => '锁定周期',
|
||||
'principal_protected' => '本金保障',
|
||||
'daily_payouts' => '每日派息',
|
||||
'why_mining' => '为什么选择 Byro 挖矿?',
|
||||
'why_mining' => '为什么选择数字交易挖矿?',
|
||||
'adv_hardware' => '先进硬件',
|
||||
'adv_hardware_desc' => '我们使用最新的 ASIC 和 GPU 矿机,最大化收益。',
|
||||
'adv_hardware_desc' => '我们使用最新的矿机,最大化收益。',
|
||||
'auto_compound' => '自动复利',
|
||||
'auto_compound_desc' => '每日收益自动再投资。',
|
||||
'real_time_monitor' => '实时监控',
|
||||
@ -269,23 +269,23 @@ $translations = [
|
||||
'daily_profit' => '每日利润',
|
||||
'monthly_profit' => '每月利润',
|
||||
'try_calc' => '开始计算',
|
||||
'app_desc' => '随时随地进行交易。通过 Byro 移动应用掌控您的数字资产。',
|
||||
'app_desc' => '随时随地进行交易。通过数字交易移动应用掌控您的数字资产。',
|
||||
'download_on' => '下载于',
|
||||
'get_it_on' => '立即获取',
|
||||
'scan_download' => '扫码下载',
|
||||
'real_time_alerts' => '实时行情推送',
|
||||
'full_trading_features' => '全功能交易体验',
|
||||
'two_fa_security' => '2FA 安全保障',
|
||||
'two_fa_security' => '双重身份验证',
|
||||
'live_chat_247' => '24/7 在线客服',
|
||||
'our_mission' => '我们的使命',
|
||||
'mission_content' => '让数字资产交易对每个人、每个地方都变得触手可及、安全且直观。我们相信区块链的力量能够改变全球金融格局。',
|
||||
'global_presence' => '全球业务',
|
||||
'presence_content' => 'Byro 在新加坡、伦敦和东京设有办事处,服务于多元化的全球社区。我们符合国际标准,并优先考虑用户资产的安全。',
|
||||
'presence_content' => '数字交易在新加坡、伦敦和东京设有办事处,服务于多元化的全球社区。我们符合国际标准,并优先考虑用户资产的安全。',
|
||||
'users' => '用户',
|
||||
'countries' => '国家',
|
||||
'daily_volume' => '每日交易量',
|
||||
'about_content' => 'Byro 是成立于 2023 年的全球领先数字货币交易所。',
|
||||
'news_content' => '获取 Byro 的最新动态、上市公告和市场洞察。',
|
||||
'about_content' => '数字交易是成立于 2023 年的全球领先数字货币交易所。',
|
||||
'news_content' => '获取数字交易的最新动态、上市公告和市场洞察。',
|
||||
'announcement' => '公告',
|
||||
'read_more' => '阅读更多',
|
||||
'newsletter' => '新闻通讯',
|
||||
@ -295,18 +295,18 @@ $translations = [
|
||||
'popular_topics' => '热门话题',
|
||||
'effective_date' => '生效日期:2026年2月16日',
|
||||
'tos_1_title' => '1. 接受条款',
|
||||
'tos_1_content' => '通过访问或使用 Byro 平台,您同意受这些服务条款的约束。如果您不同意这些条款,请不要使用我们的服务。',
|
||||
'tos_1_content' => '通过访问或使用数字交易平台,您同意受这些服务条款的约束。如果您不同意这些条款,请不要使用我们的服务。',
|
||||
'tos_2_title' => '2. 资格',
|
||||
'tos_2_content' => '您必须年满 18 岁,并具有签订约束协议的法律能力,才能使用我们的平台。您有责任确保您对 Byro 的使用符合所有当地法律法规。',
|
||||
'tos_2_content' => '您必须年满 18 岁,并具有签订约束协议的法律能力,才能使用我们的平台。您有责任确保您对数字交易的使用符合所有当地法律法规。',
|
||||
'tos_3_title' => '3. 账户安全',
|
||||
'tos_3_content' => '您有责任维护您的账户凭据的机密性,并对在您的账户下发生的所有活动负责。您同意立即通知 Byro 任何未经授权使用您账户的情况。',
|
||||
'tos_3_content' => '您有责任维护您的账户凭据的机密性,并对在您的账户下发生的所有活动负责。您同意立即通知数字交易任何未经授权使用您账户的情况。',
|
||||
'tos_4_title' => '4. 交易风险',
|
||||
'tos_4_content' => '数字资产交易涉及重大风险。价格波动剧烈,您可能会损失全部投资。Byro 不提供财务建议。',
|
||||
'tos_4_content' => '数字资产交易涉及重大风险。价格波动剧烈,您可能会损失全部投资。数字交易不提供财务建议。',
|
||||
'tos_5_title' => '5. 终止',
|
||||
'tos_5_content' => 'Byro 保留随时因任何原因(包括违反这些条款)暂停或终止您的账户的权利。',
|
||||
'tos_5_content' => '数字交易保留随时因任何原因(包括违反这些条款)暂停或终止您的账户的权利。',
|
||||
'last_updated' => '最后更新:2026年2月16日',
|
||||
'privacy_1_title' => '引言',
|
||||
'privacy_1_content' => 'Byro(“我们”或“我们的”)尊重您的隐私,并致力于保护您的个人数据。本隐私政策告知您当您访问我们的网站时,我们如何处理您的个人数据。',
|
||||
'privacy_1_content' => '数字交易(“我们”或“我们的”)尊重您的隐私,并致力于保护您的个人数据。本隐私政策告知您当您访问我们的网站时,我们如何处理您的个人数据。',
|
||||
'privacy_2_title' => '我们收集的数据',
|
||||
'privacy_2_content' => '我们可能会收集、使用、存储和传输有关您的不同种类的个人数据,包括身份数据、联系数据、财务数据和技术数据。',
|
||||
'privacy_3_title' => '我们如何使用您的数据',
|
||||
@ -330,12 +330,12 @@ $translations = [
|
||||
'api_market_data' => '行情数据',
|
||||
'api_trade_endpoints' => '交易接口',
|
||||
'api_errors' => '错误代码',
|
||||
'api_intro_desc' => '欢迎使用 Byro API。我们的 API 允许您以编程方式访问市场数据、管理您的账户并执行交易。我们使用带有 JSON 响应的 RESTful 架构。',
|
||||
'api_auth_desc' => '所有私有接口都需要 API 密钥身份验证。您可以在账户个人资料设置中生成 API 密钥。',
|
||||
'api_intro_desc' => '欢迎使用接口。我们的接口允许您以编程方式访问市场数据、管理您的账户并执行交易。我们使用先进的架构确保稳定性。',
|
||||
'api_auth_desc' => '所有私有接口都需要密钥身份验证。您可以在账户个人资料设置中生成密钥。',
|
||||
'api_get_ticker' => '获取行情',
|
||||
'api_get_ticker_desc' => '返回指定交易对的最新价格和 24 小时成交量。',
|
||||
'api_place_order' => '下单',
|
||||
'api_payload_example' => '载荷示例:',
|
||||
'api_payload_example' => '数据示例:',
|
||||
'tier' => '等级',
|
||||
'trading_vol_30d' => '30天交易量',
|
||||
'maker_fee' => '挂单费',
|
||||
@ -385,16 +385,16 @@ $translations = [
|
||||
'lost' => '亏损',
|
||||
'rejected' => '已拒绝',
|
||||
'cancelled' => '已取消',
|
||||
'app_store' => 'App Store',
|
||||
'google_play' => 'Google Play',
|
||||
'android_apk' => 'Android APK',
|
||||
'ios_install' => 'iOS 安装',
|
||||
'app_store' => '苹果商店',
|
||||
'google_play' => '谷歌商店',
|
||||
'android_apk' => '安卓应用',
|
||||
'ios_install' => '苹果安装',
|
||||
'sec_contract_desc' => '预测涨跌,秒级结算',
|
||||
'mining_pool_desc' => '矿池算力挖矿,高收益',
|
||||
'trading_experience' => '极速交易体验',
|
||||
'security_protection' => '全方位安全防护',
|
||||
'support_anywhere' => '随时随地,随心交易',
|
||||
'scan_to_download_app' => '扫描二维码下载 APP',
|
||||
'scan_to_download_app' => '扫描二维码下载应用',
|
||||
'open_orders' => '当前委托',
|
||||
'settlement_history' => '历史记录',
|
||||
'details' => '详情',
|
||||
@ -407,22 +407,116 @@ $translations = [
|
||||
'pos_closed' => '仓位已关闭',
|
||||
'quantity' => '数量',
|
||||
'level' => '等级',
|
||||
'vip_level' => 'VIP 等级',
|
||||
'vip_level' => '会员等级',
|
||||
'current_level' => '当前等级',
|
||||
'upgrade_progress' => '升级进度',
|
||||
'recharge_to_upgrade' => '再充值 %amount% USDT 升级到 VIP %level%',
|
||||
'recharge_to_upgrade' => '再充值 %amount% 泰达币 升级到 %level% 级会员',
|
||||
'vol_unit' => '亿',
|
||||
'market_stats' => '行情统计',
|
||||
'highest_level' => '已达最高等级',
|
||||
'no_records' => '暂无记录',
|
||||
'order_details' => '订单详情',
|
||||
'copy' => '复制',
|
||||
'scan_qr_to_download' => '扫描二维码安装 APP',
|
||||
'download_ios' => 'iOS 下载',
|
||||
'download_android' => 'Android 下载',
|
||||
'download_apk' => 'APK 下载',
|
||||
'scan_qr_to_download' => '扫描二维码安装应用',
|
||||
'download_ios' => '苹果下载',
|
||||
'download_android' => '安卓下载',
|
||||
'download_apk' => '应用下载',
|
||||
'features' => '功能特点',
|
||||
'app_mockup_desc' => '专业的数字资产管理,随时随地掌握行情',
|
||||
'getting_started' => '从这里开始',
|
||||
'getting_started_desc' => '了解如何创建账户、验证身份并保障资金安全。',
|
||||
'dep_with_title' => '充值与提现',
|
||||
'dep_with_desc' => '关于资产进出平台的一切须知。',
|
||||
'trading_tutorials' => '交易教程',
|
||||
'trading_tutorials_desc' => 'Master master Master 现货、合约和秒合约交易。',
|
||||
'sec_acc_title' => '安全与账户',
|
||||
'sec_acc_desc' => '解决登录问题、双重验证并管理您的账户设置。',
|
||||
'api_doc_title' => '接口文档',
|
||||
'api_doc_desc' => '将交易功能集成到您自己的应用程序中。',
|
||||
'contact_sup_title' => '联系客服',
|
||||
'contact_sup_desc' => '找不到您要找的内容?联系我们的 24/7 团队。',
|
||||
'help_search_placeholder' => '我们能为您提供什么帮助?',
|
||||
'help_subtitle' => '在下面搜索文章或浏览类别。',
|
||||
'news_title_1' => '上线新交易对:阿比特伦/泰达币 和 乐观/泰达币',
|
||||
'news_title_2' => '关于系统升级维护的通知',
|
||||
'news_title_3' => '启动 2026 全球合作伙伴计划',
|
||||
'news_title_4' => '关于加强账户安全验证的提醒',
|
||||
'news_title_5' => '新币上线:LayerZero 即将登陆',
|
||||
'news_desc_1' => '我们很高兴地宣布,我们将上线阿比特伦和乐观现货交易。',
|
||||
'news_desc_2' => '为了提供更好的交易体验,我们将于本周末进行系统维护。',
|
||||
'news_desc_3' => '加入我们,共同构建全球领先的数字资产交易生态。',
|
||||
'news_desc_4' => '保障您的资金安全是我们的首要任务,请务必开启双重验证。',
|
||||
'news_desc_5' => '新币现货交易即将开启,敬请期待。',
|
||||
'news_meta' => '2026年2月14日 • 5分钟阅读',
|
||||
'price' => '价格',
|
||||
'from' => '从',
|
||||
'to' => '到',
|
||||
'rate' => '汇率',
|
||||
'price_impact' => '价格影响',
|
||||
'slippage' => '滑点',
|
||||
'order_records' => '下单记录',
|
||||
'recharge_records' => '充值记录',
|
||||
'withdrawal_records' => '提现记录',
|
||||
'unauthorized' => '未授权',
|
||||
'account_frozen' => '账号已冻结',
|
||||
'invalid_amount' => '无效金额',
|
||||
'start_mining' => '开始挖矿',
|
||||
'swap_now' => '立即兑换',
|
||||
'login_password' => '登录密码',
|
||||
'old_password' => '原密码',
|
||||
'new_password' => '新密码',
|
||||
'confirm_new_password' => '确认新密码',
|
||||
'change_password' => '修改密码',
|
||||
'trade_password' => '交易密码',
|
||||
'set_password' => '设置密码',
|
||||
'security_steps' => '安全提示',
|
||||
'security_step1' => '为了您的资产安全,请定期更换登录密码。',
|
||||
'security_step2' => '交易密码用于提现 and and and 重要交易确认,请务必妥善保管。',
|
||||
'security_instructions' => '系统采用银行级加密技术,多重验证保护您的账户安全。',
|
||||
'old_pwd_incorrect' => '原密码不正确',
|
||||
'pwd_too_short' => '密码长度至少为 6 位',
|
||||
'pwd_changed_success' => '密码修改成功',
|
||||
'trade_pwd_updated' => '交易密码设置成功',
|
||||
'indicators' => '指标',
|
||||
'chart' => '图表',
|
||||
'depth' => '深度',
|
||||
'kline' => 'K线',
|
||||
'time_fs' => '分时',
|
||||
'time_1m' => '1分',
|
||||
'time_5m' => '5分',
|
||||
'time_15m' => '15分',
|
||||
'time_30m' => '30分',
|
||||
'time_1h' => '1时',
|
||||
'time_4h' => '4时',
|
||||
'time_1d' => '1天',
|
||||
'time_1w' => '1周',
|
||||
'BTC' => '比特币',
|
||||
'ETH' => '以太坊',
|
||||
'USDT' => '泰达币',
|
||||
'BNB' => '币安币',
|
||||
'SOL' => '索拉纳',
|
||||
'XRP' => '瑞波币',
|
||||
'ADA' => '卡尔达诺',
|
||||
'DOGE' => '狗狗币',
|
||||
'DOT' => '波卡',
|
||||
'MATIC' => '多边形',
|
||||
'AVAX' => '雪崩',
|
||||
'LINK' => '链连',
|
||||
'SHIB' => '柴犬币',
|
||||
'TRX' => '波场',
|
||||
'BCH' => '比特币现金',
|
||||
'LTC' => '莱特币',
|
||||
'UNI' => '独角兽',
|
||||
'ARB' => '阿比特伦',
|
||||
'OP' => '乐观',
|
||||
'APT' => '阿普托斯',
|
||||
'USDC' => '美元稳定币',
|
||||
'PEPE' => '佩佩币',
|
||||
'FIL' => '文件币',
|
||||
'NEAR' => '协议币',
|
||||
'ATOM' => '宇宙币',
|
||||
'IMX' => '不可变币',
|
||||
'KAS' => '卡斯帕币',
|
||||
],
|
||||
'en' => [
|
||||
'home' => 'Home',
|
||||
@ -462,153 +556,310 @@ $translations = [
|
||||
'agree_terms_error' => 'Please agree to terms',
|
||||
'mobile_verify' => 'Mobile Code',
|
||||
'email_verify' => 'Email Code',
|
||||
'password' => 'Password',
|
||||
'confirm_password' => 'Confirm Password',
|
||||
'agree_terms' => 'I have read and agree to the Terms of Service and Privacy Policy',
|
||||
'send_code' => 'Send Code',
|
||||
'view_more' => 'View More',
|
||||
'hero_title' => 'World Leading Digital Asset Platform',
|
||||
'hero_subtitle' => 'Start your crypto journey on Byro, secure, stable, reliable.',
|
||||
'get_started' => 'Get Started',
|
||||
'account_exists' => 'Account already exists or database error',
|
||||
'pwd_mismatch' => 'Passwords do not match',
|
||||
'join_secure' => 'Join the world leading exchange',
|
||||
'have_account' => 'Already have an account?',
|
||||
'vip_level' => 'VIP Level',
|
||||
'kyc' => 'KYC Verification',
|
||||
'security' => 'Security Center',
|
||||
'popular_markets' => 'Popular Markets',
|
||||
'approved' => 'Approved',
|
||||
'rejected' => 'Rejected',
|
||||
'login_admin_error' => 'Admin please login via backend',
|
||||
'fill_full_info' => 'Please fill in full info',
|
||||
'verification_code' => 'Verification Code',
|
||||
'agree_tos_privacy' => 'I have read and agree to the Terms of Service and Privacy Policy',
|
||||
'register_now' => 'Register Now',
|
||||
'resend' => 'Resend',
|
||||
'send_failed' => 'Send Failed',
|
||||
'invalid_email' => 'Invalid Email',
|
||||
'congrats_won' => 'Congrats, you won',
|
||||
'sorry_lost' => 'Sorry, you lost',
|
||||
'trade_won' => 'Trade Profit',
|
||||
'trade_lost' => 'Trade Loss',
|
||||
'confirm' => 'Confirm',
|
||||
'buy' => 'Buy',
|
||||
'sell' => 'Sell',
|
||||
'approx' => 'Approx.',
|
||||
'cookie_policy_title' => 'Cookie Policy',
|
||||
'cookie_policy_content' => '<h3>1. What are Cookies?</h3><p>Cookies are small text files stored on your device when you visit a website. They are used to make websites work efficiently.</p>',
|
||||
'recharge_msg_fiat' => "UID: %uid% Request Recharge: %amount% %currency%=%res%USDT",
|
||||
'recharge_msg_crypto' => "UID: %uid% Request Recharge: %amount% USDT (%network%)",
|
||||
'withdraw_msg_fiat' => "UID: %uid% Request Withdraw: %amount% USDT=%res% %currency%",
|
||||
'withdraw_msg_crypto' => "UID: %uid% Request Withdraw: %amount% USDT (%network%)",
|
||||
'select_network' => 'Select Network',
|
||||
'address_copied' => 'Address Copied',
|
||||
'withdrawal_password_error' => 'Withdrawal Password Error',
|
||||
'withdraw_pwd_placeholder' => 'Enter withdrawal password',
|
||||
'recharge_amount_label' => 'Recharge Amount',
|
||||
'withdraw_amount_label' => 'Withdraw Amount',
|
||||
'i_have_paid' => 'I Have Paid',
|
||||
'enter_amount' => 'Enter Amount',
|
||||
'crypto_recharge_warning' => 'Please only send USDT to this address. Sending other assets may result in permanent loss.',
|
||||
'recharge_steps' => 'Recharge Steps',
|
||||
'security_tips' => 'Security Tips',
|
||||
'est_receive_fiat' => 'Est. Receive Fiat',
|
||||
'withdraw_steps' => 'Withdraw Steps',
|
||||
'withdraw_password' => 'Withdraw Password',
|
||||
'coin' => 'Coin',
|
||||
'address' => 'Address',
|
||||
'network' => 'Network',
|
||||
'fiat_amount' => 'Fiat Amount',
|
||||
'recharge_amount' => 'Recharge Amount',
|
||||
'withdraw_amount' => 'Withdraw Amount',
|
||||
'withdraw_address' => 'Withdraw Address',
|
||||
'min_withdraw_hint' => 'Min. Withdraw 10 USDT',
|
||||
'secure' => 'Secure',
|
||||
'fast' => 'Fast',
|
||||
'support_247' => '24/7 Support',
|
||||
'market_name' => 'Market',
|
||||
'trading' => 'Trading',
|
||||
'status_normal' => 'System Status: Normal',
|
||||
'copyright' => '© 2023-2026 Byro. All rights reserved.',
|
||||
'back' => 'Back',
|
||||
'crypto_withdraw' => 'Crypto Withdraw',
|
||||
'fiat_withdraw' => 'Fiat Withdraw',
|
||||
'to_receive' => 'To Receive',
|
||||
'confirm_order' => 'Confirm Order',
|
||||
'select_currency' => 'Select Currency',
|
||||
'fiat_recharge' => 'Fiat Recharge',
|
||||
'crypto_recharge' => 'Crypto Recharge',
|
||||
'est_usdt' => 'Est. USDT',
|
||||
'enter_address' => 'Enter Address',
|
||||
'enter_password' => 'Enter Password',
|
||||
'request_sent' => 'Request sent, please check chat.',
|
||||
'cs_connect_fail' => 'Connect fail, please refresh.',
|
||||
'copy_success' => 'Copy Success',
|
||||
'market_view' => 'Market View',
|
||||
'prof_terminal' => 'Prof. Terminal',
|
||||
'prof_terminal_desc' => 'High performance trading engine.',
|
||||
'inst_security' => 'Inst. Security',
|
||||
'inst_security_desc' => 'Multi-layer encryption.',
|
||||
'advantage_1_title' => 'Compliance',
|
||||
'advantage_1_desc' => 'Global compliant operations.',
|
||||
'advantage_2_title' => 'Liquidity',
|
||||
'advantage_2_desc' => 'Deep liquidity.',
|
||||
'advantage_3_title' => '24/7 Support',
|
||||
'advantage_3_desc' => 'Multi-language support.',
|
||||
'advantage_4_title' => 'Diverse Products',
|
||||
'advantage_4_desc' => 'Covering Spot, Contract, etc.',
|
||||
'popular_markets' => 'Popular Markets',
|
||||
'view_more' => 'View More',
|
||||
'why_choose_us' => 'Why Choose Us',
|
||||
'footer_desc' => 'Byro is a leading digital asset platform.',
|
||||
'hero_title' => 'Leading Digital Asset Platform',
|
||||
'hero_subtitle' => 'Start your crypto journey with Byro.',
|
||||
'get_started' => 'Get Started',
|
||||
'account_exists' => 'Account exists or error',
|
||||
'pwd_mismatch' => 'Passwords mismatch',
|
||||
'join_secure' => 'Join the leading platform',
|
||||
'have_account' => 'Have an account?',
|
||||
'usd_name' => 'USD',
|
||||
'eur_name' => 'EUR',
|
||||
'gbp_name' => 'GBP',
|
||||
'cny_name' => 'CNY',
|
||||
'jpy_name' => 'JPY',
|
||||
'krw_name' => 'KRW',
|
||||
'hkd_name' => 'HKD',
|
||||
'twd_name' => 'TWD',
|
||||
'sgd_name' => 'SGD',
|
||||
'myr_name' => 'MYR',
|
||||
'thb_name' => 'THB',
|
||||
'vnd_name' => 'VND',
|
||||
'recharge_step1' => 'Select coin and network.',
|
||||
'recharge_step2' => 'Copy address or scan QR.',
|
||||
'recharge_step3' => 'Wait for network confirmation.',
|
||||
'recharge_step4' => 'Contact support for help.',
|
||||
'recharge_tip1' => 'Check network carefully.',
|
||||
'recharge_tip2' => 'Keep your vouchers safe.',
|
||||
'recharge_tip3' => 'Never share your info.',
|
||||
'recharge_tip4' => 'Auto-arrival, peak delay possible.',
|
||||
'withdraw_step1' => 'Select coin and enter address.',
|
||||
'withdraw_step2' => 'Enter amount.',
|
||||
'withdraw_step3' => 'Confirm fee and submit.',
|
||||
'withdraw_step4' => 'Finance will process soon.',
|
||||
'withdraw_tip1' => 'Check address carefully.',
|
||||
'withdraw_tip2' => 'Wrong address is non-recoverable.',
|
||||
'withdraw_tip3' => 'Cannot withdraw after submit.',
|
||||
'withdraw_tip4' => 'Contact 24/7 support for delay.',
|
||||
'withdraw_fee' => 'Fee',
|
||||
'unit_seconds' => 's',
|
||||
'trading_pair' => 'Trading Pair',
|
||||
'leverage' => 'Leverage',
|
||||
'buy_long' => 'Buy/Long',
|
||||
'buy_price' => 'Buy Price',
|
||||
'sell_short' => 'Sell/Short',
|
||||
'sell_price' => 'Sell Price',
|
||||
'long' => 'Long',
|
||||
'short' => 'Short',
|
||||
'close' => 'Close',
|
||||
'settling' => 'Settling...',
|
||||
'amount_limit_error' => 'Amount limit (%min% - %max%)',
|
||||
'settlement_price' => 'Settle Price',
|
||||
'warning' => 'Warning',
|
||||
'high' => 'High',
|
||||
'low' => 'Low',
|
||||
'chinese' => 'Chinese',
|
||||
'english' => 'English',
|
||||
'qr_code' => 'QR Code',
|
||||
'password' => 'Password',
|
||||
'mobile_number' => 'Mobile Number',
|
||||
'confirm_password' => 'Confirm Password',
|
||||
'send_code' => 'Send Code',
|
||||
'email' => 'Email',
|
||||
'email_placeholder' => 'Enter email address',
|
||||
'registration_verify' => 'Registration Verify',
|
||||
'bitcoin' => 'Bitcoin',
|
||||
'ethereum' => 'Ethereum',
|
||||
'tether' => 'Tether',
|
||||
'binance_coin' => 'BNB',
|
||||
'solana' => 'Solana',
|
||||
'ripple' => 'Ripple',
|
||||
'cardano' => 'Cardano',
|
||||
'dogecoin' => 'Dogecoin',
|
||||
'polkadot' => 'Polkadot',
|
||||
'polygon' => 'Polygon',
|
||||
'avalanche' => 'Avalanche',
|
||||
'chainlink' => 'Chainlink',
|
||||
'shiba_inu' => 'Shiba Inu',
|
||||
'tron' => 'TRON',
|
||||
'bitcoin_cash' => 'Bitcoin Cash',
|
||||
'litecoin' => 'Litecoin',
|
||||
'uniswap' => 'Uniswap',
|
||||
'site_title' => 'Leading Digital Asset Platform',
|
||||
'unverified' => 'Unverified',
|
||||
'pending' => 'Pending',
|
||||
'verified' => 'Verified',
|
||||
'real_name' => 'Real Name',
|
||||
'credit_score' => 'Credit Score',
|
||||
'last_price' => 'Last Price',
|
||||
'change_24h' => '24h Change',
|
||||
'trade' => 'Trade',
|
||||
'why_choose_us' => 'Why Choose Us',
|
||||
'copyright' => '© 2023-2026 Byro. All rights reserved.',
|
||||
'status_normal' => 'System Status: Normal',
|
||||
'advantage_1_title' => 'Security & Compliance',
|
||||
'advantage_1_desc' => 'Global compliant operations with cold/hot wallet isolation.',
|
||||
'advantage_2_title' => 'High Liquidity',
|
||||
'advantage_2_desc' => 'Millisecond matching engine with deep liquidity.',
|
||||
'advantage_3_title' => '7/24 Support',
|
||||
'advantage_3_desc' => 'Multi-language customer service always online.',
|
||||
'advantage_4_title' => 'Diverse Products',
|
||||
'advantage_4_desc' => 'Covering Spot, Contract, Binary, and Mining.',
|
||||
'about_content' => 'Byro is a world-leading digital currency exchange established in 2023.',
|
||||
'real_name' => 'Real-name',
|
||||
'verified' => 'Verified',
|
||||
'unverified' => 'Unverified',
|
||||
'credit_score' => 'Credit Score',
|
||||
'recharge' => 'Recharge',
|
||||
'orders' => 'Orders',
|
||||
'vol_24h' => '24h Volume',
|
||||
'welcome_back' => 'Welcome Back',
|
||||
'forgot_password' => 'Forgot Password?',
|
||||
'no_account' => 'No account?',
|
||||
'invalid_account_pwd' => 'Invalid account or password',
|
||||
'account' => 'Account / Email',
|
||||
'mobile_reg' => 'Mobile Registration',
|
||||
'email_reg' => 'Email Registration',
|
||||
'username_reg' => 'Account Registration',
|
||||
'mobile_number' => 'Mobile Number',
|
||||
'username' => 'Username',
|
||||
'email' => 'Email',
|
||||
'market_view' => 'Market View',
|
||||
'sec_contract' => 'Binary',
|
||||
'secure_acc' => 'Secure My Account',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'balance' => 'Balance',
|
||||
'swap_now' => 'Swap Now',
|
||||
'rate' => 'Rate',
|
||||
'price_impact' => 'Price Impact',
|
||||
'slippage' => 'Slippage',
|
||||
'mining_title' => 'Mining Pool',
|
||||
'mining_desc' => 'Professional cloud mining and staking platform. Join thousands of users.',
|
||||
'mobile_reg' => 'Mobile Reg',
|
||||
'email_reg' => 'Email Reg',
|
||||
'uploading' => 'Uploading...',
|
||||
'uid' => 'UID',
|
||||
'recharge' => 'Recharge',
|
||||
'withdrawal' => 'Withdrawal',
|
||||
'binary_win' => 'Binary Win',
|
||||
'binary_loss' => 'Binary Loss',
|
||||
'flash_exchange' => 'Flash Swap',
|
||||
'contract_settle' => 'Contract Settle',
|
||||
'contract_margin' => 'Contract Margin',
|
||||
'fill_all_fields' => 'Please fill all fields',
|
||||
'kyc_submitted' => 'KYC submitted, waiting for review',
|
||||
'kyc_pending_desc' => 'Your KYC is under review.',
|
||||
'full_name' => 'Full Name',
|
||||
'enter_full_name' => 'Enter full name',
|
||||
'id_number' => 'ID Number',
|
||||
'enter_id_number' => 'Enter ID number',
|
||||
'id_front' => 'ID Front',
|
||||
'id_back' => 'ID Back',
|
||||
'id_handheld' => 'Handheld ID',
|
||||
'upload' => 'Upload',
|
||||
'kyc_steps' => 'KYC Steps',
|
||||
'kyc_step1' => 'Fill name and ID.',
|
||||
'kyc_step2' => 'Upload ID photos.',
|
||||
'kyc_step3' => 'Upload handheld photo.',
|
||||
'submit' => 'Submit',
|
||||
'kyc_instructions' => 'Ensure photos are clear.',
|
||||
'online_support' => 'Online Support',
|
||||
'type_message' => 'Type message...',
|
||||
'welcome_support' => 'Welcome to support center.',
|
||||
'mining_desc' => 'Cloud mining platform.',
|
||||
'mining_pool' => 'Mining Pool',
|
||||
'day' => 'Day',
|
||||
'flexible' => 'Flexible',
|
||||
'est_apy' => 'Est. APY',
|
||||
'min_deposit' => 'Min. Deposit',
|
||||
'lock_period' => 'Lock Period',
|
||||
'start_mining' => 'Start Mining',
|
||||
'why_mining' => 'Why choose Byro Mining?',
|
||||
'adv_hardware' => 'Advanced Hardware',
|
||||
'adv_hardware_desc' => 'We use latest ASIC and GPU miners for max profit.',
|
||||
'auto_compound' => 'Auto Compounding',
|
||||
'auto_compound_desc' => 'Reinvest daily rewards automatically.',
|
||||
'real_time_monitor' => 'Real-time Monitoring',
|
||||
'real_time_monitor_desc' => 'Track your hash rate and earnings in real-time.',
|
||||
'calc_profit' => 'Calculate Your Profit',
|
||||
'calc_desc' => 'Enter investment amount to estimate daily earnings',
|
||||
'amount_to_invest' => 'Amount to Invest',
|
||||
'principal_protected' => 'Principal Protected',
|
||||
'daily_payouts' => 'Daily Payouts',
|
||||
'why_mining' => 'Why Byro Mining?',
|
||||
'adv_hardware' => 'Adv. Hardware',
|
||||
'adv_hardware_desc' => 'Latest mining tech.',
|
||||
'auto_compound' => 'Auto Compound',
|
||||
'auto_compound_desc' => 'Auto reinvest.',
|
||||
'real_time_monitor' => 'RT Monitor',
|
||||
'real_time_monitor_desc' => 'Monitor in real-time.',
|
||||
'calc_profit' => 'Calc Profit',
|
||||
'calc_desc' => 'Estimate earnings.',
|
||||
'amount_to_invest' => 'Investment Amount',
|
||||
'daily_profit' => 'Daily Profit',
|
||||
'monthly_profit' => 'Monthly Profit',
|
||||
'try_calc' => 'Try Calculator',
|
||||
'app_desc' => 'Trade anytime, anywhere. Take control of your digital assets with the Byro mobile app.',
|
||||
'download_on' => 'Download on the',
|
||||
'get_it_on' => 'GET IT ON',
|
||||
'scan_download' => 'Scan to Download',
|
||||
'real_time_alerts' => 'Real-time Alerts',
|
||||
'full_trading_features' => 'Full Trading Features',
|
||||
'try_calc' => 'Try Calc',
|
||||
'app_desc' => 'Trade on mobile.',
|
||||
'download_on' => 'Download on',
|
||||
'get_it_on' => 'Get it on',
|
||||
'scan_download' => 'Scan Download',
|
||||
'real_time_alerts' => 'RT Alerts',
|
||||
'full_trading_features' => 'Full Features',
|
||||
'two_fa_security' => '2FA Security',
|
||||
'live_chat_247' => '24/7 Live Chat',
|
||||
'live_chat_247' => '24/7 Chat',
|
||||
'our_mission' => 'Our Mission',
|
||||
'mission_content' => 'To make digital asset trading accessible, secure, and intuitive for everyone, everywhere. We believe in the power of blockchain to transform the global financial landscape.',
|
||||
'mission_content' => 'Accessible crypto for all.',
|
||||
'global_presence' => 'Global Presence',
|
||||
'presence_content' => 'With offices in Singapore, London, and Tokyo, Byro serves a diverse global community. We are compliant with international standards and prioritize the security of our users\' assets.',
|
||||
'presence_content' => 'Global offices.',
|
||||
'users' => 'Users',
|
||||
'countries' => 'Countries',
|
||||
'daily_volume' => 'Daily Volume',
|
||||
'news_content' => 'Get the latest updates, listing announcements, and market insights from Byro.',
|
||||
'daily_volume' => 'Daily Vol',
|
||||
'about_content' => 'Founded in 2023.',
|
||||
'news_content' => 'Latest updates.',
|
||||
'announcement' => 'Announcement',
|
||||
'read_more' => 'Read More',
|
||||
'newsletter' => 'Newsletter',
|
||||
'newsletter_desc' => 'Subscribe to get the latest crypto insights delivered to your inbox.',
|
||||
'newsletter_desc' => 'Subscribe for insights.',
|
||||
'email_address' => 'Email Address',
|
||||
'join' => 'Join',
|
||||
'popular_topics' => 'Popular Topics',
|
||||
'effective_date' => 'Effective Date: February 16, 2026',
|
||||
'tos_1_title' => '1. Acceptance of Terms',
|
||||
'tos_1_content' => 'By accessing or using the Byro platform, you agree to be bound by these Terms of Service. If you do not agree to these terms, please do not use our services.',
|
||||
'effective_date' => 'Feb 16, 2026',
|
||||
'tos_1_title' => '1. Terms',
|
||||
'tos_1_content' => 'Accept terms.',
|
||||
'tos_2_title' => '2. Eligibility',
|
||||
'tos_2_content' => 'You must be at least 18 years old and have the legal capacity to enter into a binding agreement to use our platform. You are responsible for ensuring that your use of Byro complies with all local laws and regulations.',
|
||||
'tos_3_title' => '3. Account Security',
|
||||
'tos_3_content' => 'You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account. You agree to notify Byro immediately of any unauthorized use of your account.',
|
||||
'tos_4_title' => '4. Trading Risks',
|
||||
'tos_4_content' => 'Digital asset trading involves significant risk. Prices can be highly volatile, and you may lose your entire investment. Byro does not provide financial advice.',
|
||||
'tos_2_content' => '18+ only.',
|
||||
'tos_3_title' => '3. Security',
|
||||
'tos_3_content' => 'Protect account.',
|
||||
'tos_4_title' => '4. Risks',
|
||||
'tos_4_content' => 'Trading is risky.',
|
||||
'tos_5_title' => '5. Termination',
|
||||
'tos_5_content' => 'Byro reserves the right to suspend or terminate your account at any time for any reason, including violation of these terms.',
|
||||
'last_updated' => 'Last Updated: February 16, 2026',
|
||||
'privacy_1_title' => 'Introduction',
|
||||
'privacy_1_content' => 'Byro ("we", "us", or "our") respects your privacy and is committed to protecting your personal data. This privacy policy informs you about how we look after your personal data when you visit our website.',
|
||||
'privacy_2_title' => 'The Data We Collect',
|
||||
'privacy_2_content' => 'We may collect, use, store and transfer different kinds of personal data about you, including Identity Data, Contact Data, Financial Data, and Technical Data.',
|
||||
'privacy_3_title' => 'How We Use Your Data',
|
||||
'privacy_3_content' => 'We will only use your personal data when the law allows us to. Most commonly, we will use your personal data to perform the contract we are about to enter into or have entered into with you.',
|
||||
'privacy_4_title' => 'Data Security',
|
||||
'privacy_4_content' => 'We have put in place appropriate security measures to prevent your personal data from being accidentally lost, used, or accessed in an unauthorized way.',
|
||||
'privacy_5_title' => 'Your Legal Rights',
|
||||
'privacy_5_content' => 'Under certain circumstances, you have rights under data protection laws in relation to your personal data, including the right to request access, correction, erasure, or restriction of your personal data.',
|
||||
'tos_5_content' => 'Account termination.',
|
||||
'last_updated' => 'Feb 16, 2026',
|
||||
'privacy_1_title' => 'Intro',
|
||||
'privacy_1_content' => 'Privacy policy.',
|
||||
'privacy_2_title' => 'Data',
|
||||
'privacy_2_content' => 'Data collection.',
|
||||
'privacy_3_title' => 'Usage',
|
||||
'privacy_3_content' => 'Data usage.',
|
||||
'privacy_4_title' => 'Security',
|
||||
'privacy_4_content' => 'Data security.',
|
||||
'privacy_5_title' => 'Rights',
|
||||
'privacy_5_content' => 'Legal rights.',
|
||||
'issue_type' => 'Issue Type',
|
||||
'account_access' => 'Account Access',
|
||||
'dep_with_issue' => 'Deposit/Withdrawal',
|
||||
'trading_issue' => 'Trading Issue',
|
||||
'bug_report' => 'Bug Report',
|
||||
'account_access' => 'Account',
|
||||
'dep_with_issue' => 'Financial',
|
||||
'trading_issue' => 'Trading',
|
||||
'bug_report' => 'Bug',
|
||||
'other' => 'Other',
|
||||
'subject' => 'Subject',
|
||||
'description' => 'Description',
|
||||
'submit_ticket' => 'Submit Ticket',
|
||||
'support_response_time' => 'Our typical response time is under 2 hours. For urgent issues, please use the live chat in the bottom right.',
|
||||
'api_intro' => 'Introduction',
|
||||
'api_auth' => 'Authentication',
|
||||
'support_response_time' => '2h response time.',
|
||||
'api_intro' => 'API Intro',
|
||||
'api_auth' => 'API Auth',
|
||||
'api_market_data' => 'Market Data',
|
||||
'api_trade_endpoints' => 'Trade Endpoints',
|
||||
'api_errors' => 'Errors',
|
||||
'api_intro_desc' => 'Welcome to the Byro API. Our API allows you to access market data, manage your account, and execute trades programmatically. We use a RESTful architecture with JSON responses.',
|
||||
'api_auth_desc' => 'All private endpoints require API Key authentication. You can generate API keys in your account profile settings.',
|
||||
'api_intro_desc' => 'RESTful API.',
|
||||
'api_auth_desc' => 'Key auth required.',
|
||||
'api_get_ticker' => 'Get Ticker',
|
||||
'api_get_ticker_desc' => 'Returns the latest price and 24h volume for the specified symbol.',
|
||||
'api_get_ticker_desc' => 'Symbol price.',
|
||||
'api_place_order' => 'Place Order',
|
||||
'api_payload_example' => 'Payload example:',
|
||||
'api_payload_example' => 'Payload example',
|
||||
'tier' => 'Tier',
|
||||
'trading_vol_30d' => '30d Trading Volume',
|
||||
'trading_vol_30d' => '30d Vol',
|
||||
'maker_fee' => 'Maker Fee',
|
||||
'taker_fee' => 'Taker Fee',
|
||||
'regular' => 'Regular',
|
||||
'spot_fees' => 'Spot Trading Fees',
|
||||
'contract_fees' => 'Contract Trading Fees',
|
||||
'spot_fees' => 'Spot Fees',
|
||||
'contract_fees' => 'Contract Fees',
|
||||
'trade_spot' => 'Spot',
|
||||
'trade_contract' => 'Contract',
|
||||
'trade_binary' => 'Binary',
|
||||
@ -617,9 +868,13 @@ $translations = [
|
||||
'buy_up' => 'Buy Up',
|
||||
'buy_down' => 'Buy Down',
|
||||
'expected_profit' => 'Expected Profit',
|
||||
'purchase_amount' => 'Purchase Amount',
|
||||
'cycle_settlement' => 'Cycle Settlement',
|
||||
'available_balance' => 'Available Balance',
|
||||
'purchase_amount' => 'Amount',
|
||||
'cycle_settlement' => 'Cycle',
|
||||
'available_balance' => 'Available',
|
||||
'balance' => 'Balance',
|
||||
'kyc' => 'KYC',
|
||||
'security' => 'Security',
|
||||
'trade' => 'Trade',
|
||||
'failed' => 'Failed',
|
||||
'success' => 'Success',
|
||||
'direction' => 'Direction',
|
||||
@ -631,56 +886,154 @@ $translations = [
|
||||
'frozen' => 'Frozen',
|
||||
'converted_to' => 'Converted',
|
||||
'asset_records' => 'Asset Records',
|
||||
'no_records_found' => 'No Records Found',
|
||||
'no_records_found' => 'No Records',
|
||||
'type' => 'Type',
|
||||
'status' => 'Status',
|
||||
'time' => 'Time',
|
||||
'hot' => 'Hot',
|
||||
'executing' => 'Executing',
|
||||
'won' => 'Profit',
|
||||
'won' => 'Won',
|
||||
'loss' => 'Loss',
|
||||
'total' => 'Total',
|
||||
'orders' => 'Orders',
|
||||
'all' => 'All',
|
||||
'pnl' => 'PnL',
|
||||
'completed' => 'Completed',
|
||||
'lost' => 'Lost',
|
||||
'rejected' => 'Rejected',
|
||||
'cancelled' => 'Cancelled',
|
||||
'app_store' => 'App Store',
|
||||
'google_play' => 'Google Play',
|
||||
'android_apk' => 'Android APK',
|
||||
'ios_install' => 'iOS Install',
|
||||
'sec_contract_desc' => 'Predict trends, second-level settlement',
|
||||
'mining_pool_desc' => 'Hashrate mining, high yield',
|
||||
'trading_experience' => 'Extreme Trading Experience',
|
||||
'security_protection' => 'All-round Security Protection',
|
||||
'support_anywhere' => 'Anytime, anywhere, trade as you wish',
|
||||
'scan_to_download_app' => 'Scan QR Code to Download APP',
|
||||
'sec_contract_desc' => 'Binary options.',
|
||||
'mining_pool_desc' => 'Mining pool.',
|
||||
'trading_experience' => 'Trading experience.',
|
||||
'security_protection' => 'Security.',
|
||||
'support_anywhere' => 'Support.',
|
||||
'scan_to_download_app' => 'Scan to download.',
|
||||
'open_orders' => 'Open Orders',
|
||||
'settlement_history' => 'History',
|
||||
'details' => 'Details',
|
||||
'order_in_progress' => 'Order in Progress',
|
||||
'order_in_progress' => 'In progress',
|
||||
'current_price' => 'Current Price',
|
||||
'cycle' => 'Cycle',
|
||||
'opening_price' => 'Opening Price',
|
||||
'final_price_settlement' => 'Subject to the final settlement price',
|
||||
'confirm_close_pos' => 'Confirm close position?',
|
||||
'pos_closed' => 'Position closed',
|
||||
'final_price_settlement' => 'Final Price',
|
||||
'confirm_close_pos' => 'Confirm Close',
|
||||
'pos_closed' => 'Closed',
|
||||
'quantity' => 'Quantity',
|
||||
'level' => 'Level',
|
||||
'vip_level' => 'VIP Level',
|
||||
'current_level' => 'Current Level',
|
||||
'upgrade_progress' => 'Upgrade Progress',
|
||||
'recharge_to_upgrade' => 'Recharge %amount% USDT more to upgrade to VIP %level%',
|
||||
'recharge_to_upgrade' => 'Recharge %amount% USDT to VIP %level%',
|
||||
'vol_unit' => 'B',
|
||||
'market_stats' => 'Market Stats',
|
||||
'highest_level' => 'Highest Level Reached',
|
||||
'no_records' => 'No records',
|
||||
'highest_level' => 'Highest Level',
|
||||
'no_records' => 'No Records',
|
||||
'order_details' => 'Order Details',
|
||||
'copy' => 'Copy',
|
||||
'scan_qr_to_download' => 'Scan QR to install APP',
|
||||
'download_ios' => 'iOS Download',
|
||||
'download_android' => 'Android Download',
|
||||
'download_apk' => 'APK Download',
|
||||
'scan_qr_to_download' => 'Scan QR',
|
||||
'download_ios' => 'iOS',
|
||||
'download_android' => 'Android',
|
||||
'download_apk' => 'APK',
|
||||
'features' => 'Features',
|
||||
'app_mockup_desc' => 'Professional digital asset management, mastering the market anytime, anywhere',
|
||||
'app_mockup_desc' => 'Professional management.',
|
||||
'getting_started' => 'Getting Started',
|
||||
'getting_started_desc' => 'Start here.',
|
||||
'dep_with_title' => 'Dep/With',
|
||||
'dep_with_desc' => 'About funds.',
|
||||
'trading_tutorials' => 'Tutorials',
|
||||
'trading_tutorials_desc' => 'Learn trading.',
|
||||
'sec_acc_title' => 'Security',
|
||||
'sec_acc_desc' => 'Secure account.',
|
||||
'api_doc_title' => 'API Docs',
|
||||
'api_doc_desc' => 'Dev tools.',
|
||||
'contact_sup_title' => 'Support',
|
||||
'contact_sup_desc' => 'Contact us.',
|
||||
'help_search_placeholder' => 'Search...',
|
||||
'help_subtitle' => 'How can we help?',
|
||||
'news_title_1' => 'New Listings',
|
||||
'news_title_2' => 'Maintenance',
|
||||
'news_title_3' => 'Partner Program',
|
||||
'news_title_4' => 'Security Reminder',
|
||||
'news_title_5' => 'Coming Soon',
|
||||
'news_desc_1' => 'New pairs available.',
|
||||
'news_desc_2' => 'Upgrade notice.',
|
||||
'news_desc_3' => 'Join us.',
|
||||
'news_desc_4' => 'Enable 2FA.',
|
||||
'news_desc_5' => 'Listing soon.',
|
||||
'news_meta' => 'Feb 14, 2026',
|
||||
'price' => 'Price',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'rate' => 'Rate',
|
||||
'price_impact' => 'Price Impact',
|
||||
'slippage' => 'Slippage',
|
||||
'order_records' => 'Order Records',
|
||||
'recharge_records' => 'Recharge Records',
|
||||
'withdrawal_records' => 'Withdrawal Records',
|
||||
'unauthorized' => 'Unauthorized',
|
||||
'account_frozen' => 'Account Frozen',
|
||||
'invalid_amount' => 'Invalid Amount',
|
||||
'start_mining' => 'Start Mining',
|
||||
'swap_now' => 'Swap Now',
|
||||
'login_password' => 'Login Password',
|
||||
'old_password' => 'Old Password',
|
||||
'new_password' => 'New Password',
|
||||
'confirm_new_password' => 'Confirm New Password',
|
||||
'change_password' => 'Change Password',
|
||||
'trade_password' => 'Trade Password',
|
||||
'set_password' => 'Set Password',
|
||||
'security_steps' => 'Security Steps',
|
||||
'security_step1' => 'For your asset security, please change your login password regularly.',
|
||||
'security_step2' => 'The trade password is used for withdrawals and important transaction confirmations. Please keep it safe.',
|
||||
'security_instructions' => 'The system uses bank-grade encryption technology and multi-factor authentication to protect your account security.',
|
||||
'old_pwd_incorrect' => 'Old password incorrect',
|
||||
'pwd_too_short' => 'Password must be at least 6 characters',
|
||||
'pwd_changed_success' => 'Password changed successfully',
|
||||
'trade_pwd_updated' => 'Trade password updated successfully',
|
||||
'indicators' => 'Indicators',
|
||||
'chart' => 'Chart',
|
||||
'depth' => 'Depth',
|
||||
'kline' => 'K-Line',
|
||||
'time_fs' => 'Time',
|
||||
'time_1m' => '1m',
|
||||
'time_5m' => '5m',
|
||||
'time_15m' => '15m',
|
||||
'time_30m' => '30m',
|
||||
'time_1h' => '1h',
|
||||
'time_4h' => '4h',
|
||||
'time_1d' => '1d',
|
||||
'time_1w' => '1w',
|
||||
'BTC' => 'BTC',
|
||||
'ETH' => 'ETH',
|
||||
'USDT' => 'USDT',
|
||||
'BNB' => 'BNB',
|
||||
'SOL' => 'SOL',
|
||||
'XRP' => 'XRP',
|
||||
'ADA' => 'ADA',
|
||||
'DOGE' => 'DOGE',
|
||||
'DOT' => 'DOT',
|
||||
'MATIC' => 'MATIC',
|
||||
'AVAX' => 'AVAX',
|
||||
'LINK' => 'LINK',
|
||||
'SHIB' => 'SHIB',
|
||||
'TRX' => 'TRX',
|
||||
'BCH' => 'BCH',
|
||||
'LTC' => 'LTC',
|
||||
'UNI' => 'UNI',
|
||||
'ARB' => 'ARB',
|
||||
'OP' => 'OP',
|
||||
'APT' => 'APT',
|
||||
'USDC' => 'USDC',
|
||||
'PEPE' => 'PEPE',
|
||||
'FIL' => 'FIL',
|
||||
'NEAR' => 'NEAR',
|
||||
'ATOM' => 'ATOM',
|
||||
'IMX' => 'IMX',
|
||||
'KAS' => 'KAS',
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
@ -81,11 +81,11 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<img src="<?php echo getCoinIcon($coin['symbol']); ?>" onerror="this.src='/assets/images/coin-placeholder.png'" alt="<?= $coin['symbol'] ?>" style="width: 18px; height: 18px; margin: 0;">
|
||||
</div>
|
||||
<div>
|
||||
<div class="symbol fw-bold text-white" style="font-size: 14px;"><?= $coin['symbol'] ?></div>
|
||||
<div class="change <?= strpos($coin['change'], '+') !== false ? 'text-success' : 'text-danger' ?>" style="font-size: 11px;"><?= $coin['change'] ?></div>
|
||||
<div class="symbol fw-bold text-white" style="font-size: 13px;"><?= $lang === 'zh' ? __($coin['symbol']) : $coin['symbol'] ?></div>
|
||||
<div class="change <?= strpos($coin['change'], '+') !== false ? 'text-success' : 'text-danger' ?>" style="font-size: 10px;"><?= $coin['change'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="price fw-bold text-white" style="font-size: 14px;"><?= $coin['price'] ?></div>
|
||||
<div class="price fw-bold text-white" style="font-size: 13px;"><?= $coin['price'] ?></div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
@ -98,11 +98,12 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div class="d-flex align-items-center" onclick="toggleMobileSidebar()" style="cursor: pointer;">
|
||||
<i class="bi bi-list d-md-none fs-3 text-white me-2"></i>
|
||||
<div class="fs-4 fw-bold text-white"><?= $currentSymbol ?>/USDT</div>
|
||||
<div class="fs-4 fw-bold text-white"><?= $lang === 'zh' ? __($currentSymbol) : $currentSymbol ?>/<?= __('USDT') ?></div>
|
||||
</div>
|
||||
<div class="price-jump fs-4 fw-bold text-success">--</div>
|
||||
</div>
|
||||
<div class="d-flex gap-4 header-stats d-none d-md-flex">
|
||||
|
||||
<div class="header-stat">
|
||||
<label class="d-block small text-muted"><?= __('change_24h') ?></label>
|
||||
<span class="text-success fw-bold">--</span>
|
||||
@ -122,31 +123,92 @@ function renderTerminal($activeTab = 'spot') {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Custom Mobile Chart Toolbar -->
|
||||
<div class="mobile-chart-toolbar d-md-none">
|
||||
<div class="toolbar-scroll">
|
||||
<button class="toolbar-item active" onclick="changeInterval('1')"><?= __('time_fs') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('1')"><?= __('time_1m') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('5')"><?= __('time_5m') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('15')"><?= __('time_15m') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('30')"><?= __('time_30m') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('60')"><?= __('time_1h') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('240')"><?= __('time_4h') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('D')"><?= __('time_1d') ?></button>
|
||||
<button class="toolbar-item" onclick="changeInterval('W')"><?= __('time_1w') ?></button>
|
||||
<div class="toolbar-divider"></div>
|
||||
<button class="toolbar-item"><?= __('indicators') ?></button>
|
||||
</div>
|
||||
<div class="toolbar-tabs">
|
||||
<button class="tab-item active" id="btn-show-chart" onclick="switchChartTab('chart')"><?= __('chart') ?></button>
|
||||
<button class="tab-item" id="btn-show-depth" onclick="switchChartTab('depth')"><?= __('depth') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="terminal-chart" style="height: 500px; background: #0b0e11;">
|
||||
<!-- TradingView Widget BEGIN -->
|
||||
<div class="tradingview-widget-container" style="height:100%;width:100%">
|
||||
<div class="tradingview-widget-container" id="tv-chart-container" style="height:100%;width:100%">
|
||||
<div id="tradingview_chart" style="height:100%;width:100%"></div>
|
||||
<script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
|
||||
<script type="text/javascript">
|
||||
new TradingView.widget(
|
||||
{
|
||||
"autosize": true,
|
||||
"symbol": "BINANCE:<?= $currentSymbol ?>USDT",
|
||||
"interval": "1",
|
||||
"timezone": "Etc/UTC",
|
||||
"theme": "dark",
|
||||
"style": "1",
|
||||
"locale": "<?= $lang === 'zh' ? 'zh_CN' : 'en' ?>",
|
||||
"toolbar_bg": "#f1f3f6",
|
||||
"enable_publishing": false,
|
||||
"hide_side_toolbar": false,
|
||||
"allow_symbol_change": true,
|
||||
"container_id": "tradingview_chart"
|
||||
let tvWidget;
|
||||
function initTV() {
|
||||
tvWidget = new TradingView.widget(
|
||||
{
|
||||
"autosize": true,
|
||||
"symbol": "BINANCE:<?= $currentSymbol ?>USDT",
|
||||
"interval": "1",
|
||||
"timezone": "Etc/UTC",
|
||||
"theme": "dark",
|
||||
"style": "1",
|
||||
"locale": "<?= $lang === 'zh' ? 'zh_CN' : 'en' ?>",
|
||||
"toolbar_bg": "#0b0e11",
|
||||
"enable_publishing": false,
|
||||
"hide_top_toolbar": window.innerWidth <= 768,
|
||||
"hide_legend": window.innerWidth <= 768,
|
||||
"save_image": false,
|
||||
"container_id": "tradingview_chart"
|
||||
}
|
||||
);
|
||||
}
|
||||
initTV();
|
||||
|
||||
function changeInterval(i) {
|
||||
if (tvWidget && tvWidget.chart) {
|
||||
tvWidget.chart().setResolution(i);
|
||||
}
|
||||
document.querySelectorAll('.toolbar-item').forEach(el => el.classList.remove('active'));
|
||||
event.target.classList.add('active');
|
||||
}
|
||||
|
||||
function switchChartTab(tab) {
|
||||
const chart = document.getElementById('tv-chart-container');
|
||||
const depth = document.getElementById('depth-container');
|
||||
document.querySelectorAll('.tab-item').forEach(el => el.classList.remove('active'));
|
||||
|
||||
if (tab === 'chart') {
|
||||
chart.style.display = 'block';
|
||||
if (depth) depth.style.display = 'none';
|
||||
document.getElementById('btn-show-chart').classList.add('active');
|
||||
} else {
|
||||
chart.style.display = 'none';
|
||||
if (depth) depth.style.display = 'block';
|
||||
document.getElementById('btn-show-depth').classList.add('active');
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
</div>
|
||||
<!-- TradingView Widget END -->
|
||||
<!-- Depth Container for Mobile -->
|
||||
<div id="depth-container" class="d-md-none" style="display: none; height: 100%; background: #0b0e11; padding: 20px;">
|
||||
<div class="d-flex justify-content-between mb-2 small text-muted">
|
||||
<span><?= __('price') ?>(<?= __('USDT') ?>)</span>
|
||||
<span><?= __('quantity') ?>(<?= __($currentSymbol) ?>)</span>
|
||||
</div>
|
||||
<div id="mobile-ob-asks" class="mb-3"></div>
|
||||
<div class="text-center py-2 border-top border-bottom border-secondary my-2">
|
||||
<span class="fs-4 fw-bold text-success price-jump">--</span>
|
||||
</div>
|
||||
<div id="mobile-ob-bids"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="trading-panels">
|
||||
@ -154,7 +216,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<div class="binary-order-panel w-100">
|
||||
<div class="d-flex justify-content-between align-items-end mb-2">
|
||||
<div class="section-title text-white"><?= __('cycle_settlement') ?></div>
|
||||
<div class="small text-white"><?= __('available_balance') ?>: <span class="text-white fw-bold balance-highlight" id="user-usdt-balance"><?= number_format($usdt_balance, 2) ?></span> USDT</div>
|
||||
<div class="small text-white"><?= __('available_balance') ?>: <span class="text-white fw-bold balance-highlight" id="user-usdt-balance"><?= number_format($usdt_balance, 2) ?></span> <?= __('USDT') ?></div>
|
||||
</div>
|
||||
<div class="cycle-grid">
|
||||
<button class="cycle-btn active" onclick="selectCycle(this, 60, 8, 100, 4999)">
|
||||
@ -179,7 +241,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="section-title text-white mb-2"><?= __('purchase_amount') ?> (USDT)</div>
|
||||
<div class="section-title text-white mb-2"><?= __('purchase_amount') ?> (<?= __('USDT') ?>)</div>
|
||||
<div class="amount-input-wrapper mb-3">
|
||||
<input type="number" id="binary-amount" class="form-control" placeholder="100-4999" oninput="calculateProfit()">
|
||||
</div>
|
||||
@ -192,9 +254,10 @@ function renderTerminal($activeTab = 'spot') {
|
||||
|
||||
<div class="d-flex justify-content-between mb-3 small align-items-center bg-black bg-opacity-25 p-2 rounded">
|
||||
<div class="text-white"><?= __('expected_profit') ?></div>
|
||||
<div class="text-success fw-bold fs-6 profit-highlight" id="profit-display">0.00 USDT</div>
|
||||
<div class="text-success fw-bold fs-6 profit-highlight" id="profit-display">0.00 <?= __('USDT') ?></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row g-2">
|
||||
<div class="col-6">
|
||||
<button onclick="placeOrder('up')" class="btn btn-success btn-buy-sell w-100 fw-bold d-flex flex-column align-items-center justify-content-center">
|
||||
@ -242,7 +305,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
function calculateProfit() {
|
||||
const amount = parseFloat(document.getElementById('binary-amount').value) || 0;
|
||||
const profit = (amount * currentProfitRate / 100).toFixed(2);
|
||||
document.getElementById('profit-display').innerText = profit + ' USDT';
|
||||
document.getElementById('profit-display').innerText = profit + ' <?= __('USDT') ?>';
|
||||
}
|
||||
|
||||
function placeOrder(direction) {
|
||||
@ -287,7 +350,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
const order = {
|
||||
id: data.order_id,
|
||||
time: new Date().toISOString().replace('T', ' ').substr(0, 19),
|
||||
pair: '<?= $currentSymbol ?>/USDT',
|
||||
pair: '<?= $currentSymbol ?>/<?= __('USDT') ?>',
|
||||
type: '<?= __("trade_binary") ?>',
|
||||
side: direction === 'up' ? '<?= __("buy_up") ?>' : '<?= __("buy_down") ?>',
|
||||
side_type: direction,
|
||||
@ -387,8 +450,8 @@ function renderTerminal($activeTab = 'spot') {
|
||||
const isWon = result === 'won';
|
||||
|
||||
let message = isWon ?
|
||||
('<?= __("congrats_won") ?>' + ' ' + pnlAmount + ' USDT') :
|
||||
('<?= __("sorry_lost") ?>' + ' ' + pnlAmount + ' USDT');
|
||||
('<?= __("congrats_won") ?>' + ' ' + pnlAmount + ' <?= __('USDT') ?>') :
|
||||
('<?= __("sorry_lost") ?>' + ' ' + pnlAmount + ' <?= __('USDT') ?>');
|
||||
|
||||
const resultHtml = `
|
||||
<div class="order-result-display animate__animated animate__zoomIn">
|
||||
@ -414,11 +477,21 @@ function renderTerminal($activeTab = 'spot') {
|
||||
</div>
|
||||
<div class="result-row d-flex justify-content-between mb-2">
|
||||
<span class="text-muted"><?= __("purchase_amount") ?></span>
|
||||
<span class="text-white fw-bold">${parseFloat(orderAmount).toFixed(2)} USDT</span>
|
||||
<span class="text-white fw-bold">${parseFloat(orderAmount).toFixed(2)} <?= __('USDT') ?></span>
|
||||
</div>
|
||||
<div class="result-row total d-flex justify-content-between mt-2 pt-2 border-top border-secondary">
|
||||
<span class="text-muted"><?= __("total") ?></span>
|
||||
<span class="fs-5 fw-bold ${isWon ? 'text-success' : 'text-danger'}">${isWon ? (parseFloat(pnl) + parseFloat(orderAmount)).toFixed(2) : '0.00'} USDT</span>
|
||||
<span class="fs-5 fw-bold ${isWon ? 'text-success' : 'text-danger'}">${isWon ? (parseFloat(pnl) + parseFloat(orderAmount)).toFixed(2) : '0.00'} <?= __('USDT') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="result-row d-flex justify-content-between mb-2">
|
||||
<span class="text-muted"><?= __("purchase_amount") ?></span>
|
||||
<span class="text-white fw-bold">${parseFloat(orderAmount).toFixed(2)} <?= __('USDT') ?></span>
|
||||
</div>
|
||||
<div class="result-row total d-flex justify-content-between mt-2 pt-2 border-top border-secondary">
|
||||
<span class="text-muted"><?= __("total") ?></span>
|
||||
<span class="fs-5 fw-bold ${isWon ? 'text-success' : 'text-danger'}">${isWon ? (parseFloat(pnl) + parseFloat(orderAmount)).toFixed(2) : '0.00'} <?= __('USDT') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -474,7 +547,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
document.getElementById('popup-cycle').innerText = order.totalSeconds + '<?= __('unit_seconds') ?>';
|
||||
document.getElementById('popup-direction').innerText = order.side;
|
||||
document.getElementById('popup-direction').style.color = sideColor;
|
||||
document.getElementById('popup-quantity').innerText = order.amount + ' USDT';
|
||||
document.getElementById('popup-quantity').innerText = order.amount + ' <?= __('USDT') ?>';
|
||||
document.getElementById('popup-open-price').innerText = order.price;
|
||||
|
||||
popupOverlay.style.display = 'flex';
|
||||
@ -511,7 +584,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<button class="active btn btn-sm btn-outline-primary py-1 px-3 fw-bold" style="font-size: 12px; border-radius: 6px;"><?= __('limit') ?></button>
|
||||
<button class="btn btn-sm btn-outline-secondary py-1 px-3 fw-bold" style="font-size: 12px; border-radius: 6px;"><?= __('market') ?></button>
|
||||
</div>
|
||||
<div class="small text-muted fw-medium"><?= __('assets') ?>: <span class="text-white fw-bold"><span id="spot-usdt-balance"><?= number_format($usdt_balance, 2) ?></span> USDT</span></div>
|
||||
<div class="small text-muted fw-medium"><?= __('assets') ?>: <span class="text-white fw-bold"><span id="spot-usdt-balance"><?= number_format($usdt_balance, 2) ?></span> <?= __('USDT') ?></span></div>
|
||||
</div>
|
||||
|
||||
<?php if ($activeTab === 'contract'): ?>
|
||||
@ -531,14 +604,14 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<label class="small text-muted mb-1 d-block fw-bold"><?= ($activeTab === 'contract' ? (__('buy_long')) : (__('buy_price'))) ?></label>
|
||||
<div class="input-wrapper bg-black p-2 rounded border border-secondary d-flex justify-content-between align-items-center" style="background: #0b0e11 !important; height: 45px;">
|
||||
<input type="number" id="spot-buy-price" value="64234.50" class="bg-transparent border-0 text-white w-75 fw-bold" style="outline: none; font-size: 14px;">
|
||||
<span class="suffix text-muted small fw-bold">USDT</span>
|
||||
<span class="suffix text-muted small fw-bold"><?= $lang === 'zh' ? __('USDT') : 'USDT' ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-custom mb-3">
|
||||
<label class="small text-muted mb-1 d-block fw-bold"><?= __('amount') ?></label>
|
||||
<div class="input-wrapper bg-black p-2 rounded border border-secondary d-flex justify-content-between align-items-center" style="background: #0b0e11 !important; height: 45px;">
|
||||
<input type="number" id="spot-buy-amount" placeholder="0.00" class="bg-transparent border-0 text-white w-75 fw-bold" style="outline: none; font-size: 14px;">
|
||||
<span class="suffix text-muted small fw-bold"><?= $currentSymbol ?></span>
|
||||
<span class="suffix text-muted small fw-bold"><?= $lang === 'zh' ? __($currentSymbol) : $currentSymbol ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex gap-1 mb-3">
|
||||
@ -553,14 +626,14 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<label class="small text-muted mb-1 d-block fw-bold"><?= ($activeTab === 'contract' ? (__('sell_short')) : (__('sell_price'))) ?></label>
|
||||
<div class="input-wrapper bg-black p-2 rounded border border-secondary d-flex justify-content-between align-items-center" style="background: #0b0e11 !important; height: 45px;">
|
||||
<input type="number" id="spot-sell-price" value="64234.50" class="bg-transparent border-0 text-white w-75 fw-bold" style="outline: none; font-size: 14px;">
|
||||
<span class="suffix text-muted small fw-bold">USDT</span>
|
||||
<span class="suffix text-muted small fw-bold"><?= $lang === 'zh' ? __('USDT') : 'USDT' ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-group-custom mb-3">
|
||||
<label class="small text-muted mb-1 d-block fw-bold"><?= __('amount') ?></label>
|
||||
<div class="input-wrapper bg-black p-2 rounded border border-secondary d-flex justify-content-between align-items-center" style="background: #0b0e11 !important; height: 45px;">
|
||||
<input type="number" id="spot-sell-amount" placeholder="0.00" class="bg-transparent border-0 text-white w-75 fw-bold" style="outline: none; font-size: 14px;">
|
||||
<span class="suffix text-muted small fw-bold"><?= $currentSymbol ?></span>
|
||||
<span class="suffix text-muted small fw-bold"><?= $lang === 'zh' ? __($currentSymbol) : $currentSymbol ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex gap-1 mb-3">
|
||||
@ -723,12 +796,31 @@ function renderTerminal($activeTab = 'spot') {
|
||||
row.querySelector('.ob-row-bg').style.width = (amount / maxQty * 100) + '%';
|
||||
row.style.opacity = '1';
|
||||
} else {
|
||||
row.querySelector('.price').innerText = '---';
|
||||
row.querySelector('.amount').innerText = '---';
|
||||
row.querySelector('.ob-row-bg').style.width = '0%';
|
||||
}
|
||||
});
|
||||
row.querySelector('.price').innerText = '---';
|
||||
row.querySelector('.amount').innerText = '---';
|
||||
row.querySelector('.ob-row-bg').style.width = '0%';
|
||||
}
|
||||
});
|
||||
|
||||
// Update mobile order book if it exists
|
||||
const mobAsks = document.getElementById('mobile-ob-asks');
|
||||
const mobBids = document.getElementById('mobile-ob-bids');
|
||||
if (mobAsks && mobBids && window.innerWidth <= 768) {
|
||||
mobAsks.innerHTML = sortedAsks.slice(0, 10).map(a => `
|
||||
<div class="d-flex justify-content-between small mb-1">
|
||||
<span class="text-danger">${formatPrice(parseFloat(a[0]))}</span>
|
||||
<span class="text-white">${formatAmount(parseFloat(a[1]))}</span>
|
||||
</div>
|
||||
`).join('');
|
||||
mobBids.innerHTML = sortedBids.slice(0, 10).map(b => `
|
||||
<div class="d-flex justify-content-between small mb-1">
|
||||
<span class="text-success">${formatPrice(parseFloat(b[0]))}</span>
|
||||
<span class="text-white">${formatAmount(parseFloat(b[1]))}</span>
|
||||
</div>
|
||||
`).join('');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Add fallback data simulation for Order Book only if WebSocket is not active
|
||||
function simulateOrderBook() {
|
||||
@ -897,9 +989,10 @@ function renderTerminal($activeTab = 'spot') {
|
||||
<div class="terminal-right-sidebar">
|
||||
<div class="order-book">
|
||||
<div class="ob-header">
|
||||
<span><?= __('price') ?>(USDT)</span>
|
||||
<span><?= __('quantity') ?>(<?= $currentSymbol ?>)</span>
|
||||
<span><?= __('price') ?>(<?= __('USDT') ?>)</span>
|
||||
<span><?= __('quantity') ?>(<?= __($currentSymbol) ?>)</span>
|
||||
</div>
|
||||
|
||||
<div class="ob-list asks" id="ob-asks">
|
||||
<?php for($i=0;$i<20;$i++): ?>
|
||||
<div class="ob-row">
|
||||
@ -1003,7 +1096,7 @@ function renderTerminal($activeTab = 'spot') {
|
||||
const total = parseFloat(row.total || 0).toFixed(2);
|
||||
const plClass = pl >= 0 ? 'text-success' : 'text-danger';
|
||||
totalDisplay = `<div class="${plClass} fw-bold" style="font-size: 14px;">${pl >= 0 ? '+' : ''}${pl}</div>
|
||||
<div class="small opacity-75 text-muted">${total} USDT</div>`;
|
||||
<div class="small opacity-75 text-muted">${total} <?= __('USDT') ?></div>`;
|
||||
}
|
||||
|
||||
const isUp = row.side_type === 'up' || row.side_type === 'long' || row.side_type === 'buy';
|
||||
|
||||
69
index.php
@ -95,25 +95,66 @@ require_once __DIR__ . '/includes/header.php';
|
||||
padding-top: 80px !important;
|
||||
}
|
||||
#heroCarousel, .carousel-content {
|
||||
height: 350px !important;
|
||||
min-height: 350px !important;
|
||||
height: 300px !important;
|
||||
min-height: 300px !important;
|
||||
}
|
||||
.carousel-item h1 {
|
||||
font-size: 1.8rem !important;
|
||||
font-size: 1.5rem !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
.carousel-item p {
|
||||
font-size: 1rem !important;
|
||||
margin-bottom: 20px !important;
|
||||
font-size: 0.9rem !important;
|
||||
margin-bottom: 15px !important;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
.carousel-item .btn {
|
||||
padding: 10px 20px !important;
|
||||
font-size: 14px !important;
|
||||
padding: 8px 16px !important;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
.carousel-indicators {
|
||||
bottom: 10px;
|
||||
}
|
||||
.market-section h2 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.col-md-3 {
|
||||
width: 100% !important;
|
||||
width: 50% !important; /* 2 columns on mobile */
|
||||
padding: 5px !important;
|
||||
}
|
||||
.coin-card .card-body {
|
||||
padding: 12px !important;
|
||||
}
|
||||
.coin-card .fs-5 {
|
||||
font-size: 1rem !important;
|
||||
}
|
||||
.coin-card .fs-3 {
|
||||
font-size: 1.2rem !important;
|
||||
}
|
||||
.coin-card img {
|
||||
width: 24px !important;
|
||||
height: 24px !important;
|
||||
}
|
||||
.change-badge {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 6px !important;
|
||||
}
|
||||
.partner-card {
|
||||
padding: 15px !important;
|
||||
padding: 10px !important;
|
||||
}
|
||||
.partner-card .fs-2 {
|
||||
font-size: 1.5rem !important;
|
||||
}
|
||||
.partner-card span {
|
||||
font-size: 10px !important;
|
||||
}
|
||||
.why-us h4 {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.why-us p {
|
||||
font-size: 0.8rem !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -123,7 +164,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<h2 class="fw-bold m-0"><?php echo __('popular_markets'); ?></h2>
|
||||
<a href="market.php" class="text-decoration-none text-primary"><?php echo __('view_more'); ?> <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
<div class="row g-4" id="market-list">
|
||||
<div class="row g-2" id="market-list">
|
||||
<?php
|
||||
$coins = [
|
||||
['symbol' => 'BTC', 'name' => __('bitcoin'), 'id' => 'bitcoin'],
|
||||
@ -141,19 +182,19 @@ require_once __DIR__ . '/includes/header.php';
|
||||
];
|
||||
foreach ($coins as $coin):
|
||||
?>
|
||||
<div class="col-md-3">
|
||||
<div class="col-6 col-md-3">
|
||||
<div class="card coin-card h-100" data-symbol="<?php echo $coin['symbol']; ?>" onclick="location.href='trade.php?symbol=<?php echo $coin['symbol']; ?>'" style="cursor: pointer;">
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="<?php echo getCoinIcon($coin['symbol']); ?>" width="32" height="32" class="me-2 rounded-circle bg-light p-1" alt="<?php echo $coin['symbol']; ?>" onerror="this.src='https://assets.coingecko.com/coins/images/1/small/bitcoin.png'">
|
||||
<span class="fw-bold fs-5"><?php echo $coin['symbol']; ?></span>
|
||||
<small class="text-muted ms-2">/USDT</small>
|
||||
<span class="fw-bold fs-5"><?php echo $lang === 'zh' ? __($coin['symbol']) : $coin['symbol']; ?></span>
|
||||
<small class="text-muted ms-2 d-none d-md-inline">/USDT</small>
|
||||
</div>
|
||||
<span class="change-badge badge bg-success">+0.00%</span>
|
||||
</div>
|
||||
<div class="price-display fs-3 fw-bold mb-3" id="price-<?php echo $coin['symbol']; ?>">$0.00</div>
|
||||
<div class="sparkline-container" style="height: 40px;">
|
||||
<div class="sparkline-container d-none d-md-block" style="height: 40px;">
|
||||
<canvas class="sparkline-canvas" id="spark-<?php echo $coin['symbol']; ?>"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
11
kyc.php
@ -171,7 +171,7 @@ $kycStatus = $userData['kyc_status'] ?? 0;
|
||||
<!-- Additional Instructions Section -->
|
||||
<div class="card bg-surface border-secondary rounded-4 mt-4">
|
||||
<div class="card-body p-4">
|
||||
<h6 class="text-white fw-bold mb-3"><i class="bi bi-shield-check text-success me-2"></i> <?= __('kyc_instructions') ?? 'Certification Instructions' ?></h6>
|
||||
<h6 class="text-white fw-bold mb-3"><i class="bi bi-shield-check text-success me-2"></i> <?= __('kyc_instructions') ?></h6>
|
||||
<p class="text-white-50 small mb-0">
|
||||
<?= __('kyc_instructions') ?>
|
||||
</p>
|
||||
@ -181,6 +181,15 @@ $kycStatus = $userData['kyc_status'] ?? 0;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
@media (max-width: 768px) {
|
||||
.upload-area { padding: 1.5rem !important; }
|
||||
.upload-area i { font-size: 2rem !important; }
|
||||
.h4 { font-size: 1.25rem !important; }
|
||||
.btn-primary { padding: 12px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function previewImg(input) {
|
||||
if (input.files && input.files[0]) {
|
||||
|
||||
28
market.php
@ -5,7 +5,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<main class="container py-5">
|
||||
<h1 class="mb-4 fw-bold"><?php echo __('market'); ?></h1>
|
||||
<div class="card border-0 bg-transparent">
|
||||
<div class="table-responsive rounded-4 shadow-lg" style="background: #0b0e11; border: 1px solid #2b3139;">
|
||||
<div class="d-none d-md-block table-responsive rounded-4 shadow-lg" style="background: #0b0e11; border: 1px solid #2b3139;">
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<thead style="background: #161a1e;">
|
||||
<tr class="text-light-50 small border-0">
|
||||
@ -47,7 +47,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<img src="<?php echo getCoinIcon($coin['symbol']); ?>" width="26" height="26" alt="<?= $coin['symbol'] ?>" onerror="this.src='https://assets.coingecko.com/coins/images/1/small/bitcoin.png'">
|
||||
</div>
|
||||
<div>
|
||||
<div class="fw-bold text-white fs-5"><?php echo $coin['symbol']; ?></div>
|
||||
<div class="fw-bold text-white fs-5"><?php echo $lang === 'zh' ? __($coin['symbol']) : $coin['symbol']; ?></div>
|
||||
<div class="text-muted small fw-medium"><?php echo $coin['name']; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -65,6 +65,30 @@ require_once __DIR__ . '/includes/header.php';
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- Mobile Market List -->
|
||||
<div class="d-md-none">
|
||||
<?php foreach ($full_coins as $coin): ?>
|
||||
<div class="p-3 mb-2 rounded-4 bg-black bg-opacity-20 border border-secondary border-opacity-50 d-flex align-items-center justify-content-between" onclick="location.href='trade.php?symbol=<?= $coin['symbol'] ?>'">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<img src="<?= getCoinIcon($coin['symbol']) ?>" width="32" height="32" class="rounded-circle bg-white p-1">
|
||||
<div>
|
||||
<div class="fw-bold text-white"><?= $lang === 'zh' ? __($coin['symbol']) : $coin['symbol'] ?></div>
|
||||
<div class="text-white-50 x-small"><?= $coin['vol'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<div class="fw-bold text-white">$<?= $coin['price'] ?></div>
|
||||
</div>
|
||||
<div class="text-end">
|
||||
<div class="fw-bold <?= strpos($coin['change'], '+') !== false ? 'text-success' : 'text-danger' ?>"><?= $coin['change'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<style>
|
||||
.x-small { font-size: 11px; }
|
||||
</style>
|
||||
</main>
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
|
||||
61
mining.php
@ -13,55 +13,66 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<div class="row g-4 mb-5">
|
||||
<?php
|
||||
$pools = [
|
||||
['symbol' => 'BTC', 'name' => __('bitcoin') . __('mining_pool'), 'apy' => '12.5%', 'min' => '0.01 BTC', 'term' => '30 ' . __('day'), 'hot' => true],
|
||||
['symbol' => 'ETH', 'name' => __('ethereum') . __('mining_pool'), 'apy' => '8.2%', 'min' => '0.1 ETH', 'term' => __('flexible'), 'hot' => false],
|
||||
['symbol' => 'USDT', 'name' => 'USDT ' . __('mining_pool'), 'apy' => '15.0%', 'min' => '100 USDT', 'term' => '90 ' . __('day'), 'hot' => true],
|
||||
['symbol' => 'BNB', 'name' => 'BNB ' . __('mining_pool'), 'apy' => '22.0%', 'min' => '1 BNB', 'term' => '180 ' . __('day'), 'hot' => false],
|
||||
['symbol' => 'SOL', 'name' => 'SOL ' . __('mining_pool'), 'apy' => '14.2%', 'min' => '5 SOL', 'term' => '60 ' . __('day'), 'hot' => false],
|
||||
['symbol' => 'AVAX', 'name' => 'AVAX ' . __('mining_pool'), 'apy' => '18.5%', 'min' => '10 AVAX', 'term' => '120 ' . __('day'), 'hot' => false],
|
||||
['symbol' => 'BTC', 'name' => __('bitcoin') . __('mining_pool'), 'apy' => '12.5%', 'min' => '0.01 ' . __('BTC'), 'term' => '30 ' . __('day'), 'hot' => true],
|
||||
['symbol' => 'ETH', 'name' => __('ethereum') . __('mining_pool'), 'apy' => '8.2%', 'min' => '0.1 ' . __('ETH'), 'term' => __('flexible'), 'hot' => false],
|
||||
['symbol' => 'USDT', 'name' => __('tether') . __('mining_pool'), 'apy' => '15.0%', 'min' => '100 ' . __('USDT'), 'term' => '90 ' . __('day'), 'hot' => true],
|
||||
['symbol' => 'BNB', 'name' => __('binance_coin') . __('mining_pool'), 'apy' => '22.0%', 'min' => '1 ' . __('BNB'), 'term' => '180 ' . __('day'), 'hot' => false],
|
||||
['symbol' => 'SOL', 'name' => __('solana') . __('mining_pool'), 'apy' => '14.2%', 'min' => '5 ' . __('SOL'), 'term' => '60 ' . __('day'), 'hot' => false],
|
||||
['symbol' => 'AVAX', 'name' => __('avalanche') . __('mining_pool'), 'apy' => '18.5%', 'min' => '10 ' . __('AVAX'), 'term' => '120 ' . __('day'), 'hot' => false],
|
||||
];
|
||||
|
||||
foreach ($pools as $pool): ?>
|
||||
<div class="col-lg-4 col-md-6">
|
||||
<div class="col-6 col-md-4">
|
||||
<div class="card h-100 bg-dark border-secondary shadow-hover transition-all position-relative overflow-hidden" style="border-radius: 20px;">
|
||||
<?php if ($pool['hot']): ?>
|
||||
<div class="position-absolute top-0 end-0 bg-primary text-white px-3 py-1 small fw-bold" style="border-bottom-left-radius: 20px;"><?= __('hot') ?></div>
|
||||
<div class="position-absolute top-0 end-0 bg-primary text-white px-2 py-0 small fw-bold" style="border-bottom-left-radius: 12px; font-size: 10px;"><?= __('hot') ?></div>
|
||||
<?php endif; ?>
|
||||
<div class="card-body p-4">
|
||||
<div class="d-flex align-items-center mb-4">
|
||||
<div class="bg-black p-2 rounded-circle me-3 shadow-sm">
|
||||
<img src="<?php echo getCoinIcon($pool['symbol']); ?>" width="40" height="40">
|
||||
<div class="card-body p-3 p-md-4">
|
||||
<div class="d-flex align-items-center mb-3 mb-md-4">
|
||||
<div class="bg-black p-1 p-md-2 rounded-circle me-2 me-md-3 shadow-sm">
|
||||
<img src="<?php echo getCoinIcon($pool['symbol']); ?>" width="24" height="24" class="coin-icon-mobile">
|
||||
</div>
|
||||
<h4 class="m-0 fw-bold"><?= $pool['name'] ?></h4>
|
||||
<h6 class="m-0 fw-bold pool-name-mobile"><?= $pool['name'] ?></h6>
|
||||
</div>
|
||||
|
||||
<div class="bg-black rounded-3 p-3 mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted small"><?= __('est_apy') ?></span>
|
||||
<span class="text-success fw-bold fs-5"><?= $pool['apy'] ?></span>
|
||||
<div class="bg-black rounded-3 p-2 p-md-3 mb-3 mb-md-4">
|
||||
<div class="d-flex justify-content-between mb-1 mb-md-2">
|
||||
<span class="text-muted" style="font-size: 10px;"><?= __('est_apy') ?></span>
|
||||
<span class="text-success fw-bold" style="font-size: 12px;"><?= $pool['apy'] ?></span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<span class="text-muted small"><?= __('min_deposit') ?></span>
|
||||
<span class="text-white"><?= $pool['min'] ?></span>
|
||||
<div class="d-flex justify-content-between mb-1 mb-md-2">
|
||||
<span class="text-muted" style="font-size: 10px;"><?= __('min_deposit') ?></span>
|
||||
<span class="text-white" style="font-size: 10px;"><?= $pool['min'] ?></span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between">
|
||||
<span class="text-muted small"><?= __('lock_period') ?></span>
|
||||
<span class="text-primary fw-medium"><?= $pool['term'] ?></span>
|
||||
<span class="text-muted" style="font-size: 10px;"><?= __('lock_period') ?></span>
|
||||
<span class="text-primary fw-medium" style="font-size: 10px;"><?= $pool['term'] ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2 mb-4 small text-muted">
|
||||
<div class="d-none d-md-flex gap-2 mb-4 small text-muted">
|
||||
<i class="bi bi-shield-check text-success"></i> <?= __('principal_protected') ?>
|
||||
<i class="bi bi-lightning-fill text-warning ms-2"></i> <?= __('daily_payouts') ?>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary w-100 py-3 fw-bold rounded-pill"><?= __('start_mining') ?></button>
|
||||
<button class="btn btn-primary w-100 py-2 py-md-3 fw-bold rounded-pill" style="font-size: 12px;"><?= __('start_mining') ?></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
@media (max-width: 768px) {
|
||||
.display-4 { font-size: 1.8rem !important; }
|
||||
.pool-name-mobile { font-size: 0.85rem !important; }
|
||||
.coin-icon-mobile { width: 24px; height: 24px; }
|
||||
.row.g-4 { --bs-gutter-x: 0.5rem; --bs-gutter-y: 0.5rem; }
|
||||
.py-5 { padding-top: 2rem !important; padding-bottom: 2rem !important; }
|
||||
}
|
||||
</style>
|
||||
</div>
|
||||
|
||||
<div class="row g-4 align-items-center py-5">
|
||||
<div class="col-md-6">
|
||||
<h2 class="fw-bold mb-4"><?= __('why_mining') ?></h2>
|
||||
@ -98,7 +109,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<h3 class="fw-bold mb-3"><?= __('calc_profit') ?></h3>
|
||||
<p class="text-muted mb-4"><?= __('calc_desc') ?></p>
|
||||
<div class="input-group mb-4">
|
||||
<span class="input-group-text bg-black border-secondary text-white">USDT</span>
|
||||
<span class="input-group-text bg-black border-secondary text-white"><?= __('USDT') ?></span>
|
||||
<input type="number" id="mining-calc-amount" class="form-control bg-black border-secondary text-white p-3" placeholder="<?= __('amount_to_invest') ?>">
|
||||
</div>
|
||||
<div class="bg-black p-4 rounded-4 mb-4">
|
||||
|
||||
6
news.php
@ -11,9 +11,9 @@ require_once __DIR__ . '/includes/header.php';
|
||||
<div class="card bg-dark border-secondary mb-4 coin-card">
|
||||
<div class="card-body">
|
||||
<span class="badge bg-primary mb-2"><?= __('announcement') ?></span>
|
||||
<h4 class="fw-bold">Byro Lists New Trading Pairs: ARB/USDT and OP/USDT</h4>
|
||||
<p class="text-muted small">February 14, 2026 • 5 min read</p>
|
||||
<p>We are excited to announce that Byro will list Arbitrum (ARB) and Optimism (OP) for spot trading. Deposits are now open...</p>
|
||||
<h4 class="fw-bold"><?= __('news_title_' . $i) ?></h4>
|
||||
<p class="text-muted small"><?= __('news_meta') ?></p>
|
||||
<p><?= __('news_desc_' . $i) ?></p>
|
||||
<a href="#" class="btn btn-link p-0 text-primary"><?= __('read_more') ?> <i class="bi bi-arrow-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
55
orders.php
@ -59,7 +59,7 @@ $types_map = [
|
||||
</div>
|
||||
|
||||
<div class="card bg-surface border-secondary rounded-4 overflow-hidden shadow-lg border-opacity-50">
|
||||
<div class="table-responsive">
|
||||
<div class="d-none d-md-block table-responsive">
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<thead class="bg-black bg-opacity-50 text-white-50 small">
|
||||
<tr>
|
||||
@ -92,7 +92,7 @@ $types_map = [
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-white fw-bold"><?= $type['name'] ?></div>
|
||||
<div class="text-white-50 small"><?= $r['symbol'] ?></div>
|
||||
<div class="text-white-50 small"><?= $lang === 'zh' ? __($r['symbol']) : $r['symbol'] ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
@ -148,6 +148,57 @@ $types_map = [
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- Mobile Orders List -->
|
||||
<div class="d-md-none p-3">
|
||||
<?php if (empty($records)): ?>
|
||||
<div class="text-center py-5 text-muted opacity-50"><?= __('no_records_found') ?></div>
|
||||
<?php else: ?>
|
||||
<?php foreach ($records as $r):
|
||||
$typeKey = $r['type'];
|
||||
$type = $types_map[$typeKey] ?? ['name' => __($typeKey), 'color' => 'secondary'];
|
||||
$pnl = (float)($r['pnl'] ?? 0);
|
||||
$status = strtolower($r['status']);
|
||||
$statusClass = ($status === 'completed' || $status === 'won' || $status === 'settled') ? 'text-success' : (($status === 'lost' || $status === 'rejected' || $status === 'cancelled') ? 'text-danger' : 'text-warning');
|
||||
?>
|
||||
<div class="p-3 mb-3 rounded-4 bg-black bg-opacity-20 border border-secondary border-opacity-50">
|
||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="badge bg-<?= $type['color'] ?> p-1 rounded-circle" style="width: 8px; height: 8px; padding: 0 !important;"></span>
|
||||
<span class="text-white fw-bold small"><?= $type['name'] ?></span>
|
||||
<span class="text-white-50 x-small"><?= $lang === 'zh' ? __($r['symbol']) : $r['symbol'] ?></span>
|
||||
</div>
|
||||
<span class="text-white-50 x-small"><?= date('m-d H:i', strtotime($r['created_at'])) ?></span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-end">
|
||||
<div>
|
||||
<div class="text-white fw-bold"><?= number_format($r['amount'], 2) ?></div>
|
||||
<?php if ($r['direction']):
|
||||
$dir = strtolower($r['direction']);
|
||||
$dirText = $dir === 'up' ? __('buy_up') : ($dir === 'down' ? __('buy_down') : ($dir === 'buy' ? __('buy') : ($dir === 'sell' ? __('sell') : ($dir === 'long' ? __('long') : __('short')))));
|
||||
?>
|
||||
<div class="x-small <?= (strpos($dir, 'up') !== false || strpos($dir, 'long') !== false || strpos($dir, 'buy') !== false) ? 'text-success' : 'text-danger' ?>">
|
||||
<?= $dirText ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="text-end">
|
||||
<?php if ($r['source'] === 'trading'): ?>
|
||||
<div class="fw-bold <?= $pnl >= 0 ? 'text-success' : 'text-danger' ?> small">
|
||||
<?= $pnl >= 0 ? '+' : '' ?><?= number_format($pnl, 2) ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="<?= $statusClass ?> x-small fw-bold"><?= __($status) ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
.x-small { font-size: 11px; }
|
||||
</style>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
249
profile.php
@ -177,7 +177,7 @@ $kycStatusColor = [
|
||||
<div class="p-4 border-bottom border-secondary bg-black bg-opacity-20">
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<span class="text-white-50 small"><?= __('balance') ?>:</span>
|
||||
<span class="text-white-50 small">(USDT)</span>
|
||||
<span class="text-white-50 small">(<?= __('USDT') ?>)</span>
|
||||
</div>
|
||||
<h2 class="text-white fw-bold mb-0">≈ <?= number_format($totalBalanceUsdt, 2) ?></h2>
|
||||
</div>
|
||||
@ -194,50 +194,66 @@ $kycStatusColor = [
|
||||
|
||||
<!-- Asset Table -->
|
||||
<div class="card bg-surface border-secondary rounded-4 overflow-hidden shadow-lg">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<thead class="bg-black bg-opacity-50 text-white small border-secondary">
|
||||
<tr>
|
||||
<th class="ps-4 py-3 border-secondary" style="width: 25%;"><?= __('coin') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('available_balance') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('frozen') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('converted_to') ?></th>
|
||||
<th class="text-end pe-4 py-3 border-secondary" style="width: 15%;"><?= __('operation') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
<div class="d-none d-md-block">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<thead class="bg-black bg-opacity-50 text-white small border-secondary">
|
||||
<tr>
|
||||
<th class="ps-4 py-3 border-secondary" style="width: 25%;"><?= __('coin') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('available_balance') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('frozen') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('converted_to') ?></th>
|
||||
<th class="text-end pe-4 py-3 border-secondary" style="width: 15%;"><?= __('operation') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="asset-list-container" style="height: 210px; overflow-y: auto;">
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<tbody class="border-0">
|
||||
<?php foreach ($balances as $b): ?>
|
||||
<tr class="border-secondary">
|
||||
<td class="ps-4 py-3" style="width: 25%;">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<img src="<?= getCoinIcon($b['symbol']) ?>" width="24" height="24" class="rounded-circle">
|
||||
<span class="fw-bold text-white small"><?= $lang === 'zh' ? __($b['symbol']) : $b['symbol'] ?></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white small fw-bold"><?= number_format($b['available'], 4) ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white-50 small"><?= number_format($b['frozen'], 4) ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white-50 small">≈ <?= number_format(($b['available'] + $b['frozen']) * getCoinPrice($b['symbol']), 2) ?></span>
|
||||
</td>
|
||||
<td class="text-end pe-4 py-3" style="width: 15%;">
|
||||
<a href="/trade.php?symbol=<?= $b['symbol'] ?>" class="text-primary text-decoration-none small"><?= __('trade') ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Scrollable Body - Limited to 4 rows (approx 210px) -->
|
||||
<div class="asset-list-container" style="height: 210px; overflow-y: auto; scrollbar-width: none; -ms-overflow-style: none;">
|
||||
<style>
|
||||
.asset-list-container::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
<table class="table table-dark table-hover mb-0 align-middle">
|
||||
<tbody class="border-0">
|
||||
<?php foreach ($balances as $b): ?>
|
||||
<tr class="border-secondary">
|
||||
<td class="ps-4 py-3" style="width: 25%;">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<img src="<?= getCoinIcon($b['symbol']) ?>" width="24" height="24" class="rounded-circle">
|
||||
<span class="fw-bold text-white small"><?= $b['symbol'] ?></span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white small fw-bold"><?= number_format($b['available'], 4) ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white-50 small"><?= number_format($b['frozen'], 4) ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="text-white-50 small">≈ <?= number_format(($b['available'] + $b['frozen']) * getCoinPrice($b['symbol']), 2) ?></span>
|
||||
</td>
|
||||
<td class="text-end pe-4 py-3" style="width: 15%;">
|
||||
<a href="/trade.php?symbol=<?= $b['symbol'] ?>" class="text-primary text-decoration-none small"><?= __('trade') ?></a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Mobile Asset List -->
|
||||
<div class="d-md-none p-3">
|
||||
<?php foreach ($balances as $b): if($b['available'] == 0 && $b['frozen'] == 0 && !in_array($b['symbol'], ['BTC', 'ETH', 'USDT'])) continue; ?>
|
||||
<div class="d-flex align-items-center justify-content-between p-3 mb-2 rounded-4 bg-black bg-opacity-20 border border-secondary border-opacity-50">
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<img src="<?= getCoinIcon($b['symbol']) ?>" width="32" height="32" class="rounded-circle">
|
||||
<div>
|
||||
<div class="fw-bold text-white"><?= $lang === 'zh' ? __($b['symbol']) : $b['symbol'] ?></div>
|
||||
<div class="text-white-50 x-small"><?= __('available_balance') ?>: <?= number_format($b['available'], 4) ?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-end">
|
||||
<div class="text-white fw-bold small">≈ <?= number_format(($b['available'] + $b['frozen']) * getCoinPrice($b['symbol']), 2) ?> USDT</div>
|
||||
<a href="/trade.php?symbol=<?= $b['symbol'] ?>" class="text-primary x-small"><?= __('trade') ?> <i class="bi bi-chevron-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -246,79 +262,88 @@ $kycStatusColor = [
|
||||
<h5 class="text-white fw-bold"><?= __('asset_records') ?></h5>
|
||||
</div>
|
||||
<div class="card bg-surface border-secondary rounded-4 overflow-hidden shadow-lg">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover mb-0 align-middle small">
|
||||
<thead class="bg-black bg-opacity-20 text-white-50 border-secondary">
|
||||
<tr>
|
||||
<th class="ps-4 py-3 border-secondary" style="width: 25%;"><?= __('type') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 30%;"><?= __('amount') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('status') ?></th>
|
||||
<th class="text-end pe-4 py-3 border-secondary" style="width: 25%;"><?= __('time') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
<div class="d-none d-md-block">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-dark table-hover mb-0 align-middle small">
|
||||
<thead class="bg-black bg-opacity-20 text-white-50 border-secondary">
|
||||
<tr>
|
||||
<th class="ps-4 py-3 border-secondary" style="width: 25%;"><?= __('type') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 30%;"><?= __('amount') ?></th>
|
||||
<th class="py-3 border-secondary" style="width: 20%;"><?= __('status') ?></th>
|
||||
<th class="text-end pe-4 py-3 border-secondary" style="width: 25%;"><?= __('time') ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
<div class="transaction-list-container" style="height: 240px; overflow-y: auto;">
|
||||
<table class="table table-dark table-hover mb-0 align-middle small">
|
||||
<tbody class="border-0">
|
||||
<?php if (empty($transactions)): ?>
|
||||
<tr>
|
||||
<td colspan="4" class="text-center py-5 text-white-50">
|
||||
<i class="bi bi-inbox fs-2 d-block mb-2"></i>
|
||||
<?= __('no_records_found') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($transactions as $t):
|
||||
$typeColor = 'text-primary';
|
||||
$typeName = __($t['type']);
|
||||
if (strpos($t['type'], 'win') !== false || $t['type'] === 'deposit' || $t['type'] === 'binary_win' || $t['type'] === 'recharge') $typeColor = 'text-success';
|
||||
elseif (strpos($t['type'], 'loss') !== false || $t['type'] === 'withdraw' || $t['type'] === 'withdrawal' || $t['type'] === 'binary_loss') $typeColor = 'text-danger';
|
||||
$prefix = ($t['type'] === 'binary_win' || $t['type'] === 'deposit' || $t['type'] === 'recharge' || $t['type'] === 'contract_settle') ? '+' : (($t['type'] === 'binary_loss' || $t['type'] === 'withdraw' || $t['type'] === 'withdrawal' || $t['type'] === 'contract_margin') ? '-' : '');
|
||||
$statusText = ($t['status'] === 'completed' || $t['status'] === 'approved') ? __('approved') : ($t['status'] === 'rejected' ? __('rejected') : __('pending'));
|
||||
$statusClass = ($t['status'] === 'completed' || $t['status'] === 'approved') ? 'text-success' : ($t['status'] === 'rejected' ? 'text-danger' : 'text-warning');
|
||||
?>
|
||||
<tr class="border-secondary">
|
||||
<td class="ps-4 py-3" style="width: 25%;"><span class="<?= $typeColor ?> fw-bold"><?= $typeName ?></span></td>
|
||||
<td class="py-3" style="width: 30%;"><span class="text-white fw-bold"><?= $prefix . number_format($t['amount'], 4) ?></span> <span class="text-white-50 small"><?= $lang === 'zh' ? __($t['symbol']) : $t['symbol'] ?></span></td>
|
||||
<td class="py-3" style="width: 20%;"><span class="<?= $statusClass ?> small"><?= $statusText ?></span></td>
|
||||
<td class="text-end pe-4 py-3" style="width: 25%;"><span class="text-white-50 x-small"><?= date('Y-m-d H:i', strtotime($t['created_at'])) ?></span></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Scrollable Body for Transactions - Limited to 4 rows (approx 210px) -->
|
||||
<div class="transaction-list-container" style="height: 240px; overflow-y: auto; scrollbar-width: none; -ms-overflow-style: none;">
|
||||
<style>
|
||||
.transaction-list-container::-webkit-scrollbar { display: none; }
|
||||
</style>
|
||||
<table class="table table-dark table-hover mb-0 align-middle small">
|
||||
<tbody class="border-0">
|
||||
<?php if (empty($transactions)): ?>
|
||||
<tr>
|
||||
<td colspan="4" class="text-center py-5 text-white-50">
|
||||
<i class="bi bi-inbox fs-2 d-block mb-2"></i>
|
||||
<?= __('no_records_found') ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($transactions as $t):
|
||||
$typeColor = 'text-primary';
|
||||
$typeName = __($t['type']);
|
||||
|
||||
if (strpos($t['type'], 'win') !== false || $t['type'] === 'deposit' || $t['type'] === 'binary_win' || $t['type'] === 'recharge') $typeColor = 'text-success';
|
||||
elseif (strpos($t['type'], 'loss') !== false || $t['type'] === 'withdraw' || $t['type'] === 'withdrawal' || $t['type'] === 'binary_loss') $typeColor = 'text-danger';
|
||||
elseif ($t['type'] === 'flash_exchange') $typeColor = 'text-info';
|
||||
elseif ($t['type'] === 'contract_settle') $typeColor = 'text-info';
|
||||
|
||||
$prefix = '';
|
||||
if ($t['type'] === 'binary_win' || $t['type'] === 'deposit' || $t['type'] === 'recharge' || $t['type'] === 'contract_settle') $prefix = '+';
|
||||
if ($t['type'] === 'binary_loss' || $t['type'] === 'withdraw' || $t['type'] === 'withdrawal' || $t['type'] === 'contract_margin') $prefix = '-';
|
||||
|
||||
$statusText = __('pending');
|
||||
$statusClass = 'bg-warning text-warning';
|
||||
if ($t['status'] === 'completed' || $t['status'] === 'approved') {
|
||||
$statusText = __('approved');
|
||||
$statusClass = 'bg-success text-success';
|
||||
} elseif ($t['status'] === 'rejected') {
|
||||
$statusText = __('rejected');
|
||||
$statusClass = 'bg-danger text-danger';
|
||||
}
|
||||
?>
|
||||
<tr class="border-secondary">
|
||||
<td class="ps-4 py-3" style="width: 25%;">
|
||||
<span class="<?= $typeColor ?> fw-bold"><?= $typeName ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 30%;">
|
||||
<span class="text-white fw-bold"><?= $prefix . number_format($t['amount'], 4) ?></span>
|
||||
<span class="text-white-50 small"><?= $t['symbol'] ?></span>
|
||||
</td>
|
||||
<td class="py-3" style="width: 20%;">
|
||||
<span class="badge bg-opacity-10 <?= $statusClass ?> border border-opacity-25 px-2 py-1"><?= $statusText ?></span>
|
||||
</td>
|
||||
<td class="text-end pe-4 py-3" style="width: 25%;">
|
||||
<span class="text-white-50 x-small"><?= date('Y-m-d H:i', strtotime($t['created_at'])) ?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Mobile Transaction List -->
|
||||
<div class="d-md-none p-3">
|
||||
<?php if (empty($transactions)): ?>
|
||||
<div class="text-center py-4 text-white-50 small"><?= __('no_records_found') ?></div>
|
||||
<?php else: ?>
|
||||
<?php foreach ($transactions as $t):
|
||||
$typeName = __($t['type']);
|
||||
$typeColor = (strpos($t['type'], 'win') !== false || $t['type'] === 'deposit' || $t['type'] === 'recharge') ? 'text-success' : ((strpos($t['type'], 'loss') !== false || $t['type'] === 'withdraw' || $t['type'] === 'withdrawal') ? 'text-danger' : 'text-primary');
|
||||
$statusText = ($t['status'] === 'completed' || $t['status'] === 'approved') ? __('approved') : ($t['status'] === 'rejected' ? __('rejected') : __('pending'));
|
||||
$statusClass = ($t['status'] === 'completed' || $t['status'] === 'approved') ? 'text-success' : ($t['status'] === 'rejected' ? 'text-danger' : 'text-warning');
|
||||
?>
|
||||
<div class="p-3 mb-2 rounded-4 bg-black bg-opacity-20 border border-secondary border-opacity-50">
|
||||
<div class="d-flex justify-content-between align-items-start mb-2">
|
||||
<span class="<?= $typeColor ?> fw-bold small"><?= $typeName ?></span>
|
||||
<span class="text-white-50 x-small"><?= date('m-d H:i', strtotime($t['created_at'])) ?></span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<div class="text-white fw-bold"><?= number_format($t['amount'], 4) ?> <span class="text-white-50 small"><?= $lang === 'zh' ? __($t['symbol']) : $t['symbol'] ?></span></div>
|
||||
<span class="<?= $statusClass ?> x-small fw-bold"><?= $statusText ?></span>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.x-small { font-size: 11px; }
|
||||
@media (max-width: 991px) {
|
||||
.col-lg-3 { margin-bottom: 1rem; }
|
||||
}
|
||||
</style>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include __DIR__ . '/includes/footer.php'; ?>
|
||||
|
||||
113
recharge.php
@ -99,111 +99,20 @@ $bep20_addr = $settings['usdt_bep20_address'] ?? '0x742d35Cc6634C0532925a3b844Bc
|
||||
<div class="d-flex align-items-center gap-3 p-3 bg-dark border border-secondary rounded-4">
|
||||
<img src="<?= getCoinIcon('USDT') ?>" width="32" height="32" alt="USDT">
|
||||
<div>
|
||||
<div class="fw-bold text-white">USDT</div>
|
||||
<div class="text-white-50 small">Tether USD</div>
|
||||
<div class="fw-bold text-white"><?= $lang === 'zh' ? __('USDT') : 'USDT' ?></div>
|
||||
<div class="text-white-50 small"><?= $lang === 'zh' ? __('tether') : 'Tether' ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('recharge_amount') ?> (USDT)</label>
|
||||
<input type="number" class="form-control bg-dark border-secondary text-white py-3" id="cryptoAmount" placeholder="<?= __('enter_amount') ?>">
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('network') ?></label>
|
||||
<div class="d-flex gap-2" id="networkSelectors">
|
||||
<button class="btn btn-outline-primary btn-sm px-4 rounded-pill active" onclick="selectNetwork('TRC20', '<?= $trc20_addr ?>')">TRC20</button>
|
||||
<button class="btn btn-outline-secondary btn-sm px-4 rounded-pill" onclick="selectNetwork('ERC20', '<?= $erc20_addr ?>')">ERC20</button>
|
||||
<button class="btn btn-outline-secondary btn-sm px-4 rounded-pill" onclick="selectNetwork('BEP20', '<?= $bep20_addr ?>')">BEP20</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center mb-4 p-3 bg-white rounded-4 mx-auto" style="width: 180px; height: 180px;">
|
||||
<img id="qrCode" src="https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=<?= $trc20_addr ?>" alt="QR Code" class="img-fluid">
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('address') ?></label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control bg-dark border-secondary text-white py-3 small" value="<?= $trc20_addr ?>" readonly id="cryptoAddress">
|
||||
<button class="btn btn-dark border-secondary text-primary" onclick="copyAddress()"><i class="bi bi-copy"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-3 bg-warning bg-opacity-10 border border-warning border-opacity-20 rounded-4 small text-warning mb-4">
|
||||
<i class="bi bi-exclamation-triangle me-2"></i>
|
||||
⚠️ <?= __('crypto_recharge_warning') ?>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-outline-primary w-100 py-3 rounded-pill fw-bold" onclick="confirmCryptoOrder()">
|
||||
<?= __('i_have_paid') ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rich Content Sections -->
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-md-6">
|
||||
<div class="card bg-surface border-secondary rounded-4 h-100">
|
||||
<div class="card-body p-4">
|
||||
<h5 class="text-white fw-bold mb-3"><i class="bi bi-journal-text text-primary me-2"></i> <?= __('recharge_steps') ?></h5>
|
||||
<div class="text-white-50 small lh-lg">
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-primary rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">1</span>
|
||||
<span><?= __('recharge_step1') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-primary rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">2</span>
|
||||
<span><?= __('recharge_step2') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-primary rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">3</span>
|
||||
<span><?= __('recharge_step3') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3">
|
||||
<span class="badge bg-primary rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">4</span>
|
||||
<span><?= __('recharge_step4') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card bg-surface border-secondary rounded-4 h-100">
|
||||
<div class="card-body p-4">
|
||||
<h5 class="text-white fw-bold mb-3"><i class="bi bi-shield-lock text-success me-2"></i> <?= __('security_tips') ?></h5>
|
||||
<div class="text-white-50 small lh-lg">
|
||||
<ul class="ps-3 mb-0">
|
||||
<li><?= __('recharge_tip1') ?></li>
|
||||
<li><?= __('recharge_tip2') ?></li>
|
||||
<li><?= __('recharge_tip3') ?></li>
|
||||
<li><?= __('recharge_tip4') ?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center text-white-50 small mb-5">
|
||||
<div class="d-flex justify-content-center gap-4">
|
||||
<span><i class="bi bi-shield-check text-success me-1"></i> <?= __('secure') ?></span>
|
||||
<span><i class="bi bi-lightning-fill text-warning me-1"></i> <?= __('fast') ?></span>
|
||||
<span><i class="bi bi-headset text-primary me-1"></i> <?= __('support_247') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.nav-pills .nav-link { color: #9ba3af; font-weight: 500; }
|
||||
.nav-pills .nav-link.active { background-color: #0062ff; color: #fff; }
|
||||
.btn-outline-primary:hover { background-color: #0062ff; color: #fff; }
|
||||
</style>
|
||||
...
|
||||
<style>
|
||||
@media (max-width: 768px) {
|
||||
.container { padding-left: 10px !important; padding-right: 10px !important; }
|
||||
.card-body { padding: 1.25rem !important; }
|
||||
.nav-pills .nav-link { padding: 10px 15px !important; font-size: 13px; }
|
||||
.h4 { font-size: 1.25rem !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
let currentNetwork = 'TRC20';
|
||||
|
||||
@ -24,7 +24,7 @@ require_once __DIR__ . '/includes/header.php';
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label text-muted small"><?= __('subject') ?></label>
|
||||
<input type="text" class="form-control bg-dark text-white border-secondary" placeholder="<?= __('description') ?>" required>
|
||||
<input type="text" class="form-control bg-dark text-white border-secondary" placeholder="<?= __('subject') ?>" required>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-muted small"><?= __('description') ?></label>
|
||||
|
||||
57
swap.php
@ -10,33 +10,33 @@ if ($user) {
|
||||
$usdt_balance = $bal['available'] ?? 0;
|
||||
}
|
||||
?>
|
||||
<div class="container py-5 d-flex justify-content-center">
|
||||
<div class="container py-4 py-md-5 d-flex justify-content-center">
|
||||
<div class="card bg-dark border-0 shadow-lg" style="width: 100%; max-width: 480px; border-radius: 28px; background: #0b0e11 !important; border: 1px solid #2b3139 !important; box-shadow: 0 20px 50px rgba(0,0,0,0.5) !important;">
|
||||
<div class="card-body p-4">
|
||||
<div class="card-body p-3 p-md-4">
|
||||
<h3 class="fw-bold mb-4 text-white d-flex align-items-center gap-2">
|
||||
<i class="bi bi-lightning-charge-fill text-primary"></i>
|
||||
<?= __('swap') ?>
|
||||
</h3>
|
||||
|
||||
<!-- From -->
|
||||
<div class="p-4 mb-2 rounded-4" style="background: #161a1e; border: 1px solid #2b3139;">
|
||||
<div class="p-3 p-md-4 mb-2 rounded-4" style="background: #161a1e; border: 1px solid #2b3139;">
|
||||
<div class="d-flex justify-content-between mb-3">
|
||||
<span class="text-white opacity-50 small fw-bold text-uppercase" style="letter-spacing: 1px;"><?= __('from') ?></span>
|
||||
<span class="text-white opacity-50 small"><?= __('balance') ?>: <span class="text-white fw-bold"><?= number_format($usdt_balance, 2) ?></span></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<input type="number" class="form-control bg-transparent border-0 text-white fs-1 p-0 shadow-none w-50 fw-bold" placeholder="0.00" style="color: #fff !important; font-size: 32px !important;">
|
||||
<input type="number" id="from-amount" class="form-control bg-transparent border-0 text-white p-0 shadow-none w-50 fw-bold" placeholder="0.00" style="color: #fff !important; font-size: clamp(24px, 5vw, 32px) !important;">
|
||||
<div class="ms-auto dropdown">
|
||||
<div class="d-flex align-items-center bg-dark p-2 rounded-pill px-3 border border-secondary cursor-pointer shadow-sm dropdown-toggle" data-bs-toggle="dropdown">
|
||||
<div class="d-flex align-items-center bg-dark p-2 rounded-pill px-2 px-md-3 border border-secondary cursor-pointer shadow-sm dropdown-toggle" data-bs-toggle="dropdown">
|
||||
<img src="<?php echo getCoinIcon('USDT'); ?>" width="24" height="24" class="me-2 rounded-circle" id="from-coin-img">
|
||||
<span class="fw-bold text-white" id="from-coin-symbol">USDT</span>
|
||||
<span class="fw-bold text-white small" id="from-coin-symbol" data-symbol="USDT"><?= __('USDT') ?></span>
|
||||
</div>
|
||||
<ul class="dropdown-menu dropdown-menu-dark bg-dark border-secondary rounded-4 shadow-lg p-2" style="max-height: 300px; overflow-y: auto;">
|
||||
<?php
|
||||
$swap_coins = ['BTC', 'ETH', 'USDT', 'BNB', 'SOL', 'XRP', 'ADA', 'DOGE', 'DOT', 'MATIC', 'LINK', 'SHIB'];
|
||||
foreach($swap_coins as $sc): ?>
|
||||
<li><a class="dropdown-item rounded-3 py-2 d-flex align-items-center gap-2" href="#" onclick="selectCoin('from', '<?= $sc ?>', '<?= getCoinIcon($sc) ?>')">
|
||||
<img src="<?= getCoinIcon($sc) ?>" width="20" height="20"> <?= $sc ?>
|
||||
<li><a class="dropdown-item rounded-3 py-2 d-flex align-items-center gap-2" href="#" onclick="selectCoin('from', '<?= $sc ?>', '<?= __($sc) ?>', '<?= getCoinIcon($sc) ?>')">
|
||||
<img src="<?= getCoinIcon($sc) ?>" width="20" height="20"> <?= __($sc) ?>
|
||||
</a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
@ -52,22 +52,22 @@ if ($user) {
|
||||
</div>
|
||||
|
||||
<!-- To -->
|
||||
<div class="p-4 mt-n1 mb-4 rounded-4" style="background: #161a1e; border: 1px solid #2b3139;">
|
||||
<div class="p-3 p-md-4 mt-n1 mb-4 rounded-4" style="background: #161a1e; border: 1px solid #2b3139;">
|
||||
<div class="d-flex justify-content-between mb-3">
|
||||
<span class="text-white opacity-50 small fw-bold text-uppercase" style="letter-spacing: 1px;"><?= __('to') ?></span>
|
||||
<span class="text-white opacity-50 small"><?= __('balance') ?>: <span class="text-white fw-bold">0.00</span></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center">
|
||||
<input type="number" class="form-control bg-transparent border-0 text-white fs-1 p-0 shadow-none w-50 fw-bold" placeholder="0.00" readonly style="color: #fff !important; opacity: 1; font-size: 32px !important;">
|
||||
<input type="number" id="to-amount" class="form-control bg-transparent border-0 text-white p-0 shadow-none w-50 fw-bold" placeholder="0.00" readonly style="color: #fff !important; opacity: 1; font-size: clamp(24px, 5vw, 32px) !important;">
|
||||
<div class="ms-auto dropdown">
|
||||
<div class="d-flex align-items-center bg-dark p-2 rounded-pill px-3 border border-secondary cursor-pointer shadow-sm dropdown-toggle" data-bs-toggle="dropdown">
|
||||
<div class="d-flex align-items-center bg-dark p-2 rounded-pill px-2 px-md-3 border border-secondary cursor-pointer shadow-sm dropdown-toggle" data-bs-toggle="dropdown">
|
||||
<img src="<?php echo getCoinIcon('BTC'); ?>" width="24" height="24" class="me-2 rounded-circle" id="to-coin-img">
|
||||
<span class="fw-bold text-white" id="to-coin-symbol">BTC</span>
|
||||
<span class="fw-bold text-white small" id="to-coin-symbol" data-symbol="BTC"><?= __('BTC') ?></span>
|
||||
</div>
|
||||
<ul class="dropdown-menu dropdown-menu-dark bg-dark border-secondary rounded-4 shadow-lg p-2" style="max-height: 300px; overflow-y: auto;">
|
||||
<?php foreach($swap_coins as $sc): ?>
|
||||
<li><a class="dropdown-item rounded-3 py-2 d-flex align-items-center gap-2" href="#" onclick="selectCoin('to', '<?= $sc ?>', '<?= getCoinIcon($sc) ?>')">
|
||||
<img src="<?= getCoinIcon($sc) ?>" width="20" height="20"> <?= $sc ?>
|
||||
<li><a class="dropdown-item rounded-3 py-2 d-flex align-items-center gap-2" href="#" onclick="selectCoin('to', '<?= $sc ?>', '<?= __($sc) ?>', '<?= getCoinIcon($sc) ?>')">
|
||||
<img src="<?= getCoinIcon($sc) ?>" width="20" height="20"> <?= __($sc) ?>
|
||||
</a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
@ -96,14 +96,15 @@ if ($user) {
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const fromInput = document.querySelector('input[placeholder="0.00"]:not([readonly])');
|
||||
const toInput = document.querySelector('input[readonly]');
|
||||
const fromInput = document.getElementById('from-amount');
|
||||
const toInput = document.getElementById('to-amount');
|
||||
const rateEl = document.getElementById('swap-rate');
|
||||
const approxLabel = '<?= __('approx') ?>';
|
||||
let rate = 1 / 64234.50;
|
||||
|
||||
function selectCoin(type, symbol, icon) {
|
||||
document.getElementById(type + '-coin-symbol').innerText = symbol;
|
||||
function selectCoin(type, symbol, displayName, icon) {
|
||||
document.getElementById(type + '-coin-symbol').innerText = displayName;
|
||||
document.getElementById(type + '-coin-symbol').dataset.symbol = symbol;
|
||||
document.getElementById(type + '-coin-img').src = icon;
|
||||
// Update rate mockly
|
||||
if (symbol === 'BTC') rate = 1 / 64234.50;
|
||||
@ -113,21 +114,23 @@ function selectCoin(type, symbol, icon) {
|
||||
}
|
||||
|
||||
function switchCoins() {
|
||||
const fromSymbol = document.getElementById('from-coin-symbol').innerText;
|
||||
const fromSymbol = document.getElementById('from-coin-symbol').dataset.symbol || 'USDT';
|
||||
const fromName = document.getElementById('from-coin-symbol').innerText;
|
||||
const fromIcon = document.getElementById('from-coin-img').src;
|
||||
const toSymbol = document.getElementById('to-coin-symbol').innerText;
|
||||
const toSymbol = document.getElementById('to-coin-symbol').dataset.symbol || 'BTC';
|
||||
const toName = document.getElementById('to-coin-symbol').innerText;
|
||||
const toIcon = document.getElementById('to-coin-img').src;
|
||||
|
||||
selectCoin('from', toSymbol, toIcon);
|
||||
selectCoin('to', fromSymbol, fromIcon);
|
||||
selectCoin('from', toSymbol, toName, toIcon);
|
||||
selectCoin('to', fromSymbol, fromName, fromIcon);
|
||||
}
|
||||
|
||||
function updateCalculation() {
|
||||
const val = parseFloat(fromInput.value) || 0;
|
||||
toInput.value = (val * rate).toFixed(8);
|
||||
const fromSymbol = document.getElementById('from-coin-symbol').innerText;
|
||||
const toSymbol = document.getElementById('to-coin-symbol').innerText;
|
||||
rateEl.innerText = `1 ${toSymbol} ${approxLabel} ${(1/rate).toLocaleString()} ${fromSymbol}`;
|
||||
const fromName = document.getElementById('from-coin-symbol').innerText;
|
||||
const toName = document.getElementById('to-coin-symbol').innerText;
|
||||
rateEl.innerText = `1 ${toName} ${approxLabel} ${(1/rate).toLocaleString()} ${fromName}`;
|
||||
}
|
||||
|
||||
fromInput.addEventListener('input', updateCalculation);
|
||||
@ -136,6 +139,10 @@ fromInput.addEventListener('input', updateCalculation);
|
||||
document.querySelector('.bg-primary.rounded-circle').addEventListener('click', function() {
|
||||
this.style.transform = this.style.transform === 'rotate(180deg)' ? 'rotate(0deg)' : 'rotate(180deg)';
|
||||
});
|
||||
|
||||
// Initialize symbols for JS
|
||||
document.getElementById('from-coin-symbol').dataset.symbol = 'USDT';
|
||||
document.getElementById('to-coin-symbol').dataset.symbol = 'BTC';
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
178
withdraw.php
@ -51,176 +51,20 @@ $available = $bal['available'] ?? 0;
|
||||
<div class="d-flex align-items-center gap-3 p-3 bg-dark border border-secondary rounded-4">
|
||||
<img src="<?= getCoinIcon('USDT') ?>" width="32" height="32" alt="USDT">
|
||||
<div>
|
||||
<div class="fw-bold text-white">USDT</div>
|
||||
<div class="text-white-50 small">Tether USD</div>
|
||||
<div class="fw-bold text-white"><?= $lang === 'zh' ? __('USDT') : 'USDT' ?></div>
|
||||
<div class="text-white-50 small"><?= $lang === 'zh' ? __('tether') : 'Tether' ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('network') ?></label>
|
||||
<div class="d-flex gap-2" id="withdrawNetworkSelectors">
|
||||
<button type="button" class="btn btn-outline-warning btn-sm px-4 rounded-pill active" onclick="selectWithdrawNetwork('TRC20')">TRC20</button>
|
||||
<button type="button" class="btn btn-outline-secondary btn-sm px-4 rounded-pill" onclick="selectWithdrawNetwork('ERC20')">ERC20</button>
|
||||
<button type="button" class="btn btn-outline-secondary btn-sm px-4 rounded-pill" onclick="selectWithdrawNetwork('BEP20')">BEP20</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('withdraw_address') ?></label>
|
||||
<input type="text" class="form-control bg-dark border-secondary text-white py-3" id="withdrawAddress" placeholder="<?= __('withdraw_address_placeholder') ?>">
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<label class="form-label text-white-50 small fw-bold"><?= __('withdraw_amount') ?> (USDT)</label>
|
||||
<span class="small text-white-50"><?= __('balance') ?>: <span class="text-white"><?= number_format($available, 2) ?> USDT</span></span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input type="number" class="form-control bg-dark border-secondary text-white py-3" id="withdrawAmount" placeholder="<?= __('withdraw_amount_min') ?>" oninput="calculateCryptoWithdraw()">
|
||||
<button type="button" class="input-group-text bg-dark border-secondary text-primary fw-bold" onclick="setMax('withdrawAmount', 'cryptoReceiveAmount')">ALL</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('withdraw_password') ?></label>
|
||||
<input type="password" class="form-control bg-dark border-secondary text-white py-3" id="withdrawPassword" placeholder="<?= __('withdraw_pwd_placeholder') ?>">
|
||||
</div>
|
||||
|
||||
<div class="mb-5 p-4 bg-warning bg-opacity-10 border border-warning border-opacity-20 rounded-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||
<span class="text-white-50 small"><?= __('withdraw_fee') ?></span>
|
||||
<span class="text-white small">1.00 USDT</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<span class="text-white-50"><?= __('to_receive') ?></span>
|
||||
<span class="h4 mb-0 fw-bold text-warning" id="cryptoReceiveAmount">0.00 USDT</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-warning w-100 py-3 rounded-pill fw-bold shadow-lg" onclick="confirmCryptoWithdraw()">
|
||||
<?= __('confirm_order') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Fiat Withdrawal -->
|
||||
<div class="tab-pane fade" id="fiat-withdraw" role="tabpanel">
|
||||
<form id="fiatWithdrawForm">
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('select_currency') ?></label>
|
||||
<select class="form-select bg-dark border-secondary text-white py-3" id="fiatWithdrawCurrency" onchange="updateFiatWithdrawRate()">
|
||||
<option value="USD" data-rate="1">🇺🇸 USD - <?= __('usd_name') ?></option>
|
||||
<option value="EUR" data-rate="0.92">🇪🇺 EUR - <?= __('eur_name') ?></option>
|
||||
<option value="GBP" data-rate="0.79">🇬🇧 GBP - <?= __('gbp_name') ?></option>
|
||||
<option value="CNY" data-rate="7.19">🇨🇳 CNY - <?= __('cny_name') ?></option>
|
||||
<option value="JPY" data-rate="150.2">🇯🇵 JPY - <?= __('jpy_name') ?></option>
|
||||
<option value="KRW" data-rate="1330.5">🇰🇷 KRW - <?= __('krw_name') ?></option>
|
||||
<option value="HKD" data-rate="7.82">🇭🇰 HKD - <?= __('hkd_name') ?></option>
|
||||
<option value="TWD" data-rate="31.5">🇹🇼 TWD - <?= __('twd_name') ?></option>
|
||||
<option value="SGD" data-rate="1.34">🇸🇬 SGD - <?= __('sgd_name') ?></option>
|
||||
<option value="MYR" data-rate="4.77">🇲🇾 MYR - <?= __('myr_name') ?></option>
|
||||
<option value="THB" data-rate="35.8">🇹🇭 THB - <?= __('thb_name') ?></option>
|
||||
<option value="VND" data-rate="24500">🇻🇳 VND - <?= __('vnd_name') ?></option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<label class="form-label text-white-50 small fw-bold"><?= __('withdraw_amount') ?> (USDT)</label>
|
||||
<span class="small text-white-50"><?= __('balance') ?>: <span class="text-white"><?= number_format($available, 2) ?> USDT</span></span>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input type="number" class="form-control bg-dark border-secondary text-white py-3" id="fiatWithdrawAmount" placeholder="<?= __('withdraw_amount_min') ?>" oninput="calculateFiatWithdraw()">
|
||||
<button type="button" class="input-group-text bg-dark border-secondary text-primary fw-bold" onclick="setMax('fiatWithdrawAmount', 'fiatReceiveAmount')">ALL</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label text-white-50 small fw-bold mb-2"><?= __('withdraw_password') ?></label>
|
||||
<input type="password" class="form-control bg-dark border-secondary text-white py-3" id="fiatWithdrawPassword" placeholder="<?= __('withdraw_pwd_placeholder') ?>">
|
||||
</div>
|
||||
|
||||
<div class="mb-5 p-4 bg-primary bg-opacity-10 border border-primary border-opacity-20 rounded-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||
<span class="text-white-50 small"><?= __('rate') ?>: 1 USDT ≈ </span>
|
||||
<span class="text-white small" id="fiatWithdrawRateText">1.00 USD</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<span class="text-white-50"><?= __('est_receive_fiat') ?></span>
|
||||
<span class="h4 mb-0 fw-bold text-primary" id="fiatReceiveAmount">0.00 USD</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-primary w-100 py-3 rounded-pill fw-bold shadow-lg" onclick="confirmFiatWithdraw()">
|
||||
<?= __('confirm_order') ?>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rich Content Sections -->
|
||||
<div class="row g-4 mb-5">
|
||||
<div class="col-md-6">
|
||||
<div class="card bg-surface border-secondary rounded-4 h-100">
|
||||
<div class="card-body p-4">
|
||||
<h5 class="text-white fw-bold mb-3"><i class="bi bi-journal-text text-warning me-2"></i> <?= __('withdraw_steps') ?></h5>
|
||||
<div class="text-white-50 small lh-lg">
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-warning text-dark rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">1</span>
|
||||
<span><?= __('withdraw_step1') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-warning text-dark rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">2</span>
|
||||
<span><?= __('withdraw_step2') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3 mb-2">
|
||||
<span class="badge bg-warning text-dark rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">3</span>
|
||||
<span><?= __('withdraw_step3') ?></span>
|
||||
</div>
|
||||
<div class="d-flex gap-3">
|
||||
<span class="badge bg-warning text-dark rounded-circle p-2" style="width:24px; height:24px; display:flex; align-items:center; justify-content:center;">4</span>
|
||||
<span><?= __('withdraw_step4') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card bg-surface border-secondary rounded-4 h-100">
|
||||
<div class="card-body p-4">
|
||||
<h5 class="text-white fw-bold mb-3"><i class="bi bi-shield-lock text-danger me-2"></i> <?= __('security_tips') ?></h5>
|
||||
<div class="text-white-50 small lh-lg">
|
||||
<ul class="ps-3 mb-0">
|
||||
<li><?= __('withdraw_tip1') ?></li>
|
||||
<li><?= __('withdraw_tip2') ?></li>
|
||||
<li><?= __('withdraw_tip3') ?></li>
|
||||
<li><?= __('withdraw_tip4') ?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center text-white-50 small mb-5">
|
||||
<div class="d-flex justify-content-center gap-4">
|
||||
<span><i class="bi bi-shield-check text-success me-1"></i> <?= __('secure') ?></span>
|
||||
<span><i class="bi bi-lightning-fill text-warning me-1"></i> <?= __('fast') ?></span>
|
||||
<span><i class="bi bi-headset text-primary me-1"></i> <?= __('support_247') ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.nav-pills .nav-link { color: #9ba3af; font-weight: 500; }
|
||||
.nav-pills .nav-link.active { background-color: #ffc107; color: #000; }
|
||||
.btn-outline-warning:hover { background-color: #ffc107; color: #000; }
|
||||
</style>
|
||||
...
|
||||
<style>
|
||||
@media (max-width: 768px) {
|
||||
.container { padding-left: 10px !important; padding-right: 10px !important; }
|
||||
.card-body { padding: 1.25rem !important; }
|
||||
.nav-pills .nav-link { padding: 10px 15px !important; font-size: 13px; }
|
||||
.h4 { font-size: 1.25rem !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
let currentWithdrawNetwork = 'TRC20';
|
||||
|
||||