bugfix
This commit is contained in:
parent
8fc42ff82b
commit
26e2598125
@ -4,7 +4,7 @@ from appPublic.log import debug,exception
|
||||
from ahserver.serverenv import ServerEnv
|
||||
from .notify import get_provider, get_provider_channel
|
||||
from .paylog import PaymentLog
|
||||
from .payfee import get_pay_fee, sor_get_pay_fee
|
||||
from .payfee import get_pay_fee, sor_get_pay_fee, get_paychannels, get_pay_feerate
|
||||
|
||||
# 从 env 或配置载入 provider conf(这里只示例)
|
||||
CONF = {
|
||||
@ -137,6 +137,8 @@ def load_unipay():
|
||||
PROVIDERS["alipay"] = get_provider("alipay", CONF["alipay"]),
|
||||
PROVIDERS["stripe"] = get_provider("stripe", CONF["stripe"])
|
||||
env = ServerEnv()
|
||||
env.get_paychannels = get_paychannels
|
||||
env.get_pay_feerate = get_pay_feerate
|
||||
env.payment_notify = payment_notify
|
||||
env.create_payment = create_payment
|
||||
env.query_payment = query_payment
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
# payfee
|
||||
from ahserver.serverenv import ServerEnv
|
||||
from sqlor.dbpools import DBPools
|
||||
|
||||
async def get_pay_fee(providerid, amount):
|
||||
db = DBPools()
|
||||
env = ServerEnv()
|
||||
@ -9,10 +10,70 @@ async def get_pay_fee(providerid, amount):
|
||||
return await sor_get_pay_fee(sor, providerid, amount)
|
||||
return None
|
||||
|
||||
async def sor_get_pay_fee(sor, providerid, amount):
|
||||
sql = """select * from payfee where id=${providerid}$"""
|
||||
recs = await sor.sqlExe(sql, {'id': providerid})
|
||||
if len(recs) < 1:
|
||||
return None
|
||||
return amount * recs[0].fee_rate * amount
|
||||
async def get_paychannels():
|
||||
env = ServerEnv()
|
||||
db = DBPools()
|
||||
dbname = env.get_module_dbname('unipay')
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
return await sor_get_paychannels(sor)
|
||||
return None
|
||||
|
||||
async def sor_get_paychannels(sor):
|
||||
env = ServerEnv()
|
||||
dbname = env.get_module_dbname('unipay')
|
||||
biz_date = env.get_business_date(sor)
|
||||
sql = """select
|
||||
a.id, a.name, b.fee_rate
|
||||
from paychannel a left join payfee b
|
||||
on a.id = b.channelid
|
||||
where
|
||||
a.enabled_date <= ${biz_date}$
|
||||
and a.expired_date >= ${biz_date}$
|
||||
and b.enabled_date <= ${biz_date}$
|
||||
and b.expired_date >= ${biz_date}$
|
||||
"""
|
||||
recs = await sor.sqlExe(sql, {'channelid': channelid,
|
||||
'biz_date': biz_date})
|
||||
return recs
|
||||
|
||||
async def get_pay_feerate(sor, channelid):
|
||||
env = ServerEnv()
|
||||
db = DBPools()
|
||||
dbname = env.get_module_dbname('unipay')
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
return await sor_get_pay_feerate(sor, channelid)
|
||||
return None
|
||||
async def sor_get_pay_feerate(sor, channelid):
|
||||
env = ServerEnv()
|
||||
dbname = env.get_module_dbname('unipay')
|
||||
biz_date = env.get_business_date(sor)
|
||||
sql = """select
|
||||
a.id, a.name, b.fee_rate
|
||||
from paychannel a left join payfee b
|
||||
on a.id = b.channelid
|
||||
where
|
||||
a.enabled_date <= ${biz_date}$
|
||||
and a.expired_date >= ${biz_date}$
|
||||
and b.enabled_date <= ${biz_date}$
|
||||
and b.expired_date >= ${biz_date}$
|
||||
and a.id = ${channelid}$
|
||||
"""
|
||||
recs = await sor.sqlExe(sql, {'channelid': channelid,
|
||||
'biz_date': biz_date})
|
||||
if len(recs) > 0:
|
||||
return recs[0]
|
||||
return None
|
||||
|
||||
async def sor_get_pay_fee(sor, providerid, amount):
|
||||
rec = await sor_get_pay_feerate(sor, providerid)
|
||||
if rec is None:
|
||||
e = Exception(f'{providerid} pay channel not found')
|
||||
exception(f'Exception:{e}')
|
||||
raise e
|
||||
if rec.fee_rate is None:
|
||||
e = Exception(f'{providerid} channel has not defined fee rate')
|
||||
exception(f'Exception:{e}')
|
||||
raise e
|
||||
|
||||
return rec.fee_rate * amount
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user