This commit is contained in:
hrx 2025-09-23 17:48:21 +08:00
commit 9b0f0282d4
3 changed files with 282 additions and 75 deletions

View File

@ -43,8 +43,8 @@ async def affirmbz_order(ns={}):
servicename = orgid[0]['servicename'] servicename = orgid[0]['servicename']
product_url = None product_url = None
if ('BCC' in servicename) or ('GPU' in servicename): # if ('BCC' in servicename) or ('GPU' in servicename):
product_url = 'https://console.vcp.baidu.com/bcc/#/bcc/instance/list' # product_url = 'https://console.vcp.baidu.com/bcc/#/bcc/instance/list'
date = await get_business_date(sor=None) date = await get_business_date(sor=None)
# await sor.U('bz_order',{'id':ns['orderid'],'order_date': date}) # await sor.U('bz_order',{'id':ns['orderid'],'order_date': date})
@ -111,14 +111,13 @@ async def affirmbz_order(ns={}):
except Exception as error: except Exception as error:
await sor.rollback() await sor.rollback()
raise error raise error
async def baidu_new_update_resouce(ns={}):
# 增加延迟
import asyncio
await asyncio.sleep(12)
async def get_baidu_orderlist(ns={}):
"""
百度支付
1、获取订单
2、算出购买的产品折扣
3、比对账号余额
"""
db = DBPools() db = DBPools()
async with db.sqlorContext('kboss') as sor: async with db.sqlorContext('kboss') as sor:
baidu_users = await sor.R('baidu_users', {'user_id': ns.get('userid'),'del_flg':'0'}) baidu_users = await sor.R('baidu_users', {'user_id': ns.get('userid'),'del_flg':'0'})
@ -139,15 +138,107 @@ async def get_baidu_orderlist(ns={}):
headers=header, headers=header,
json=nss) as res: json=nss) as res:
data_ = await res.json() data_ = await res.json()
with open('baidu_new_order_after_confirm.txt', 'a+') as f:
f.write(json.dumps(data_) + '\n')
orders = data_['orders']
for item in orders:
order_items = item['orderItems']
for order_info in order_items:
resourceids = ','.join(order_info['shortIds']) if order_info.get('shortIds') else ''
if not resourceids:
continue
resourcestarttime = await time_convert(order_info.get('resourceStartTime')) if order_info.get(
'resourceStartTime') else None
resourceendtime = await time_convert(order_info.get('resourceEndTime')) if order_info.get(
'resourceEndTime') else None
order_key = order_info['key']
update_order_goods_sql = """ UPDATE order_goods og
JOIN bz_order o ON og.orderid = o.id
SET
og.resourceids = '%s',
og.resourcestarttime = '%s',
og.resourceendtime = '%s'
WHERE
og.orderkey = '%s'
AND o.provider_orderid = '%s'; """ \
% (resourceids, resourcestarttime, resourceendtime, order_key, ns.get('order_id'))
await sor.sqlExe(update_order_goods_sql, {})
update_customer_goods_sql = """ UPDATE customer_goods og
JOIN bz_order o ON og.orderid = o.id
SET
og.resourceid = '%s',
og.start_date = '%s',
og.expire_date = '%s'
WHERE
og.orderkey = '%s'
AND o.provider_orderid = '%s'; """ \
% (resourceids, resourcestarttime, resourceendtime, order_key, ns.get('order_id'))
await sor.sqlExe(update_customer_goods_sql, {})
async def baidu_order_cancel(ns={}):
baidu_id = ns['baidu_id']
order_id = ns['order_id']
paydata = {'queryAccountId': baidu_id, 'orderIds': [order_id]}
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
url = 'https://billing.baidubce.com/v1/order/cancel?%s' % ns_format
method = 'POST'
header = {
"Host": "billing.baidubce.com"
}
header = await get_auth_header(method=method, url=url, header=header)
async with aiohttp_client.request(
method=method,
url=url,
headers=header,
json=paydata) as res:
await res.json()
return {
'status': True,
'msg': 'order cancel success'
}
async def get_baidu_orderlist(ns={}):
"""
百度支付
1、获取订单
2、算出购买的产品折扣
3、比对账号余额
"""
# 增加延迟
import asyncio
await asyncio.sleep(1)
db = DBPools()
async with db.sqlorContext('kboss') as sor:
baidu_users = await sor.R('baidu_users', {'user_id': ns.get('userid'),'del_flg':'0'})
user = await sor.R('users', {'id': ns.get('userid')})
orgid = await sor.R('organization', {'id': user[0]['orgid']})
nss = {'uuids': [ns.get('order_id')], 'queryAccountId': baidu_users[0]['baidu_id']}
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
url = 'https://billing.baidubce.com/v1/order/getByUuid?%s' % ns_format
method = 'POST'
header = {
"Host": "billing.baidubce.com",
"ContentType": "application/json;charset=UTF-8"
}
header = await get_auth_header(method=method, url=url, header=header)
async with aiohttp_client.request(
method=method,
url=url,
headers=header,
json=nss) as res:
data_ = await res.json()
with open('baidu_new_order.txt', 'a+') as f:
f.write(json.dumps(data_) + '\n')
orders = data_['orders'] orders = data_['orders']
serviceType = orders[0]['orderItems'] serviceType = orders[0]['orderItems']
# 可能获取得到的是延迟订单 # 可能获取得到的是延迟订单
if orders[0]['type'] == 'REFUND' and orders[0]['status'] != 'CREATED': if orders[0]['type'] == 'REFUND' and orders[0]['status'] != 'CREATED':
return { await update_baidu_order_list({'userid': ns.get('userid')})
'status': False, res_refund = await baidu_confirm_refund_order({'order_id': ns.get('order_id'), 'baidu_id': baidu_users[0]['baidu_id'], 'user_id': ns.get('userid')})
'msg': 'delay_order' return res_refund
}
# 避免重复退订 # 避免重复退订
if orders[0]['type'] == 'REFUND' and orders[0]['status'] == 'CREATED': if orders[0]['type'] == 'REFUND' and orders[0]['status'] == 'CREATED':
@ -166,19 +257,52 @@ async def get_baidu_orderlist(ns={}):
(float(orders[0]['price']), orders[0]['status'], updatetime, ns.get('order_id')) (float(orders[0]['price']), orders[0]['status'], updatetime, ns.get('order_id'))
await sor.sqlExe(update_refund_sql, {}) await sor.sqlExe(update_refund_sql, {})
productType = 'prepay'
# 判断订单item中productType是否有后付费的产品 # 判断订单item中productType是否有后付费的产品
for item in orders: for item in orders:
order_items = item['orderItems'] order_items = item['orderItems']
for order_info in order_items: for order_info in order_items:
postpay_price = order_info['itemFee']['price'] if order_info.get('itemFee') else order_info['catalogPrice'] postpay_price = order_info['itemFee']['price'] if order_info.get('itemFee') else order_info['catalogPrice']
if not postpay_price:
# cpt1Price: 固定配置,按分钟计费
postpay_price = order_info['pricingDetail'].get('cpt1Price') if order_info.get('pricingDetail') else 0
# 确定是否是后付费订单
if order_info['productType'] == 'postpay' and postpay_price != 0: if order_info['productType'] == 'postpay' and postpay_price != 0:
return { productType = 'postpay'
'status': False, # 获取余额
'msg': '暂不支持后付费按量购买, 请联系后台开通' user_balance = await getCustomerBalance(sor, orgid[0]['id'])
} # 判断余额是否大于50
if user_balance < 50:
await sor.rollback()
paydata = {'queryAccountId': baidu_users[0]['baidu_id'], 'orderIds': [ns.get('order_id')]}
ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
url = 'https://billing.baidubce.com/v1/order/cancel?%s' % ns_format
method = 'POST'
header = {
"Host": "billing.baidubce.com"
}
header = await get_auth_header(method=method, url=url, header=header)
async with aiohttp_client.request(
method=method,
url=url,
headers=header,
json=paydata) as res:
await res.json()
ns_record = {
'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'],
'userid': ns.get('userid'),
'reason': '后付费 该账号余额不足50无法完成购买'
}
await user_action_record(ns_record)
return {
'status': False,
'msg': '您的余额小于该产品的起购金额50元, 目前无法购买立即充值'
}
# 实付价格 # 实付价格
total_price = 0 total_price = 0
productType = '' # productType = ''
# 买/续/退 字段映射 # 买/续/退 字段映射
order_type = orders[0]['type'] order_type = orders[0]['type']
@ -211,7 +335,8 @@ async def get_baidu_orderlist(ns={}):
bz_ns['order_date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") bz_ns['order_date'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
bz_ns['thirdparty_order'] = ns.get('order_id') bz_ns['thirdparty_order'] = ns.get('order_id')
bz_ns['source'] = '百度智能云' bz_ns['source'] = '百度智能云'
bz_ns['originalprice'] = orders[0]['price'] # bz_ns['originalprice'] = orders[0]['price']
bz_ns['originalprice'] = sum(i['catalogPrice'] for i in serviceType)
bz_ns['provider_orderid'] = ns.get('order_id') bz_ns['provider_orderid'] = ns.get('order_id')
bz_ns['ordertype'] = orders[0]['productType'] bz_ns['ordertype'] = orders[0]['productType']
bz_ns['servicename'] = orders[0]['serviceType'] bz_ns['servicename'] = orders[0]['serviceType']
@ -220,23 +345,45 @@ async def get_baidu_orderlist(ns={}):
bz_ns['specdataid'] = ns['specdataid'] bz_ns['specdataid'] = ns['specdataid']
await sor.C('bz_order', bz_ns) await sor.C('bz_order', bz_ns)
for i in serviceType: for i in serviceType:
if i['productType'] == 'prepay': # if i['productType'] == 'prepay':
# 预付费 # # 预付费
productType = 'prepay' # productType = 'prepay'
# financePrice = 0 # financePrice = 0
# 获取产品id # 获取产品id
product = await sor.R('product', {'providerpid': 'baidu_' + i['serviceType'], 'del_flg': '0'}) product = await sor.R('product', {'providerpid': 'baidu_' + i['serviceType'], 'del_flg': '0'})
if not product:
return {
'status': False,
'msg': '未配置该产品, 请联系售后处理'
}
# 获取协议 # 获取协议
saleprotocol = await sor.R('saleprotocol', saleprotocol_to_person = await sor.R('saleprotocol',
{'bid_orgid': orgid[0]['id'], 'offer_orgid': orgid[0]['parentid'], {'bid_orgid': orgid[0]['id'], 'offer_orgid': orgid[0]['parentid'],
'del_flg': '0'}) 'del_flg': '0'})
if saleprotocol == []: # 等于空就代表这个客户没有特殊折扣,就要找到买方为*的协议
# 等于空就代表这个客户没有特殊折扣,就要找到买方为*的协议 saleprotocol_to_all = await sor.R('saleprotocol', {'bid_orgid': '*', 'offer_orgid': orgid[0]['parentid'],
saleprotocol = await sor.R('saleprotocol', {'bid_orgid': '*', 'offer_orgid': orgid[0]['parentid'], 'del_flg': '0', 'salemode': '0'})
'del_flg': '0', 'salemode': '0'})
product_salemode = await sor.R('product_salemode', if saleprotocol_to_person:
{'protocolid': saleprotocol[0]['id'], 'productid': product[0]['id'], product_salemode = await sor.R('product_salemode',
'del_flg': '0'}) {'protocolid': saleprotocol_to_person[0]['id'],
'productid': product[0]['id'],
'del_flg': '0'})
if not product_salemode:
product_salemode = await sor.R('product_salemode',
{'protocolid': saleprotocol_to_all[0]['id'],
'productid': product[0]['id'],
'del_flg': '0'})
else:
product_salemode = await sor.R('product_salemode',
{'protocolid': saleprotocol_to_all[0]['id'],
'productid': product[0]['id'],
'del_flg': '0'})
if not product_salemode:
return {
'status': False,
'msg': '还未上线这个产品的协议配置'
}
supply_price = i['itemFee']['price'] if i.get('itemFee') else i['catalogPrice'] supply_price = i['itemFee']['price'] if i.get('itemFee') else i['catalogPrice']
financePrice = abs(supply_price * product_salemode[0]['discount']) financePrice = abs(supply_price * product_salemode[0]['discount'])
total_price += financePrice total_price += financePrice
@ -262,10 +409,11 @@ async def get_baidu_orderlist(ns={}):
nss['chargeduration'] = i.get('time') nss['chargeduration'] = i.get('time')
nss['unit'] = i.get('timeUnit') nss['unit'] = i.get('timeUnit')
nss['resourceids'] = ','.join(i['shortIds']) if i.get('shortIds') else '' nss['resourceids'] = ','.join(i['shortIds']) if i.get('shortIds') else ''
nss['orderkey'] = i.get('key')
# 如果是续费订单 由于没有返回日期, 重新计算日期 # 如果是续费订单 由于没有返回日期, 重新计算日期
if order_type == 'RENEW': if order_type == 'RENEW':
history_time_sql = "select resourcestarttime, resourceendtime from order_goods where resourceids = '%s' order by resourceendtime desc;" % \ history_time_sql = "select resourcestarttime, resourceendtime from order_goods where FIND_IN_SET('%s', resourceids) order by resourceendtime desc;" % \
nss['resourceids'] nss['resourceids']
history_time = await sor.sqlExe(history_time_sql, {}) history_time = await sor.sqlExe(history_time_sql, {})
new_end_time = await cal_expire_time(history_time=history_time[0]['resourceendtime'], new_end_time = await cal_expire_time(history_time=history_time[0]['resourceendtime'],
@ -274,27 +422,45 @@ async def get_baidu_orderlist(ns={}):
nss['resourcestarttime'] = history_time[0]['resourcestarttime'] nss['resourcestarttime'] = history_time[0]['resourcestarttime']
nss['resourceendtime'] = new_end_time nss['resourceendtime'] = new_end_time
else: else:
nss['resourcestarttime'] = await time_convert(i.get('resourceStartTime')) if i.get( if i.get('resourceStartTime'):
'resourceStartTime') else None nss['resourcestarttime'] = await time_convert(i.get('resourceStartTime'))
nss['resourceendtime'] = await time_convert(i.get('resourceEndTime')) if i.get( else:
'resourceEndTime') else None nss['resourcestarttime'] = await time_convert(orders[0]['updateTime'])
if i.get('resourceEndTime'):
nss['resourceendtime'] = await time_convert(i.get('resourceEndTime'))
# 后付费没有资源结束时间
if i.get('productType') == 'prepay':
end_time = await time_convert(orders[0]['updateTime'])
nss['resourceendtime'] = await cal_expire_time(history_time=end_time,
chargeduration=nss['chargeduration'],
unit=nss['unit'])
else:
nss['resourceendtime'] = None
await sor.C('order_goods', nss) await sor.C('order_goods', nss)
# 循环后更新订单中总价 # 循环后更新订单中总价
await sor.U('bz_order', {'id': bz_ns['id'], 'amount': round(total_price, 2)}) await sor.U('bz_order', {'id': bz_ns['id'], 'amount': round(total_price, 2)})
except Exception as e: except Exception as e:
await baidu_order_cancel({'baidu_id': baidu_users[0]['baidu_id'], 'order_id': ns.get('order_id')})
import traceback
ns_record = { ns_record = {
'orderid': ns.get('order_id'), 'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'], 'ordertype': orders[0]['type'],
'userid': ns.get('userid'), 'userid': ns.get('userid'),
'reason': '发生错误, %s' % str(e)[:100] 'reason': '发生错误, %s' % str(traceback.format_exc())
} }
await user_action_record(ns_record) await user_action_record(ns_record)
import traceback
with open('baiducloud_err.txt', 'w') as f: with open('baiducloud_err.txt', 'w') as f:
f.write(str(e)+ traceback.format_exc()) f.write(str(e) + str(traceback.format_exc()))
traceback.print_exc() traceback.print_exc()
await sor.rollback()
return {
'status': False,
'msg': '产品错误, 请联系售后'
}
# 判断用户账户余额是否足够支付 # 判断用户账户余额是否足够支付
try: try:
@ -304,7 +470,7 @@ async def get_baidu_orderlist(ns={}):
if round(total_price,2) <= count: if round(total_price,2) <= count:
#判断预付费或者后付费 #判断预付费或者后付费
if productType == 'prepay': if productType == 'prepay' or productType == 'postpay':
# 调用扣费接口 # 调用扣费接口
affirmbz_order_ns = { affirmbz_order_ns = {
'sor': sor, 'sor': sor,
@ -319,7 +485,7 @@ async def get_baidu_orderlist(ns={}):
'orderid': ns.get('order_id'), 'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'], 'ordertype': orders[0]['type'],
'userid': ns.get('userid'), 'userid': ns.get('userid'),
'reason': '支付错误, 请联系售后' 'reason': '支付错误, 请联系售后, %s' % affirmbz_order_res.get('msg')
} }
await user_action_record(ns_record) await user_action_record(ns_record)
return { return {
@ -335,22 +501,21 @@ async def get_baidu_orderlist(ns={}):
} }
else: else:
# 调用支付订单接口 # 调用支付订单接口
# paydata = {'queryAccountId':baidu_users[0]['baidu_id'],'orderId':ns.get('order_id')} paydata = {'queryAccountId':baidu_users[0]['baidu_id'],'orderId':ns.get('order_id')}
# ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()]) ns_format = '&'.join(['%s=%s' % (k, v) for k, v in ns.items()])
# url = 'https://billing.baidubce.com/v1/order/pay?%s' % ns_format url = 'https://billing.baidubce.com/v1/order/pay?%s' % ns_format
# method = 'POST' method = 'POST'
# header = { header = {
# "Host": "billing.baidubce.com" "Host": "billing.baidubce.com"
# } }
# header = await get_auth_header(method=method, url=url, header=header) header = await get_auth_header(method=method, url=url, header=header)
# async with aiohttp_client.request( async with aiohttp_client.request(
# method=method, method=method,
# url=url, url=url,
# headers=header, headers=header,
# json=paydata) as res: json=paydata) as res:
# data_ = await res.json() data_ = await res.json()
# if data_ == {'success': True}: if data_ == {'success': True}:
if True:
ns_record = { ns_record = {
'orderid': ns.get('order_id'), 'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'], 'ordertype': orders[0]['type'],
@ -358,12 +523,23 @@ async def get_baidu_orderlist(ns={}):
'reason': '购买成功' 'reason': '购买成功'
} }
await user_action_record(ns_record) await user_action_record(ns_record)
return { ns_cron_job = {
'status': True, 'id': uuid(),
'orderid': bz_ns['id'] 'source': 'baidu',
'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'],
'userid': ns.get('userid'),
'reason': 'buy success'
} }
await sor.C('baidu_cron_job', ns_cron_job)
# return {
# 'status': True,
# 'orderid': bz_ns['id']
# }
else: else:
await sor.rollback() await sor.rollback()
await baidu_order_cancel(
{'baidu_id': baidu_users[0]['baidu_id'], 'order_id': ns.get('order_id')})
ns_record = { ns_record = {
'orderid': ns.get('order_id'), 'orderid': ns.get('order_id'),
'ordertype': orders[0]['type'], 'ordertype': orders[0]['type'],
@ -426,10 +602,26 @@ async def get_baidu_orderlist(ns={}):
await user_action_record(ns_record) await user_action_record(ns_record)
return {'status': False,'msg': '该账号余额不足,无法完成购买'} return {'status': False,'msg': '该账号余额不足,无法完成购买'}
except Exception as e: except Exception as e:
await baidu_order_cancel({'baidu_id': baidu_users[0]['baidu_id'], 'order_id': ns.get('order_id')})
import traceback import traceback
with open('baiducloud_err.txt', 'w') as f: with open('baiducloud_err.txt', 'w') as f:
f.write(str(e)+ traceback.format_exc()) f.write(str(e)+ traceback.format_exc())
traceback.print_exc() traceback.print_exc()
await sor.rollback()
return {
'status': False,
'msg': '产品错误, 请联系售后'
}
# 更新资源时间 资源id
# if order_type == 'NEW':
# await baidu_new_update_resouce(ns)
return {
'status': True,
'orderid': bz_ns['id'],
'originalprice': bz_ns.get('originalprice'),
'servicename': bz_ns.get('servicename'),
'amount': total_price
}
async def get_order_list_base_page(baidu_id, pageNo=1, pageSize=500): async def get_order_list_base_page(baidu_id, pageNo=1, pageSize=500):
ns = {'queryAccountId': baidu_id, 'pageNo': pageNo, 'pageSize': pageSize} ns = {'queryAccountId': baidu_id, 'pageNo': pageNo, 'pageSize': pageSize}
@ -520,6 +712,11 @@ async def update_baidu_order_list(ns={}):
} }
async def baidu_confirm_refund_order(ns={}): async def baidu_confirm_refund_order(ns={}):
# ns = {
# 'order_id': ["03ee8d08da79458b8f8d3157d3498330", "e711729606024080bf9613d975294616"],
# 'userid': 'KsKhCUPizQyGiw3L1WVRy'
# }
import asyncio
# 把 NEED_CONFIRM的订单同步到本地库用于后续状态更新 # 把 NEED_CONFIRM的订单同步到本地库用于后续状态更新
await update_baidu_order_list({'userid': ns.get('userid')}) await update_baidu_order_list({'userid': ns.get('userid')})
@ -562,7 +759,8 @@ async def baidu_confirm_refund_order(ns={}):
if data_ == {'success': True}: if data_ == {'success': True}:
# if True: # if True:
ns_record = { ns_record = {
'orderid': uuid(), 'id': uuid(),
'orderid': order_id,
'ordertype': 'REFUND', 'ordertype': 'REFUND',
'userid': ns.get('userid'), 'userid': ns.get('userid'),
'reason': '远程退款成功' 'reason': '远程退款成功'
@ -573,8 +771,7 @@ async def baidu_confirm_refund_order(ns={}):
await sor.U('baidu_orders', {'id': refund_id, 'refundstatus': '1'}) await sor.U('baidu_orders', {'id': refund_id, 'refundstatus': '1'})
# 增加延迟 # 增加延迟
import asyncio await asyncio.sleep(2)
await asyncio.sleep(1)
# 把 NEED_CONFIRM的本地库改为CREATED # 把 NEED_CONFIRM的本地库改为CREATED
await update_baidu_order_list({'userid': ns.get('userid')}) await update_baidu_order_list({'userid': ns.get('userid')})
@ -592,10 +789,10 @@ async def baidu_confirm_refund_order(ns={}):
} }
if refundstatus == '2': if refundstatus == '2':
return { """
'status': True, 退款状态为2, 说明退款成功, 无需继续处理
'msg': '已退款成功' """
} continue
# 获取created状态后再去退款 # 获取created状态后再去退款
local_refund_status = await get_baidu_orderlist({'order_id': order_id, 'userid': ns.get('userid')}) local_refund_status = await get_baidu_orderlist({'order_id': order_id, 'userid': ns.get('userid')})
@ -605,21 +802,27 @@ async def baidu_confirm_refund_order(ns={}):
async with db.sqlorContext('kboss') as sor: async with db.sqlorContext('kboss') as sor:
await sor.U('baidu_orders', {'id': refund_id, 'refundstatus': '2'}) await sor.U('baidu_orders', {'id': refund_id, 'refundstatus': '2'})
await sor.U('user_action', {'id': ns_record.get('id'), 'ordertype': 'REFUND', 'reason': '远程退款成功, 本地客户退款成功'}) await sor.U('user_action', {'id': ns_record.get('id'), 'ordertype': 'REFUND', 'reason': '远程退款成功, 本地客户退款成功'})
continue
return { # return {
'status': True, # 'status': True,
'msg': '百度云给平台退款成功,平台给客户退款成功' # 'msg': '百度云给平台退款成功,平台给客户退款成功'
} # }
else: else:
if local_refund_status.get('msg') == 'delay_order': if local_refund_status.get('msg') == 'delay_order':
return { return {
'status': False, 'status': False,
'msg': '百度远程订单还未生成, 请十秒后重试' 'msg': '百度远程订单还未生成, 请十秒后重试, %s' % str(local_refund_status)
} }
return { return {
'status': False, 'status': False,
'msg': '百度云退款成功,本机构给客户退款出错!' 'msg': '百度云退款成功,本机构给客户退款出错!, %s' % str(local_refund_status)
} }
return {
'status': True,
'msg': '退款处理完成'
}
ret = await baidu_confirm_refund_order(params_kw) ret = await baidu_confirm_refund_order(params_kw)
return ret return ret

View File

@ -15,7 +15,11 @@ async def baidu_order_cancel(ns={}):
headers=header, headers=header,
json=paydata) as res: json=paydata) as res:
res = await res.json() res = await res.json()
print(res) db = DBPools()
async with db.sqlorContext('kboss') as sor:
if res.get('success'):
sql_update = "update baidu_orders set status='CANCELLED' where order_id='%s'" % order_id
await sor.sqlExe(sql_update, {})
return { return {
'status': True, 'status': True,
'msg': 'order cancel success, %s' % str(res) 'msg': 'order cancel success, %s' % str(res)

View File

@ -227,9 +227,9 @@ async def baidu_confirm_refund_order(ns={}):
# if True: # if True:
ns_record = { ns_record = {
'id': uuid(), 'id': uuid(),
'orderid': ns.get('order_id'), 'orderid': order_id,
'ordertype': 'REFUND', 'ordertype': 'REFUND',
'userid': ns.get('user_id'), 'userid': ns.get('userid'),
'reason': '远程退款成功' 'reason': '远程退款成功'
} }
await user_action_record(ns_record) await user_action_record(ns_record)