diff --git a/models/payfee.xlsx b/models/payfee.xlsx new file mode 100644 index 0000000..8530475 Binary files /dev/null and b/models/payfee.xlsx differ diff --git a/unipay/init.py b/unipay/init.py index afffbcb..7f75124 100644 --- a/unipay/init.py +++ b/unipay/init.py @@ -4,6 +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 # 从 env 或配置载入 provider conf(这里只示例) CONF = { @@ -139,4 +140,7 @@ def load_unipay(): env.create_payment = create_payment env.query_payment = query_payment env.refund_payment = refund_payment + env.get_pay_fee = get_pay_fee + env.sor_get_pay_fee = sor_get_pay_fee + diff --git a/unipay/payfee.py b/unipay/payfee.py new file mode 100644 index 0000000..b69fda1 --- /dev/null +++ b/unipay/payfee.py @@ -0,0 +1,18 @@ +# payfee +from ahserver.serverenv import ServerEnv +from sqlor.dbpools import DBPools +async def get_pay_fee(providerid, amount): + db = DBPools() + env = ServerEnv() + dbname = env.get_module_dbname('unipay') + async with db.sqlorContext(dbname) as sor: + 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 +