Skip to content

回归:0.1.141 订阅订单确认页金额未做汇率换算(#3499 修复被回退) #3584

Description

@methodalgo

Bug 描述

0.1.141 版本中,订阅订单确认页的金额没有经过汇率换算,直接显示套餐 USD price 套上 ¥ 符号。

这是 #3499 的回归——#3510 在 0.1.140 中修复了该问题,但 0.1.141 的提交 93032611("fix: 修复订阅支付金额显示错误")将修复代码回退。

复现步骤

  1. 后台设置 payment_balance_recharge_multiplier = 0.14
  2. 支付方式开启支付宝(CNY 通道)
  3. 创建订阅套餐,price = 9.99(USD 计价)
  4. 用户在前端选择该套餐,进入订单确认页
  5. 确认页显示 ¥9.99,但支付宝实际扣款 ¥71.36(9.99 ÷ 0.14 = 71.36)

期望行为

确认页应显示换算后的 CNY 实付金额:¥71.36

实际行为

确认页显示 ¥9.99(USD price 直接套了 ¥ 符号)

根因分析

提交 93032611(0.1.141)对 frontend/src/views/user/PaymentView.vue 做了以下回退:

#3510 添加的代码(0.1.140,已被删除)

function subscriptionPaymentAmountForCurrency(value: number, currency: string): number {
  if (currency !== DEFAULT_PAYMENT_CURRENCY) return value
  return roundPaymentAmount(value / balanceRechargeMultiplier.value, currency)
}

function subscriptionPaymentAmount(value: number): number {
  return subscriptionPaymentAmountForCurrency(value, selectedCurrency.value)
}

9303261 替换为(0.1.141,丢失换算)

// subPaymentAmount 从:
//   subscriptionPaymentAmount(price)  ← 会除以 multiplier 换算
// 改成了:
//   roundPaymentAmount(price, selectedCurrency.value)  ← 不换算

subscriptionPaymentAmountForCurrency 中的 value / balanceRechargeMultiplier.value 是关键换算逻辑,被完全移除。

数据库证据

订单 amount (USD) pay_amount (CNY) 换算
#21 9.99 71.36 9.99 ÷ 0.14 = 71.36 ✅
#23 9.99 71.36

后端 pay_amount 换算正确,问题仅在前端展示层。

相关提交

提交 日期 说明
88ca0c1d 2026-06-27 PR #3510:修复 #3499,添加换算逻辑 ✅
93032611 2026-06-30 "fix: 修复订阅支付金额显示错误":回退了 #3510 的换算逻辑 ❌

环境

  • Sub2API:0.1.141
  • 支付通道:alipay(CNY)
  • payment_balance_recharge_multiplier:0.14

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions