/// <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); }
/// <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)); }
/// <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)); }
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)); } } }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }
/// <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))); }
/// <summary> /// 返回 /// </summary> /// <param name="paylineType"></param> /// <returns></returns> protected virtual ActionResult Process(PaylineType paylineType) { var info = GetPaylineApp(paylineType).Process(); return(Process(info)); }