public async Task CreateOrderTest()
        {
            // Arrange
            var args = new OrderCreateArguments();

            _stripe.Post(
                Arg.Is <StripeRequest <OrderCreateArguments, Order> >(a => a.UrlPath == "orders" && a.Model == args),
                _cancellationToken).Returns(Task.FromResult(new StripeResponse <Order>()));

            // Act
            var response = await _client.CreateOrder(args, _cancellationToken);

            // Assert
            response.Should().NotBeNull();
        }
Пример #2
0
        public PaymentDto CreateOrder(SysUser sysUser, [FromForm] OrderPo orderPo)
        {
            //1.创建订单号
            string orderSn = OrderUtil.GetOrderCode();

            //2.扣减库存
            seckillsClient.SeckillSetStock(orderPo.ProductId, orderPo.ProductCount);

            //3.设置订单
            var configuration = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <OrderPo, Order>();
            });
            IMapper mapper = configuration.CreateMapper();
            Order   order  = mapper.Map <OrderPo, Order>(orderPo);

            order.OrderSn = orderSn;
            order.UserId  = sysUser.UserId;

            //4.设置订单项
            OrderItem orderItem = new OrderItem();

            orderItem.ItemCount      = orderPo.ProductCount;
            orderItem.ItemPrice      = orderPo.OrderTotalPrice;
            orderItem.ItemTotalPrice = orderPo.OrderTotalPrice;
            orderItem.ProductUrl     = orderPo.ProductUrl;
            orderItem.ProductId      = orderPo.ProductId;
            orderItem.OrderSn        = orderSn;

            order.OrderItems = new List <OrderItem>()
            {
                orderItem
            };

            //5.保存订单
            order = orderClient.CreateOrder(order);

            //6.创建支付信息
            PaymentDto paymentDto = new PaymentDto();

            paymentDto.OrderSn         = orderSn;
            paymentDto.UserId          = sysUser.UserId;
            paymentDto.ProductId       = orderPo.ProductId;
            paymentDto.ProductName     = orderPo.ProductName;
            paymentDto.OrderTotalPrice = orderPo.OrderTotalPrice;

            return(paymentDto);
        }