{(enableOnlineTopUp || enableStripeTopUp || enableWaffoTopUp || enableAlipayTopUp || enableWechatPayTopUp) && (
{
if (value && value >= 1) {
setTopUpCount(value);
setSelectedPreset(null);
await getAmount(value);
}
}}
onBlur={(e) => {
const value = parseInt(e.target.value);
if (!value || value < 1) {
setTopUpCount(1);
getAmount(1);
}
}}
formatter={(value) => (value ? `${value}` : '')}
parser={(value) =>
value ? parseInt(value.replace(/[^\d]/g, '')) : 0
}
extraText={
}
>
{t('实付金额:')}
{renderAmount()}
}
style={{ width: '100%' }}
/>
{payMethods &&
payMethods.filter((m) => m.type !== 'waffo' && m.type !== 'custom1').length > 0 && (
{payMethods
.filter((m) => m.type !== 'waffo' && m.type !== 'custom1')
.map((payMethod) => {
const minTopupVal =
Number(payMethod.min_topup) || 0;
const isStripe = payMethod.type === 'stripe';
const isAlipay = payMethod.type === 'alipay';
const isWechat = payMethod.type === 'wxpay';
const disabled =
(!enableOnlineTopUp && !isStripe && !isAlipay && !isWechat) ||
(!enableStripeTopUp && isStripe) ||
(!enableAlipayTopUp && isAlipay) ||
(!enableWechatPayTopUp && isWechat) ||
minTopupVal > Number(topUpCount || 0);
const buttonEl = (
);
return disabled &&
minTopupVal > Number(topUpCount || 0) ? (
{buttonEl}
) : (
{buttonEl}
);
})}
)}
)}
{(enableOnlineTopUp || enableStripeTopUp || enableWaffoTopUp || enableAlipayTopUp || enableWechatPayTopUp) && (
{t('选择充值额度')}
{(() => {
const { symbol, rate, type } = getCurrencyConfig();
if (type === 'USD') return null;
return (
(1 USD = {rate.toFixed(2)} {symbol})
);
})()}
}
>
{presetAmounts.map((preset, index) => {
const discount =
preset.discount ||
topupInfo?.discount?.[preset.value] ||
1.0;
const originalPrice = preset.value * priceRatio;
const discountedPrice = originalPrice * discount;
const hasDiscount = discount < 1.0;
const actualPay = discountedPrice;
const save = originalPrice - discountedPrice;
// 根据当前货币类型换算显示金额和数量
const { symbol, rate, type } = getCurrencyConfig();
const statusStr = localStorage.getItem('status');
let usdRate = 7; // 默认CNY汇率
try {
if (statusStr) {
const s = JSON.parse(statusStr);
usdRate = s?.usd_exchange_rate || 7;
}
} catch (e) {}
// 充值数量始终以美元数量展示,不随全局展示货币切换。
let displayValue = preset.value;
let displayActualPay = actualPay;
let displaySave = save;
if (type === 'USD') {
// 数量保持USD,价格从CNY转USD
displayActualPay = actualPay / usdRate;
displaySave = save / usdRate;
} else if (type === 'CUSTOM') {
// 自定义货币仅影响价格显示,数量仍显示为美元数量
displayActualPay = (actualPay / usdRate) * rate;
displaySave = (save / usdRate) * rate;
}
return (
{
onlineFormApiRef.current?.setValue(
'topUpCount',
preset.value,
);
if (onPresetCardClick) {
onPresetCardClick(preset);
} else {
selectPresetAmount(preset);
}
}}
>
{formatLargeNumber(displayValue)}
{hasDiscount && (
{t('折').includes('off')
? (
(1 - parseFloat(discount)) *
100
).toFixed(1)
: (discount * 10).toFixed(1)}
{t('折')}
)}
{t('实付')} {symbol}
{displayActualPay.toFixed(2)}
{hasDiscount && displaySave > 0.005 && (
<>
,{t('节省')} {symbol}
{displaySave.toFixed(2)}
>
)}
);
})}
)}
{/* Waffo 充值区域 */}
{enableWaffoTopUp &&
waffoPayMethods &&
waffoPayMethods.length > 0 && (