util新建oper_sql.py文件数据库操作
#coding:utf-8
import pymysql
class Opre_sql:
def __init__(self):
self.db=pymysql.connect(host='192.168.1.30',port=3306,user="root",password="123456",db="test",charset="utf8")
self.curcor=self.db.cursor()
def insert_sql(self,serialNo,amount,inst_code):
sql="insert into paygw.order_test (serialNo,amount,`status`,inst_code) VALUES ({0},{1},'process','{2}')".format(serialNo,amount,inst_code)
self.curcor.execute(sql)
self.db.commit()
def sel_status(self):
sql="select * from paygw.order_test where `status`='process'"
self.curcor.execute(sql)
data=self.curcor.fetchall()
#print(data)
return data
def update_sattus(self,serialNo,status):
sql="update paygw.order_test set `status`= '{0}' where serialNo='{1}'".format(status,serialNo)
self.curcor.execute(sql)
self.db.commit()
def update_notify_result(self,serialNo):
sql="update paygw.order_test set core_notif_result= '已通知' where serialNo='{0}'".format(serialNo)
self.curcor.execute(sql)
self.db.commit()
if __name__=="__main__":
a=Opre_sql()
a.insert_sql(1234,30,'cib')
#a.sel_status()
asy_servers.py 挡板和定时任务内容
from flask import Flask, request
import json
import time
from util.oper_sql import Opre_sql
from flask_apscheduler import APScheduler
import requests
oper_sql=Opre_sql()
class Config(object): # 创建配置,用类
# 任务列表
JOBS = [
# { # 第一个任务
# 'id': 'job1',
# 'func': '__main__:job_1',
# 'args': (1, 2),
# 'trigger': 'cron', # cron表示定时任务
# 'hour': 19,
# 'minute': 27
# },
{ # 第二个任务,每隔5S执行一次
'id': 'job2',
'func': '__main__:sany_order', # 方法名
#'args': (1, 2), # 入参
'trigger': 'interval', # interval表示循环任务
'seconds': 5,
}
]
def sany_order():
process_order=oper_sql.sel_status()
if len(process_order)==0:
print("无需处理")
else:
for i in range(len(process_order)):
serialNo=process_order[i][0]
amount=float(process_order[i][1])
#status=process_order[i][2]
if amount<=10.00:
tranStatus="0"
status='fail'
respMsg='处理失败'
respCode='E0001'
else:
tranStatus="1"
status='success'
respMsg='处理成功'
respCode = 'E0000'
print("tranStatus:",tranStatus)
print(serialNo,type(serialNo), type(amount))
url="http://192.168.30.33:8087/outter/payCib/deputeAsyNotify"
data={
"version":"1.0.2",
"mchtId":"xiaoxian001",
"mac": "XggLWznW3Ov02PsPenuRhEAeVkXyezg3MxzyukvR847RKJV2Vh5RBNuAR2NpiiuV646k+5SNTfcxPPJhs+3gDqrvICalfZMgNb91Hc00uLXpcIIHTPK4sD2tXc+QEIzKMuNFQvehPPHohGaAP3ekLBHKjHVMHGsyzVEQkpQrj9s=",
"signType": "RSA",
"serialNo":serialNo,
"respCode":respCode,
"respMsg":respMsg,
"traceNo":"2001201905131440303127006",
"stateTime":"20190513144224",
"tranStatus":tranStatus,
"transTime":"20190513144030",
"acctNo":"6214622521000633165",
"amount":amount,
"currency":"156",
"bankNo":"05004",
"bizType":"3001"
}
headers={"Content-Type":"application/json"}
res=requests.post(url,data=json.dumps(data),headers=headers)
print("回掉响应信息:",res.text)
oper_sql.update_sattus(serialNo,status)#更新表状态
print(serialNo,amount,status)
app = Flask(__name__)
app.config.from_object(Config()) # 为实例化的flask引入配置
@app.route('/depute', methods=['POST'])
def depute():
if request.method=="POST":
serialNo=request.json["serialNo"]
amount=request.json["amount"]
oper_sql.insert_sql(serialNo,amount,'cib')
print(serialNo,amount)
data={
"respCode": "A0523",
"respMsg": "订单处理中",
"version": "1.0.2",
"mchtId": "ORG07*************089",
"signType": "RSA",
"mac": "go/USPoYMpD4hiWokrsB3imKg0ZSWkV/PmO+IE4HMELFo1RlUdlt/WG58OGpfxuBTeaB3W/9Z8r6ofW+o2Y1teNBwtB02pQTiPte1AmlvjE9zvD8KcPgrhFzBy0tNnpA8k89cfLJCHri3aETzmWRaaSxasS/JkoHTQ0j7iB5QdQ=",
"serialNo": "2****************006",
"traceNo": "3*****************60154",
"transTime": "20210823175339",
"stateTime": "20210823174720",
"tranStatus":'2',
"acctNo": "6****************65",
"bankNo": "05013",
"amount": float(amount),
"currency": "156",
"desc": "测试用",
"ext": ""
}
#print(type(data))
return json.dumps(data,ensure_ascii=False)
@app.route('/core_notif',methods=['POST','GET'])
def core_notif():
if request.method=='POST':
#serialNo=request.json["serialNo"]
data={"respCode":"G0000","respMsg":"交易成功"}
oper_sql.update_notify_result("20210910000000000008")
return json.dumps(data,ensure_ascii=False)
if __name__ == '__main__':
scheduler = APScheduler()
scheduler.init_app(app)
#scheduler.start()
app.run(debug=True, host='127.0.0.1', port='8080')