Ejemplo n.º 1
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>

        protected virtual PaylineEntity CreatePayline(PaylineModel model, PaylineType paylineType)
        {
            var info = new PaylineEntity
            {
                Account = new AccountEntity {
                    Id = Identity.Id
                },
                ChannelType  = model.ChannelType,
                Status       = PaylineStatusType.Create,
                Remark       = "",
                Type         = paylineType,
                SaveType     = SaveType.Add,
                PaylineItems = new List <PaylineItemEntity>(),
                Forms        = model.Forms ?? new Dictionary <string, string>()
            };
            var orders = GetOrders(model);

            FillPaylineItems(info, orders);
            if (model.Amount.HasValue)
            {
                info.Amount = model.Amount.Value;
            }
            GetPaylineApp(paylineType).Create(info);
            return(info);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>
        protected virtual ActionResult Refund(PaylineModel model, PaylineType paylineType)
        {
            var info    = CreateRefund(model, paylineType);
            var request = info == null || info.Request == null ? "" : info.Request.ToLower();

            if (info != null && (request.StartsWith("http://") || request.StartsWith("https://")))
            {
                return(Redirect(info.Request));
            }
            if (model.IsSuccess && !string.IsNullOrEmpty(Request["successhandle"]))
            {
                var builder = new StringBuilder();
                builder.AppendFormat("<script  type=\"text/javascript\" >document.domain='{0}';{1}('{2}');</script>",
                                     ConfigurationManager.GetSetting <string>("Domain"), Request["successhandle"], info?.Id);
                builder.Append(info?.Request);
                return(Content(builder.ToString()));
            }
            if (!model.IsSuccess && !string.IsNullOrEmpty(Request["failhandle"]))
            {
                var builder = new StringBuilder();
                builder.AppendFormat("<script  type=\"text/javascript\" >document.domain='{0}';{1}('{2}');</script>",
                                     ConfigurationManager.GetSetting <string>("Domain"), Request["failhandle"], info?.Errors?.FirstOrDefault()?.Message);
                builder.Append(info?.Request);
                return(Content(builder.ToString()));
            }
            return(model.IsSuccess ?View("~/Views/Pay/RefundSuccess.cshtml", model): View("~/Views/Pay/RefundFailure.cshtml", model));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>
        protected virtual ActionResult Create(PaylineModel model, PaylineType paylineType)
        {
            var info = CreatePayline(model, paylineType);

            model.Payline = info;
            if (string.IsNullOrEmpty(info.Request))
            {
                return(Result(model));
            }
            var request = info.Request.ToLower();

            if (request.StartsWith("http://") || request.StartsWith("https://"))
            {
                return(Redirect(info.Request));
            }
            if (!string.IsNullOrEmpty(Request["createhandle"]))
            {
                var builder = new StringBuilder();
                builder.AppendFormat("<script  type=\"text/javascript\" >document.domain='{0}';{1}('{2}');</script>",
                                     ConfigurationManager.GetSetting <string>("Domain"), Request["createhandle"], info.Id);
                builder.Append(info.Request);
                return(Content(builder.ToString()));
            }
            return(Content(info.Request));
        }
Ejemplo n.º 4
0
        private Func <int, int, PaylineConfig> GetConfig(PaylineType paylineType)
        {
            switch (paylineType)
            {
            case PaylineType.SevenByFive:
            {
                return((_, code) =>
                    {
                        var r = code % 5;
                        var y = code / 5;
                        return new PaylineConfig(r, y);
                    });
            }

            case PaylineType.ThreeByThree:
            {
                return((_, code) =>
                    {
                        var r = code % 3;
                        var y = code / 3;
                        return new PaylineConfig(r, y);
                    });
            }

            default:
            {
                return((index, code) => new PaylineConfig(index, code));
            }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 返回
        /// </summary>
        /// <param name="paylineType"></param>
        /// <returns></returns>
        protected virtual ActionResult Process(PaylineType paylineType)
        {
            var model = new PaylineModel();

            model.Payline = GetPaylineApp(paylineType).Process();
            return(Result(model));
        }
        /// <summary>
        /// 得到等待超时的支付
        /// </summary>
        /// <returns></returns>
        protected virtual IList <PaylineEntity> GetWaitPaylines(PaylineType paylineType)
        {
            var query = new QueryInfo {
                IsReturnCount = false
            };

            query.Query <PaylineEntity>()
            .Where(
                it => it.Type == paylineType &&
                !string.IsNullOrEmpty(it.OutNumber) && it.Status == PaylineStatusType.Waiting &&
                it.InsertTime <= DateTime.Now.AddMinutes(-2))
            .Select(it => new { it.Id, it.Status, it.Number, it.OutNumber });
            return(Repository.GetEntities <PaylineEntity>(query));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>
        protected virtual ActionResult Refund(PaylineModel model, PaylineType paylineType)
        {
            var info    = CreateRefund(model, paylineType);
            var request = info.Request.ToLower();

            if (request.StartsWith("http://") || request.StartsWith("https://"))
            {
                return(Redirect(info.Request));
            }
            if (!string.IsNullOrEmpty(Request["createhandle"]))
            {
                var builder = new StringBuilder();
                builder.AppendFormat("<script  type=\"text/javascript\" >document.domain='{0}';{1}('{2}');</script>",
                                     ConfigurationManager.GetSetting <string>("Domain"), Request["createhandle"], info.Id);
                builder.Append(info.Request);
                return(Content(builder.ToString()));
            }
            var url = string.Format("{0}/Home/Index", info.ChannelType == ChannelType.Website ? this.GetUrl("PresentationWebsiteOrderUrl") : this.GetUrl("PresentationMobileOrderUrl"));

            return(new RedirectResult(url));
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>

        protected virtual PaylineEntity CreateRefund(PaylineModel model, PaylineType paylineType)
        {
            var info = new PaylineEntity
            {
                Account = new AccountEntity {
                    Id = Identity.Id
                },
                ChannelType  = model.ChannelType,
                Status       = PaylineStatusType.Create,
                Remark       = "",
                Type         = paylineType,
                SaveType     = SaveType.Add,
                PaylineItems = new List <PaylineItemEntity>(),
                Forms        = model.Forms ?? new Dictionary <string, string>()
            };
            var orderPays = GetOrderPays(model);

            FillRefundPaylineItems(info, orderPays);
            info.Amount = info.PaylineItems.Sum(it => it.Amount);
            GetPaylineApp(paylineType).Refund(info);
            return(info);
        }
 /// <summary>
 /// 执行
 /// </summary>
 /// <param name="args"></param>
 /// <returns></returns>
 public virtual bool Execute(object[] args)
 {
     if (IsExecute)
     {
         return(false);
     }
     IsExecute = true;
     try
     {
         PaylineType payType = (PaylineType)Enum.Parse(typeof(PaylineType), args[0].ToString());
         var         infos   = GetWaitPaylines(payType);
         Handle(infos);
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         IsExecute = false;
     }
     return(true);
 }
Ejemplo n.º 10
0
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="model"></param>
        /// <param name="paylineType"></param>
        /// <returns></returns>

        protected virtual PaylineEntity CreateRefund(PaylineModel model, PaylineType paylineType)
        {
            var orderPay = GetOrderPay(model);

            if (orderPay.Order == null)
            {
                return(null);
            }
            var orderId = string.IsNullOrWhiteSpace(model.RefundOrderId)
                ? orderPay.Order.Id
                : model.RefundOrderId.Convert <long>();
            var order = GetRefundOrder(orderId);

            if (order == null || order.Account == null)
            {
                return(null);
            }
            var info = new PaylineEntity
            {
                Account = new AccountEntity {
                    Id = order.Account.Id
                },
                ChannelType  = model.ChannelType,
                Status       = PaylineStatusType.Create,
                Remark       = "",
                Type         = paylineType,
                SaveType     = SaveType.Add,
                PaylineItems = new List <PaylineItemEntity>(),
                Forms        = model.Forms ?? new Dictionary <string, string>()
            };

            FillRefundPaylineItems(info, orderPay, model);
            info.Amount     = info.PaylineItems.Sum(it => it.Amount);
            model.IsSuccess = GetPaylineApp(paylineType).Refund(info);
            return(info);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// 得到App
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 protected virtual IPaylineApplicationService GetPaylineApp(PaylineType type)
 {
     return(Ioc.Resolve <IPaylineApplicationService>(string.Format("Beeant.Application.Services.Finance.I{0}PaylineApplicationService", type)));
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 返回
        /// </summary>
        /// <param name="paylineType"></param>
        /// <returns></returns>
        protected virtual ActionResult Process(PaylineType paylineType)
        {
            var info = GetPaylineApp(paylineType).Process();

            return(Process(info));
        }