bugfix
This commit is contained in:
parent
4ff6d1c826
commit
7098d92f05
@ -13,6 +13,7 @@ CONF = {
|
|||||||
"mail": os.getenv("MAIL", ""),
|
"mail": os.getenv("MAIL", ""),
|
||||||
"password": os.getenv("PASSWORD", ""),
|
"password": os.getenv("PASSWORD", ""),
|
||||||
"from_mail": os.getenv("FROM_MAIL", "")
|
"from_mail": os.getenv("FROM_MAIL", "")
|
||||||
|
"account_no": os.getenv("ACCOUNT_NO", "")
|
||||||
},
|
},
|
||||||
"wechat": {
|
"wechat": {
|
||||||
"mchid": os.getenv("WXP_MCHID",""),
|
"mchid": os.getenv("WXP_MCHID",""),
|
||||||
@ -44,6 +45,7 @@ async def create_payment(request, params_kw=None):
|
|||||||
if params_kw is None:
|
if params_kw is None:
|
||||||
params_kw = request.params_kw
|
params_kw = request.params_kw
|
||||||
data = params_kw
|
data = params_kw
|
||||||
|
data.request = request
|
||||||
provider = data.get("provider")
|
provider = data.get("provider")
|
||||||
if provider not in PROVIDERS:
|
if provider not in PROVIDERS:
|
||||||
return {"error":"unknown provider"}
|
return {"error":"unknown provider"}
|
||||||
@ -65,6 +67,9 @@ async def create_payment(request, params_kw=None):
|
|||||||
plog = await pl.new_log(userid, orgid, payment_name, amount, fee, client_ip, currency=currency)
|
plog = await pl.new_log(userid, orgid, payment_name, amount, fee, client_ip, currency=currency)
|
||||||
if plog:
|
if plog:
|
||||||
data.out_trade_no = plog.id
|
data.out_trade_no = plog.id
|
||||||
|
data.customerid = orgid
|
||||||
|
data.userid = userid
|
||||||
|
data.client_ip = cloent_ip
|
||||||
res = await PROVIDERS[provider].create_payment(data)
|
res = await PROVIDERS[provider].create_payment(data)
|
||||||
return res
|
return res
|
||||||
raise Exception('write payment_log error')
|
raise Exception('write payment_log error')
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
from random import randint
|
from random import randint
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
|
import urllib
|
||||||
import poplib
|
import poplib
|
||||||
from appPublic.log import debug
|
from appPublic.log import debug
|
||||||
from appPublic.dictObject import DictObject
|
from appPublic.dictObject import DictObject
|
||||||
@ -62,28 +63,50 @@ class EmailClient:
|
|||||||
content = content.decode('utf-8')
|
content = content.decode('utf-8')
|
||||||
return content
|
return content
|
||||||
|
|
||||||
class TransferPay(Gateway):
|
class TransferGateway(Gateway):
|
||||||
def __init__(self, from_mail="", pop3server="", email="", password=""):
|
def __init__(self, from_mail="", pop3server="", email="", password="", account_no):
|
||||||
self.from_email = from_email
|
self.from_email = from_email
|
||||||
self.pop3server = pop3server
|
self.pop3server = pop3server
|
||||||
self.email = email
|
self.email = email
|
||||||
self.password = password
|
self.password = password
|
||||||
|
self.account_no = account_no
|
||||||
self.running = False
|
self.running = False
|
||||||
|
|
||||||
|
async def new_tcode(self, sor):
|
||||||
|
tcode = self.gen_mailcode()
|
||||||
|
sql = "select * from transfercode where tcode=${tcode}$ and status='0'"
|
||||||
|
while True
|
||||||
|
recs = await sor.sqlExe(sql, {'tcode': tcode})
|
||||||
|
if len(recs) == 0:
|
||||||
|
break
|
||||||
|
tcode = self.gen_mailcode()
|
||||||
|
return tcode
|
||||||
|
|
||||||
async def create_payment(self, payload: Dict[str, Any]) -> str:
|
async def create_payment(self, payload: Dict[str, Any]) -> str:
|
||||||
"""
|
"""
|
||||||
返回一个可以在 H5 里直接重定向的支付宝支付 URL
|
返回一个可以在 H5 里直接重定向的支付宝支付 URL
|
||||||
"""
|
"""
|
||||||
ns = {
|
ns = {
|
||||||
"id": payload["out_trade_no"],
|
"id": payload.out_trade_no,
|
||||||
"customerid": payload['customerid'],
|
"customerid": payload.customerid,
|
||||||
"amount": payload["amount"],
|
"amount": payload.amount,
|
||||||
"tcode": self.gen_mailcode(),
|
|
||||||
"curdate": curDateString(),
|
"curdate": curDateString(),
|
||||||
"curtime": timestampstr(),
|
"curtime": timestampstr(),
|
||||||
"status": '0'
|
"status": '0'
|
||||||
}
|
}
|
||||||
return
|
ns = DictObject(**ns)
|
||||||
|
ns.account_no = self.account_no
|
||||||
|
env = payload.request._run_ns
|
||||||
|
db = DBPools()
|
||||||
|
dbname = env.get_module_dbname('unipay')
|
||||||
|
async with db.sqlorContext(dbname) as sor:
|
||||||
|
sql = "select * from transfercode where tcode=${tcode}$ and status='0'"
|
||||||
|
ns.tcoce = await self.new_tcode(sor)
|
||||||
|
await sor.C('transfercode', ns.copy())
|
||||||
|
url = env.entire_url('transfer_info.ui')
|
||||||
|
query_str = urllib.parse.urlencode(ns)
|
||||||
|
return f'{url}?{query_str}'
|
||||||
|
return None
|
||||||
|
|
||||||
def get_transfer_data(self, mail):
|
def get_transfer_data(self, mail):
|
||||||
assert mail.mailfrom == '95555@message.cmbchina.com'
|
assert mail.mailfrom == '95555@message.cmbchina.com'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user