Python全系列 教程
3567个小节阅读:5931k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
from django.urls import path,include
from orderapp import views
urlpatterns = [
path('',views.toOrderView,name='order'),
path('toPay/',views.toPay,name='toPay'),
path('checkPay/',views.checkPay,name='checkPay'),
]
xxxxxxxxxx
alipay = AliPay(appid='2016092300576413',
app_notify_url='http://127.0.0.1:8000/orderapp/checkPay/',
# 个人私钥
app_private_key_path='orderapp/keys/my_private_key.txt',
# 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
alipay_public_key_path='orderapp/keys/alipay_public_key.txt',
return_url='http://127.0.0.1:8000/orderapp/checkPay/',
# 沙箱是True 正式环境是False
debug=True)
#支付视图
def toPay(request):
#获取请求参数
addrid = request.GET.get('address',-1)
payway = request.GET.get('payway','alipay')
cartitems = request.GET.get('cartitems','')
params = {
'out_trade_num':uuid.uuid4().hex,
'order_num':datetime.now().strftime("%Y%m%d%H%M%S"),
'address':Address.objects.get(id=addrid),
'user':jsonpickle.loads(request.session.get('user', '')),
'payway':payway
}
orderObj = Order.objects.create(**params)
# '['{'goodsid:1','sizeid:'2',...'}']'
if cartitems:
#[{dict1},{dict2}]
cartitems = jsonpickle.loads(cartitems)
orderItemList = [OrderItem.objects.create(order=orderObj,**ci) for ci in cartitems if ci]
urlparam = alipay.direct_pay(subject='京东商城', out_trade_no=orderObj.out_trade_num, total_amount=request.GET.get('totalPrice',0))
#获取支付页面地址
pay_url = alipay.gateway+'?'+urlparam
return redirect(pay_url)
def checkPay(request):
#获取所有的请求参数
params = request.GET.dict()
#获取sign的值
sign = params.pop('sign')
#校验是否支付成功
if alipay.verify(params,sign):
#获取当前登录用户对象
user = jsonpickle.loads(request.session.get('user',''))
# 修改订单状态
orderObj = Order.objects.get(out_trade_num=params.get('out_trade_no',''))
orderObj.trade_no = params.get('trade_no','')
orderObj.status = '待发货'
orderObj.save()
#修改库存
orderItemList = orderObj.orderitem_set.all()
[Inventory.objects.filter(goods_id=oi.goodsid,color_id=oi.colorid,size_id=oi.sizeid).update(count=F('count')-oi.count) for oi in orderItemList if oi]
#更新购物车表中数据
[user.cartitem_set.filter(goodsid=oi.goodsid,colorid=oi.colorid,sizeid=oi.sizeid,count=oi.count).delete() for oi in orderItemList if oi]
return HttpResponse('支付成功!')
return HttpResponse('支付失败!')
order.html
xxxxxxxxxx
<script>
$("#pay").click(function(){
var cartitems = []
$.each($('.msg ul'),function(index,item){
cartitems.push({"goodsid":$(item).attr('goodsid'),
"sizeid":$(item).attr('sizeid'),
"colorid":$(item).attr('colorid'),
"count":$(item).attr('count')
})
})
//拼接请求参数
var params = 'address=1&payway='+$('.way .on').attr('name')+'&cartitems='+JSON.stringify(cartitems)+'&totalPrice={{ totalPrice }}';
//拼接请求地址
var url = '/orderapp/toPay/?'+params
$(this).attr('href',url)
})
</script>