def processOrder(request): transaction_id = datetime.datetime.now().timestamp() data = json.loads(request.body) if request.user.is_authenticated: customer = request.user.customer order, created = Order.objects.get_or_create(customer=customer, complete=False) total = float(data['form']['total']) order.transaction_id = transaction_id else: customer, order = guestOrder(request, data) if total == order.get_cart_total: order.complete = True order.save() if order.shipping == True: ShippingAddress.objects.create( customer=customer, order=order, address=data['shipping']['address'], city=data['shipping']['city'], state=data['shipping']['state'], zipcode=data['shipping']['zipcode'], ) return JsonResponse('payment complete!', safe=False)
def order_comment(request): ''' 商品评论 POST参数: order_id:订单ID total_count:订单有商品件数 goods_1:订单商品ID content_1:评论内容 GET参数: orderid:订单ID ''' if request.method == 'POST': orderid = request.POST.get('order_id') if not orderid: return JsonResponse({'status': '401', 'msg': '订单错误!'}) try: order = Order.objects.get(user=request.user, order_id=orderid) except: return JsonResponse({'status': '401', 'msg': '订单错误!'}) count = int(request.POST.get('total_count')) #订单中有几个商品 for i in range(1, count + 1): ordergoods_id = request.POST.get('goods_' + str(i)) #订单商品 comment = request.POST.get('content_' + str(i)) #评论1或评论2 ordergoods = OrderGoods.objects.get(pk=ordergoods_id) ordergoods.comment = comment ordergoods.save() order.order_status = 5 order.save() return JsonResponse({'status': '200', 'msg': '评价成功!'}) else: orderid = request.GET.get('orderid') if not orderid: return JsonResponse({'status': '401', 'msg': '订单错误!'}) try: order = Order.objects.get(user=request.user, order_id=orderid) except: return JsonResponse({'status': '401', 'msg': '订单错误!'}) for status in Order.ORDER_STATUS: if order.order_status in status: order.status = status[1] break order_list = [] order_list.append({'order_id': order.order_id, }) ordergoods_list = [] for ordergoods in order.ordergoods_set.all(): ordergoods.total = ordergoods.price * ordergoods.number ordergoods_list.append({'name': ordergoods.goods.name, 'total': ordergoods.total}) length = ordergoods_list.__len__() response_data = [{'order_list': order_list, 'ordergoods_list': ordergoods_list, 'length': length}] return JsonResponse(response_data,safe=False)
def payed(request): order_id = request.GET.get("orderid") order = Order.objects.get(pk=order_id) order.o_status = ORDER_STATUS_NOT_SEND order.save() data = {"status": 200, "msg": "payed success"} return JsonResponse(data=data)
def post(self, *args, **kwargs): order = self.get_object() if order.status < Order.CONFIRMED: order.is_deleted = True order.save() redirect_url = reverse_lazy("order:list") else: redirect_url = order.get_absolute_url() return HttpResponseRedirect(redirect_url)
def check_order(request): ''' 检查订单支付 参数: orderId:订单ID ''' order_id = request.POST.get('orderId') if not order_id: return JsonResponse({'status': '401', 'errmsg': '无效的订单编号!'}) try: order = Order.objects.get(user=request.user, order_id=order_id, pay_method=2, order_status=1) except: return JsonResponse({'status': '401', 'errmsg': '订单错误!'}) app_private_key_string = open(settings.PRIVATE_KEY).read() alipay_public_key_string = open(settings.PUBLIC_KEY).read() alipay = AliPay( appid="2021000116676798", # 沙箱环境里的appid app_notify_url=None, # 默认回调url app_private_key_string=app_private_key_string, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, alipay_public_key_string=alipay_public_key_string, sign_type="RSA2", # RSA 或者 RSA2 debug=True # 默认False ) while True: response = alipay.api_alipay_trade_query(order_id) code = response.get('code') trade_status = response.get('trade_status') if code == '10000' and trade_status == 'TRADE_STATUS': trade_no = response.get('trade_no') order.trade_no = trade_no order.order_status = 2 order.save() return JsonResponse({'status': '200', 'msg': '支付成功!'}) # 支付接口有问题,或者接口没有问题但是用户还没有支付成功 elif code == '4000' or (code == '10000' and trade_status == 'WAIT_BUYER_PAY'): import time time.sleep(5) continue else: return JsonResponse({'status': '401', 'errmsg': '支付失败!'})
def order(request): if request.method=="POST": items_json = request.POST.get('itemsJson', '') Name=request.POST.get('Name','') Email = request.POST.get('Email', '') Address = request.POST.get('Address', '') City = request.POST.get('City', '') State = request.POST.get('State', '') Zip = request.POST.get('Zip', '') Phone = request.POST.get('Phone', '') order=Order(items_json=items_json,Name=Name,Email=Email,Address=Address,City=City,State=State,Zip=Zip,Phone=Phone) order.save() ord=Orderupdate(id=order.id,update_desc="Your order has been placed..") ord.save() thank = True id = Order.id return render(request, 'Mycart/checkout.html', {'thank': thank, 'id': id}) return render(request,'Mycart/checkout.html')
def make_order(request): carts = Cart.objects.filter(c_user=request.user).filter(c_is_select=True) order = Order() order.o_user = request.user order.o_price = get_total_price() order.save() for cart_obj in carts: ordergoods = OrderGoods() ordergoods.o_order = order ordergoods.o_goods_num = cart_obj.c_goods_num ordergoods.o_goods = cart_obj.c_goods ordergoods.save() cart_obj.delete() data = { "status": 200, "msg": "ok", "order_id": order.id, } return JsonResponse(data=data)