fix: get_pay_fee 返回 fee_rate 而非 fee_rate*amount,修复双重乘法

get_pay_fee() 返回 fee_rate*amount,但 create_payment()
又把返回值当 feerate 传给 new_log(),new_log() 内部又乘
一次 amount,导致 pay_fee = fee_rate * amount²。

修复:
- get_pay_fee() 改为只返回 fee_rate
- create_payment() 自己计算 fee = feerate * amount
- new_log() 传 feerate 而非 fee
This commit is contained in:
yumoqing 2026-07-01 11:51:20 +08:00
parent a9c99305fc
commit 7a0e87e735
2 changed files with 4 additions and 3 deletions

View File

@ -105,7 +105,8 @@ async def create_payment(request, params_kw=None):
raise e
notify_url = env.entire_url(f'notify/{provider}')
pl = PaymentLog(request._run_ns)
fee = await get_pay_fee(provider, data.amount)
feerate = await get_pay_fee(provider, data.amount)
fee = feerate * data.amount
channel = get_provider_channel(provider)
userid = await env.get_user()
orgid = await env.get_userorgid()
@ -116,7 +117,7 @@ async def create_payment(request, params_kw=None):
currency = data.currency
plog = await pl.new_log(userid, orgid, provider,
amount,
fee, client_ip, currency=currency)
feerate, client_ip, currency=currency)
if plog:
data.out_trade_no = plog.id
data.customerid = orgid

View File

@ -81,5 +81,5 @@ async def sor_get_pay_fee(sor, providerid, amount):
exception(f'Exception:{e}')
rec.fee_rate = 0.00
debug(f'{rec=}, {rec.fee_rate=}, {amount=}')
return rec.fee_rate * amount
return rec.fee_rate