Exemple #1
0
        /// <summary>
        /// 创建产品框架订单
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>

        public async Task <Order> CreateProductOrder(PurchasePayInput input)
        {
            var product = await _entityManager.GetProductByCode(input.ProductCode);

            // 生成ordercode
            var tradeno = _orderManager.GetOrderMaxCode(input.OrderSourceType, PayTypeEnum.Alipay);

            // 创建订单
            var order = new Order
            {
                OrderCode                 = tradeno,
                ProductCode               = product.Code,
                ProductId                 = product.Id,
                ProductIndate             = product.Indate,
                ProductCreateProjectCount = product.CreateProjectCount,
                ProductName               = product.Name,
                Price           = product.Price,
                Status          = OrderStatusEnum.WaitForPayment,
                Discounts       = 0m,
                ActualPayment   = product.Price,
                UserId          = AbpSession.UserId,
                UserName        = AbpSession.GetUserName(),
                OrderSourceType = input.OrderSourceType,
                CourseId        = null
            };

            order = await _orderManager.CreateOrder(order);

            return(order);
        }
Exemple #2
0
        ///// <summary>
        ///// 导出Product为excel表,等待开发。
        ///// </summary>
        ///// <returns></returns>
        //public async Task<FileDto> GetToExcel()
        //{
        //	var users = await UserManager.Users.ToListAsync();
        //	var userListDtos = ObjectMapper.Map<List<UserListDto>>(users);
        //	await FillRoleNames(userListDtos);
        //	return _userListExcelExporter.ExportToFile(userListDtos);
        //}

        #region 生成订单逻辑

        /// <summary>
        /// 创建课程订单
        /// </summary>
        /// <param name="input"></param>
        /// <param name="isGiving">是否赠送</param>
        /// <returns></returns>
        private async Task <Order> CreateCourseOrder(PurchasePayInput input, bool isGiving = false)
        {
            //根据产品编码查询对应产品
            var course = await _courseRepository.FirstOrDefaultAsync(a => a.CourseCode == input.ProductCode);

            return(await _orderManager.CreateCourseOrder(course));
        }
Exemple #3
0
        /// <summary>
        /// 买产品送课程
        /// </summary>
        /// <returns></returns>
        public async Task <Order> BuyProductAndSendCoursesAsync(PurchasePayInput input)
        {
            //  //检查当前产品是否已经付款过了。还需要判断有效期是否过了。暂时不做处理。
            //var PreOrder=  _orderRepository.FirstOrDefaultAsync(a => a.ProductCode == input.ProductCode&&a.Status==OrderStatusEnum.ChangeHands);

            //if (PreOrder!=null)
            //{
            //    throw  new UserFriendlyException("该产品已经付款了,");
            //}

            var order = new Order();

            if (input.OrderSourceType == OrderSourceType.Course)
            {
                order = await CreateCourseOrder(input);
            }
            else if (input.OrderSourceType == OrderSourceType.Product)
            {
                order = await CreateProductOrder(input);
            }

            return(order);
        }
Exemple #4
0
        public async Task <string> CreatePay(PurchasePayInput input)
        {
            //todo:处理订单类型
            //判断哪些是课程的,哪些是框架的。
            //如果是框架的订单,自动给客户开通视频播放功能。
            //有效期为1年。
            var webPayOutput = await _alipayHelper.WebPay(new WebPayInput
            {
                Data = new AlipayTradePagePayModel
                {
                    Body           = "支付Demo",
                    Subject        = "支付Demo",
                    TotalAmount    = "1",
                    OutTradeNo     = input.OrderCode,
                    ProductCode    = YoYoAlipayConsts.ProductCode_FAST_INSTANT_TRADE_PAY,
                    TimeoutExpress = TimeoutExpress // 30分钟后过期,默认90分钟
                },
                //AsyncNotifyUrl = $"{GetHostUrl()}Purchase/Notify",
                //SynchronizationCallbackUrl = $"{GetHostUrl()}Purchase/Callback"
            });


            return(webPayOutput.RedirectUrl);
        }