/// <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)); }
/// <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> /// <returns></returns> protected virtual ActionResult Result(PaylineModel model) { model.IsSuccess = model.Payline != null && model.Payline.Status == PaylineStatusType.Success; var request = model.Payline == null || model.Payline.Request == null ? "" : model.Payline.Request.ToLower(); if (model.Payline != null && (request.StartsWith("http://") || request.StartsWith("https://"))) { return(Redirect(model.Payline.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"], model.Payline?.Id); builder.Append(model.Payline?.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"], model.Payline?.Errors?.FirstOrDefault()?.Message); builder.Append(model.Payline?.Request); return(Content(builder.ToString())); } return(model.IsSuccess ? View("Success", model) : View("Failure", model)); }
/// <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="paylineType"></param> /// <returns></returns> protected virtual ActionResult Process(PaylineType paylineType) { var model = new PaylineModel(); model.Payline = GetPaylineApp(paylineType).Process(); return(Result(model)); }
public virtual ActionResult Success(string number) { PaylineModel model = new PaylineModel(); var query = new QueryInfo(); query.Query <PaylineEntity>().Where(it => it.Number == number && it.Status == PaylineStatusType.Success); model.Payline = this.GetEntities <PaylineEntity>(query)?.FirstOrDefault(); return(View("~/Views/Pay/Success.cshtml")); }
/// <summary> /// 得到金额 /// </summary> /// <param name="model"></param> /// <returns></returns> protected virtual OrderPayEntity GetOrderPay(PaylineModel model) { if (string.IsNullOrEmpty(model.OrderPayId)) { return(null); } var query = new QueryInfo(); query.Query <OrderPayEntity>() .Where(it => it.Id == model.OrderPayId.Convert <long>()) // && it.Order.Account.Id == Identity.Id .Select(it => new object[] { it.Amount, it.Order.Id, it.Key, it.Order.TotalPayAmount, it.Order.PayAmount, it.Number }); var orders = this.GetEntities <OrderPayEntity>(query); return(orders?.FirstOrDefault()); }
/// <summary> /// 得到金额 /// </summary> /// <param name="model"></param> /// <returns></returns> protected virtual IList <OrderEntity> GetOrders(PaylineModel model) { if (string.IsNullOrEmpty(model.OrderIds)) { return(null); } var orderIds = model.OrderIds.Split(',').Select(s => s.Convert <long>()).ToList(); var query = new QueryInfo(); query.Query <OrderEntity>() .Where(it => orderIds.Contains(it.Id) && it.Account.Id == Identity.Id) .Select(it => new object[] { it.Id, it.TotalInvoiceAmount, it.TotalPayAmount, it.PayAmount, it.Deposit }); var orders = this.GetEntities <OrderEntity>(query); return(orders); }
/// <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="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); }
public virtual ActionResult Create(PaylineModel model) { if (string.IsNullOrWhiteSpace(Request["code"])) { var url = Request.Url.ToString(); url = string.Format("{0}/Wechat/Oauth?url={1}", this.GetUrl("DistributedOutsideReceptionUrl"), Server.UrlEncode(url)); var wechat = this.Wechat(); url = wechat.CreateAuthorityUrl(url, true); return(Redirect(url)); } var weinxinUser = this.Wechat().GetAuthorityUser(); if (weinxinUser != null && weinxinUser.ContainsKey("openid")) { var openid = weinxinUser["openid"].ToString(); model.Forms = model.Forms ?? new Dictionary <string, string> { { "openid", openid } }; return(Create(model, PaylineType.Wechat)); } return(PayError(null)); }
/// <summary> /// 通知 /// </summary> //[AuthorizeFilter] public virtual ActionResult Select(PaylineModel model) { return(model != null && model.ChannelType == ChannelType.Mobile ? View("MobileSelect", model) : View("WebsiteSelect", model)); }
/// <summary> /// 填充明细 /// </summary> protected virtual void FillRefundPaylineItems(PaylineEntity payline, OrderPayEntity orderPay, PaylineModel model) { if (orderPay == null) { return; } if (orderPay.Order == null || orderPay.Amount <= 0) { return; } var ammount = model.Amount.HasValue ? model.Amount.Value : orderPay.Amount; if (ammount > orderPay.Amount) { ammount = orderPay.Amount; } var paylineItem = new PaylineItemEntity { Order = string.IsNullOrWhiteSpace(model.RefundOrderId) ? orderPay.Order : new OrderEntity { Id = model.RefundOrderId.Convert <long>() }, Payline = payline, Key = orderPay.Key, Amount = 0 - ammount, SaveType = SaveType.Add }; payline.PaylineItems.Add(paylineItem); payline.OutNumber = orderPay.Number; }
public virtual ActionResult Create(PaylineModel model) { return(Create(model, PaylineType.Ali)); }
public virtual ActionResult Refund(PaylineModel model) { return(Refund(model, PaylineType.Wechat)); }
public virtual ActionResult Qr(PaylineModel model) { return(View("Qr")); }