fix recharge yumi local currency amount

This commit is contained in:
zhx 2026-06-25 23:11:09 +08:00
parent 219b1744ef
commit 13f8d1446f
2 changed files with 45 additions and 3 deletions

View File

@ -830,6 +830,10 @@ var default_api = 'https://api.global-interaction.com/';
var amountUsd = normalizeAmountUsd(
item.amountUsd || item.amount_usd
);
var localAmount = normalizeAmountUsd(
item.amount || item.amountLocal || item.amount_local
);
var currencyCode = item.currency || item.currency_code || '';
return {
product_id: item.id,
productId: item.id,
@ -849,7 +853,11 @@ var default_api = 'https://api.global-interaction.com/';
amount_usdt: amountUsd,
amount_usdt_micro: Math.round(amountUsd * 1000000),
amount_minor: decimalToMinor(amountUsd),
currency_code: item.currency || item.currency_code || '',
// Yumi commodity returns both USD amount and local-currency amount; keep both so H5 display does not treat USD as EGP.
local_amount: localAmount,
localAmount: localAmount,
currency_code: currencyCode,
currencyCode: currencyCode,
raw: item,
};
}

View File

@ -2538,11 +2538,22 @@
return Math.random().toString(36).slice(2, 14);
}
// 本地三方支付按后台 USD->本币汇率展示;无有效汇率时回退 USD 展示但后端仍会拒绝不可用配置。
// Yumi 商品接口会直接返回本币 amount优先用它避免把 1 USD 误显示成 1 EGP。
// 其他应用没有本币商品金额时,继续按后台 USD->本币汇率展示。
function convertedAmount(product, method) {
var currency = method.currency_code || 'USD';
var localAmount = productLocalAmount(product, currency);
if (localAmount > 0) {
return (
localAmount.toFixed(
currencyFractionDigits(currency)
) +
' ' +
currency
);
}
var usd = productUSD(product);
var rate = Number(method.usd_to_currency_rate || 0);
var currency = method.currency_code || 'USD';
var amount =
Number.isFinite(rate) && rate > 0 ? usd * rate : usd;
return (
@ -2552,6 +2563,29 @@
);
}
function productLocalAmount(product, currency) {
var productCurrency = String(
product.currency_code || product.currencyCode || ''
).toUpperCase();
var methodCurrency = String(currency || '').toUpperCase();
if (
productCurrency &&
methodCurrency &&
productCurrency !== methodCurrency
) {
return 0;
}
var amount = Number(
product.local_amount ||
product.localAmount ||
product.amount ||
product.amountLocal ||
product.amount_local ||
0
);
return Number.isFinite(amount) && amount > 0 ? amount : 0;
}
function productUSD(product) {
var directUSDT = Number(
product.amount_usdt || product.amountUsdt || 0