|
@@ -165,11 +165,13 @@ function normalizeChannelList(raw: unknown): RemittanceChannel[] {
|
|
|
return output;
|
|
return output;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** 支付展示/提交金额 = 标价 × 通道 `rate`;`rate` 为 null 或非有限数时按 1。 */
|
|
|
|
|
|
|
+/** 支付展示/提交金额 = 标价 × 通道 `rate`;`rate` 为 null 或非有限数时按 1。金额最多保留两位小数。 */
|
|
|
export function payAmountWithChannelRate(basePrice: number, rate: number | null): number {
|
|
export function payAmountWithChannelRate(basePrice: number, rate: number | null): number {
|
|
|
if (!Number.isFinite(basePrice) || basePrice < 0) return 0;
|
|
if (!Number.isFinite(basePrice) || basePrice < 0) return 0;
|
|
|
const mult = rate != null && Number.isFinite(rate) ? rate : 1;
|
|
const mult = rate != null && Number.isFinite(rate) ? rate : 1;
|
|
|
- return Math.round(basePrice * mult * 1e8) / 1e8;
|
|
|
|
|
|
|
+ const product = basePrice * mult;
|
|
|
|
|
+ if (!Number.isFinite(product)) return 0;
|
|
|
|
|
+ return Math.round(product * 100) / 100;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -278,6 +280,8 @@ export async function submitXfgPayOrder(input: {
|
|
|
goodIds: input.goodIds,
|
|
goodIds: input.goodIds,
|
|
|
payName: input.payName,
|
|
payName: input.payName,
|
|
|
payPhone: input.payPhone,
|
|
payPhone: input.payPhone,
|
|
|
|
|
+ /** 与路径中的金额一致:标价×通道 rate 后的实付额;避免后端只读 body 时落到商品原价。 */
|
|
|
|
|
+ amount: input.amount,
|
|
|
};
|
|
};
|
|
|
const data = await postRemittance<unknown>(path, body);
|
|
const data = await postRemittance<unknown>(path, body);
|
|
|
return { raw: data, resultUrl: pickResultUrl(data) };
|
|
return { raw: data, resultUrl: pickResultUrl(data) };
|