美多商城项目订单和支付模块总结

本文总结了美多商城项目的订单和支付模块,包括订单完成的流程:从订单结算页面,到序列化器的使用,再到业务逻辑实现的视图。采用乐观锁解决并发处理中的资源竞争问题,确保程序完整性。支付环节中,详细描述了如何保存支付结果,通过回调链接处理支付宝返回的数据,以及与前端交互的过程。
摘要由CSDN通过智能技术生成

订单完成

  • 订单结算页面

    • 订单展示用的序列化器
    # 前端需要运费数据和商品信息数据的字典列表,这里使用嵌套序列化器返回数据
    class CartSKUSerializer(serializers.ModelSerializer):
        # 因为商品表没有count字段,所以要定义它
        count=serializers.IntegerField()
        
        class Meta:
            model=SKU
            fields=('id','name', 'default_image_url', 'price', 'count')
            
    class OrderSettlementSerializer(serializers.Serializer):
    	freight = serializers.DecimalField(max_digits=10,decimal_places=2)
        skus = CartSKUSerializer(many=True)
    
    • 视图实现业务逻辑
    class OrderSettlementView(APIView):
        def get(self, request):
            user=request.user
            conn=get_redis_connection('cart')
            cart_dict=conn.hgetall('cart_%s'%user.id)
            cart_list=conn.smembers('cart_selected_%s'%user.id)
            cart={
         }
            for sku_id in cart_list:
                cart[sku_id]=cart_dict[sku_id]['count']
            skus=SKU.objects.filter(id__in=cart.keys())
            for sku in skus:
                sku.count=cart[sku.id]['count']
            freight=Decimal(10.00)
            serializer=OrderSettlementSerializer({
         'freight':freight,'skus':skus})
            return Response(serializer.data)
    
  • 保存订单, 视图逻辑由CreateAPIView提供, 我们需要重写序列化器的保存操作

    class SaveOrderView(CreateAPIView):
        serializer_class= SaveOrderSerializer
    
    class SaveOrderSerializer(serializers.ModelSerializer):
        class Meta:
            model = OrderInfo
            fields
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值