def get(self, request):
"""
处理支付宝的return_url返回
:param request:
:return:
"""
processed_dict = {}
for key, value in request.GET.items():
processed_dict[key] = value
sign = processed_dict.pop("sign", None)
alipay = AliPay(
appid=app_id,
app_notify_url="http://123.206.30.254:8000/alipay/return/",
app_private_key_path=private_key_path,
alipay_public_key_path=ali_pub_key_path,
debug=True, # 默认False,
return_url="http://123.206.30.254:8000/alipay/return/"
)
verify_re = alipay.verify(processed_dict, sign)
if verify_re:
# 支付宝接口改版,同步跳转url中不带有trade_status参数,不更新订单状态,只做跳转
# order_sn = processed_dict.get('out_trade_no', None) # 商家订单号
# trade_no = processed_dict.get('trade_no', None) # 支付宝交易号
# trade_status = processed_dict.get('trade_status', None) # 订单状态
#
# existed_orders = OrderInfo.objects.filter(order_sn=order_sn)
# for existed_order in existed_orders:
# existed_order.pay_status = trade_status
# existed_order.trade_no = trade_no
# existed_order.pay_time = datetime.now()
# existed_order.save()
response = redirect('index')
# 设置跳转到订单页面,3秒
response.set_cookie('nextPath', 'pay', max_age=3)
return response
else:
response = redirect("index")
return responsedef post(self, request):
"""
处理支付宝的notify_url
:param request:
:return:
"""
processed_dict = {}
for key, value in request.POST.items():
processed_dict[key] = value
sign = processed_dict.pop("sign", None)
alipay = AliPay(
appid=app_id,
app_notify_url="http://123.206.30.254:8000/alipay/return/",
app_private_key_path=private_key_path,
alipay_public_key_path=ali_pub_key_path,
debug=True, # 默认False,
return_url="http://123.206.30.254:8000/alipay/return/"
)
verify_re = alipay.verify(processed_dict, sign)
if verify_re:
order_sn = processed_dict.get('out_trade_no', None) # 商家订单号
trade_no = processed_dict.get('trade_no', None) # 支付宝交易号
trade_status = processed_dict.get('trade_status', None) # 订单状态
existed_orders = OrderInfo.objects.filter(order_sn=order_sn)
for existed_order in existed_orders:
order_goods = existed_order.goods.all()
for order_good in order_goods:
goods = order_good.goods
goods.sold_num += order_good.goods_num
goods.save()
existed_order.pay_status = trade_status
existed_order.trade_no = trade_no
existed_order.pay_time = datetime.now()
existed_order.save()
return HttpResponse('success')