kboss/b/jdcloud/jd_pay_orders.dspy
2025-07-16 14:27:17 +08:00

67 lines
3.4 KiB
Plaintext

async def jd_pay_orders(ns):
"""
#京东确认支付
:param ns: order_id = 订单id
:return:
"""
db = DBPools()
async with db.sqlorContext('kboss') as sor:
try:
if ns:
bz_order = await sor.R('bz_order',{'id':ns.get('order_id')})
# kboss平台扣费
count = await getCustomerBalance(sor, bz_order[0]['customerid'])
if count == None:
count = 0
if count - float(bz_order[0]['amount']) < 0:
pricedifference = count - round(bz_order[0]['amount'], 2)
# 不够支付,调用支付宝支付
return {'status': False, 'msg': '账户余额不足', 'pricedifference': round(pricedifference,2)}
# 足够支付
await order2bill(ns['order_id'], sor)
bills = await sor.R('bill', {'orderid': ns['order_id'], 'del_flg': '0'})
jdparamsNumber = await sor.R('params', {'pname': '京东代金券号'})
jdparamscount = await sor.R('params', {'pname': '京东代金券金额'})
datans = {}
datans['ordernumber'] = bz_order[0]['provider_orderid']
datans['vouchernumber'] = jdparamsNumber[0]['pvalue']
datans['vouchervalue'] = jdparamscount[0]['pvalue']
datans['voucherprice'] = float(bz_order[0]['originalprice'])
jd_confirm_pay_order = await jd_confirm_pay_orders(datans)
if jd_confirm_pay_order.get('status') == True:
# 判断上面京东是否支付成功,如果支付成功走下面订单状态修改
# 修改订单状态、添加用户资源
for j in bills:
ba = BillAccounting(j)
await ba.accounting(sor)
await sor.U('bill', {'id': ns['order_id'], 'bill_state': '1'})
await sor.U('bz_order',{'id':ns.get('order_id'),'order_status':'1'})
order_goods = await sor.R('order_goods',{'orderid':ns.get('order_id')})
for i in order_goods:
print(i)
product = await sor.R('product',{'id':i['productid']})
data = {}
data['id'] = uuid()
# data['id'] = UUID()
data['providerrid'] = product[0]['providerpid']
data['productname'] = product[0]['name']
data['productdesc'] = product[0]['description']
data['customerid'] = bz_order[0]['customerid']
data['productid'] = i['id']
data['orderid'] = ns.get('order_id')
data['start_date'] = datetime.datetime.now().date()
#到期日期 这里后期需要算出来
if i['end_date'] != None or i['end_date'] != '':
data['expire_date'] = i['end_date']
await sor.C('customer_goods',data)
return {'status': True,'msg':'购买成功'}
else:
return {'status':False,'msg':'购买失败'}
except Exception as e:
return {
'status': False,
'err_msg': str(e)
}
ret = await jd_pay_orders(params_kw)
return ret