fix: update H5 withdraw minimum
This commit is contained in:
parent
56a36f5fc2
commit
3015697c41
@ -1,6 +1,7 @@
|
|||||||
import { applyLang, bindHeader, connectToApp, createMask, get, money, navigateTo, post, safeJsonArray, t, toast } from "../bd-static/shared.js";
|
import { applyLang, bindHeader, connectToApp, createMask, get, money, navigateTo, post, safeJsonArray, t, toast } from "../bd-static/shared.js";
|
||||||
|
|
||||||
const query = new URLSearchParams(window.location.search);
|
const query = new URLSearchParams(window.location.search);
|
||||||
|
const CASH_OUT_MIN_AMOUNT = 100;
|
||||||
const state = {
|
const state = {
|
||||||
identity: readIdentity(),
|
identity: readIdentity(),
|
||||||
activeAction: query.get("activeAction") || "Exchange",
|
activeAction: query.get("activeAction") || "Exchange",
|
||||||
@ -353,8 +354,8 @@ function openCashSheet() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function submitCash(mask) {
|
async function submitCash(mask) {
|
||||||
if (!(state.kyc?.status === "PASS" && state.bankCard?.id && state.cashAmount >= 50)) {
|
if (!(state.kyc?.status === "PASS" && state.bankCard?.id && state.cashAmount >= CASH_OUT_MIN_AMOUNT)) {
|
||||||
if (!state.bankCard?.id && state.cashAmount >= 50) {
|
if (!state.bankCard?.id && state.cashAmount >= CASH_OUT_MIN_AMOUNT) {
|
||||||
mask.remove();
|
mask.remove();
|
||||||
openImproveDialog();
|
openImproveDialog();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ const text = {
|
|||||||
amount: "Amount",
|
amount: "Amount",
|
||||||
coins: "Coins",
|
coins: "Coins",
|
||||||
dollar: "Dollar",
|
dollar: "Dollar",
|
||||||
minimum_cash_out: "Minimum cash out is $50",
|
minimum_cash_out: "Minimum cash out is $100",
|
||||||
bd_policy_link: "BD policy",
|
bd_policy_link: "BD policy",
|
||||||
bd_leader_policy: "BD leader policy",
|
bd_leader_policy: "BD leader policy",
|
||||||
bd_policy: "BD policy",
|
bd_policy: "BD policy",
|
||||||
@ -138,7 +138,7 @@ const text = {
|
|||||||
to_improve: "To improve",
|
to_improve: "To improve",
|
||||||
cash_withdrawal_tips: "Cash withdrawal submitted",
|
cash_withdrawal_tips: "Cash withdrawal submitted",
|
||||||
enter_cash_out_amount: "Enter cash out amount",
|
enter_cash_out_amount: "Enter cash out amount",
|
||||||
cash_out_minimum: "Cash out minimum: $50",
|
cash_out_minimum: "Cash out minimum: $100",
|
||||||
change_withdrawal_method: "Change withdrawal method",
|
change_withdrawal_method: "Change withdrawal method",
|
||||||
please_select_bank_card: "Please select bank card",
|
please_select_bank_card: "Please select bank card",
|
||||||
prompt: "Prompt",
|
prompt: "Prompt",
|
||||||
|
|||||||
@ -59,7 +59,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
<div class="hint-row">
|
<div class="hint-row">
|
||||||
<span data-i18n="minimum">Minimum 50 USD</span>
|
<span data-i18n="minimum">Minimum 100 USD</span>
|
||||||
<button class="text-action" type="button" data-i18n="all">All</button>
|
<button class="text-action" type="button" data-i18n="all">All</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -144,6 +144,6 @@
|
|||||||
<div class="toast" hidden></div>
|
<div class="toast" hidden></div>
|
||||||
<div class="home-indicator" aria-hidden="true"></div>
|
<div class="home-indicator" aria-hidden="true"></div>
|
||||||
</div>
|
</div>
|
||||||
<script src="./script.js?v=20260428-2215" defer></script>
|
<script src="./script.js?v=20260501-1000" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
(function () {
|
(function () {
|
||||||
const API_BASE_URL = "https://jvapi.haiyihy.com";
|
const API_BASE_URL = "https://jvapi.haiyihy.com";
|
||||||
const EXCHANGE_RATE = 80000;
|
const EXCHANGE_RATE = 80000;
|
||||||
|
const WITHDRAW_MIN_AMOUNT = 100;
|
||||||
const supportedLanguages = ["en", "ar", "tr", "id"];
|
const supportedLanguages = ["en", "ar", "tr", "id"];
|
||||||
const languageLabels = {
|
const languageLabels = {
|
||||||
en: "EN",
|
en: "EN",
|
||||||
@ -27,7 +28,7 @@
|
|||||||
transfer_to: "Transfer to",
|
transfer_to: "Transfer to",
|
||||||
search: "Search",
|
search: "Search",
|
||||||
searching: "Searching...",
|
searching: "Searching...",
|
||||||
minimum: "Minimum 50 USD",
|
minimum: "Minimum 100 USD",
|
||||||
all: "All",
|
all: "All",
|
||||||
exchange_rate: "Exchange rate",
|
exchange_rate: "Exchange rate",
|
||||||
payment_method: "USDT TRC20 address",
|
payment_method: "USDT TRC20 address",
|
||||||
@ -50,7 +51,7 @@
|
|||||||
missing_payment_info: "Please add a TRC20 USDT address",
|
missing_payment_info: "Please add a TRC20 USDT address",
|
||||||
invalid_address: "Please enter a valid TRC20 USDT address",
|
invalid_address: "Please enter a valid TRC20 USDT address",
|
||||||
invalid_amount: "Please enter a valid amount",
|
invalid_amount: "Please enter a valid amount",
|
||||||
amount_too_low: "Minimum withdrawal amount is 50 USD",
|
amount_too_low: "Minimum withdrawal amount is 100 USD",
|
||||||
amount_exceeds_balance: "Amount exceeds salary",
|
amount_exceeds_balance: "Amount exceeds salary",
|
||||||
payee_not_found: "User not found",
|
payee_not_found: "User not found",
|
||||||
missing_payee: "Please search and select a user",
|
missing_payee: "Please search and select a user",
|
||||||
@ -79,7 +80,7 @@
|
|||||||
transfer_to: "تحويل إلى",
|
transfer_to: "تحويل إلى",
|
||||||
search: "بحث",
|
search: "بحث",
|
||||||
searching: "جار البحث...",
|
searching: "جار البحث...",
|
||||||
minimum: "الحد الأدنى 50 USD",
|
minimum: "الحد الأدنى 100 USD",
|
||||||
all: "الكل",
|
all: "الكل",
|
||||||
exchange_rate: "سعر التبديل",
|
exchange_rate: "سعر التبديل",
|
||||||
payment_method: "عنوان USDT TRC20",
|
payment_method: "عنوان USDT TRC20",
|
||||||
@ -102,7 +103,7 @@
|
|||||||
missing_payment_info: "يرجى إضافة عنوان USDT TRC20",
|
missing_payment_info: "يرجى إضافة عنوان USDT TRC20",
|
||||||
invalid_address: "يرجى إدخال عنوان USDT TRC20 صالح",
|
invalid_address: "يرجى إدخال عنوان USDT TRC20 صالح",
|
||||||
invalid_amount: "يرجى إدخال مبلغ صالح",
|
invalid_amount: "يرجى إدخال مبلغ صالح",
|
||||||
amount_too_low: "الحد الأدنى للسحب هو 50 USD",
|
amount_too_low: "الحد الأدنى للسحب هو 100 USD",
|
||||||
amount_exceeds_balance: "المبلغ يتجاوز الراتب",
|
amount_exceeds_balance: "المبلغ يتجاوز الراتب",
|
||||||
payee_not_found: "لم يتم العثور على المستخدم",
|
payee_not_found: "لم يتم العثور على المستخدم",
|
||||||
missing_payee: "يرجى البحث واختيار مستخدم",
|
missing_payee: "يرجى البحث واختيار مستخدم",
|
||||||
@ -131,7 +132,7 @@
|
|||||||
transfer_to: "Transfer to",
|
transfer_to: "Transfer to",
|
||||||
search: "Search",
|
search: "Search",
|
||||||
searching: "Searching...",
|
searching: "Searching...",
|
||||||
minimum: "Minimum 50 USD",
|
minimum: "Minimum 100 USD",
|
||||||
all: "All",
|
all: "All",
|
||||||
exchange_rate: "Exchange rate",
|
exchange_rate: "Exchange rate",
|
||||||
payment_method: "USDT TRC20 address",
|
payment_method: "USDT TRC20 address",
|
||||||
@ -154,7 +155,7 @@
|
|||||||
missing_payment_info: "Please add a TRC20 USDT address",
|
missing_payment_info: "Please add a TRC20 USDT address",
|
||||||
invalid_address: "Please enter a valid TRC20 USDT address",
|
invalid_address: "Please enter a valid TRC20 USDT address",
|
||||||
invalid_amount: "Please enter a valid amount",
|
invalid_amount: "Please enter a valid amount",
|
||||||
amount_too_low: "Minimum withdrawal amount is 50 USD",
|
amount_too_low: "Minimum withdrawal amount is 100 USD",
|
||||||
amount_exceeds_balance: "Amount exceeds salary",
|
amount_exceeds_balance: "Amount exceeds salary",
|
||||||
payee_not_found: "User not found",
|
payee_not_found: "User not found",
|
||||||
missing_payee: "Please search and select a user",
|
missing_payee: "Please search and select a user",
|
||||||
@ -183,7 +184,7 @@
|
|||||||
transfer_to: "Transfer ke",
|
transfer_to: "Transfer ke",
|
||||||
search: "Cari",
|
search: "Cari",
|
||||||
searching: "Mencari...",
|
searching: "Mencari...",
|
||||||
minimum: "Minimum 50 USD",
|
minimum: "Minimum 100 USD",
|
||||||
all: "Semua",
|
all: "Semua",
|
||||||
exchange_rate: "Kurs penukaran",
|
exchange_rate: "Kurs penukaran",
|
||||||
payment_method: "Alamat USDT TRC20",
|
payment_method: "Alamat USDT TRC20",
|
||||||
@ -206,7 +207,7 @@
|
|||||||
missing_payment_info: "Tambahkan alamat USDT TRC20",
|
missing_payment_info: "Tambahkan alamat USDT TRC20",
|
||||||
invalid_address: "Masukkan alamat USDT TRC20 yang valid",
|
invalid_address: "Masukkan alamat USDT TRC20 yang valid",
|
||||||
invalid_amount: "Masukkan jumlah yang valid",
|
invalid_amount: "Masukkan jumlah yang valid",
|
||||||
amount_too_low: "Minimum penarikan adalah 50 USD",
|
amount_too_low: "Minimum penarikan adalah 100 USD",
|
||||||
amount_exceeds_balance: "Jumlah melebihi gaji",
|
amount_exceeds_balance: "Jumlah melebihi gaji",
|
||||||
payee_not_found: "Pengguna tidak ditemukan",
|
payee_not_found: "Pengguna tidak ditemukan",
|
||||||
missing_payee: "Cari dan pilih pengguna",
|
missing_payee: "Cari dan pilih pengguna",
|
||||||
@ -510,7 +511,7 @@
|
|||||||
exceedsBalance ||
|
exceedsBalance ||
|
||||||
missingWithdrawInfo ||
|
missingWithdrawInfo ||
|
||||||
missingPayee ||
|
missingPayee ||
|
||||||
(currentMode === "withdraw" && amount < 50);
|
(currentMode === "withdraw" && amount < WITHDRAW_MIN_AMOUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
function showToast(keyOrText, fallback) {
|
function showToast(keyOrText, fallback) {
|
||||||
@ -668,7 +669,7 @@
|
|||||||
function validateAmount(requireMinimum) {
|
function validateAmount(requireMinimum) {
|
||||||
const amount = activeAmount();
|
const amount = activeAmount();
|
||||||
if (!amount || amount <= 0) return "invalid_amount";
|
if (!amount || amount <= 0) return "invalid_amount";
|
||||||
if (requireMinimum && amount < 50) return "amount_too_low";
|
if (requireMinimum && amount < WITHDRAW_MIN_AMOUNT) return "amount_too_low";
|
||||||
if (amount > availableBalance) return "amount_exceeds_balance";
|
if (amount > availableBalance) return "amount_exceeds_balance";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
const API_BASE_URL = "https://jvapi.haiyihy.com";
|
const API_BASE_URL = "https://jvapi.haiyihy.com";
|
||||||
|
const CASH_OUT_MIN_AMOUNT = 100;
|
||||||
|
|
||||||
let headers = {
|
let headers = {
|
||||||
authorization: "Bearer undefined",
|
authorization: "Bearer undefined",
|
||||||
@ -547,12 +548,12 @@ async function renderCashOutPanel(panel) {
|
|||||||
const [cards, kyc] = await Promise.allSettled([get("/wallet/bank-card/list"), get("/wallet/withdraw-info/list")]);
|
const [cards, kyc] = await Promise.allSettled([get("/wallet/bank-card/list"), get("/wallet/withdraw-info/list")]);
|
||||||
const card = (cards.value?.body || []).find((item) => item.use);
|
const card = (cards.value?.body || []).find((item) => item.use);
|
||||||
const info = kyc.value?.body?.[0];
|
const info = kyc.value?.body?.[0];
|
||||||
panel.innerHTML = `<div class="form-row"><input id="amount" placeholder="50" inputmode="decimal"></div><div id="card"></div><div id="kyc"></div><button class="primary" id="submit">Cash out</button>`;
|
panel.innerHTML = `<div class="form-row"><input id="amount" placeholder="${CASH_OUT_MIN_AMOUNT}" inputmode="decimal"></div><div id="card"></div><div id="kyc"></div><button class="primary" id="submit">Cash out</button>`;
|
||||||
$("#card").appendChild(card ? row({ title: card.cardType, sub: `Card: ${card.cardNo}`, side: card.payee }) : row({ title: "No bank cards in use", sub: "Add bank card", tag: "Add", onClick: () => navigate("/bank-card") }));
|
$("#card").appendChild(card ? row({ title: card.cardType, sub: `Card: ${card.cardNo}`, side: card.payee }) : row({ title: "No bank cards in use", sub: "Add bank card", tag: "Add", onClick: () => navigate("/bank-card") }));
|
||||||
$("#kyc").appendChild(info ? row({ title: `KYC: ${info.status}`, sub: `Contact: ${info.contactNumber || "-"}`, tag: "KYC" }) : row({ title: "Complete KYC", sub: "No KYC information", tag: "KYC", onClick: () => navigate("/KYC") }));
|
$("#kyc").appendChild(info ? row({ title: `KYC: ${info.status}`, sub: `Contact: ${info.contactNumber || "-"}`, tag: "KYC" }) : row({ title: "Complete KYC", sub: "No KYC information", tag: "KYC", onClick: () => navigate("/KYC") }));
|
||||||
$("#submit").addEventListener("click", async () => {
|
$("#submit").addEventListener("click", async () => {
|
||||||
const amount = Number($("#amount").value);
|
const amount = Number($("#amount").value);
|
||||||
if (!card?.id || !amount || amount < 50) return toast("Please complete information and enter at least 50");
|
if (!card?.id || !amount || amount < CASH_OUT_MIN_AMOUNT) return toast(`Please complete information and enter at least ${CASH_OUT_MIN_AMOUNT}`);
|
||||||
try {
|
try {
|
||||||
await post("/wallet/bank/withdraw", { amount, acceptBankCardId: card.id, salaryType: cfg.salaryType || (getIdentity() === "HOST" ? "HOST_SALARY" : "BD_SALARY") });
|
await post("/wallet/bank/withdraw", { amount, acceptBankCardId: card.id, salaryType: cfg.salaryType || (getIdentity() === "HOST" ? "HOST_SALARY" : "BD_SALARY") });
|
||||||
toast("Cash withdrawal submitted");
|
toast("Cash withdrawal submitted");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user