예제 #1
0
        public ActionResult Success(string id)
        {
            var facade = FacadeFactory.GetInstance().GetFacade <MSPFacade>();
            var order  = facade.GetById <MSPOrder>(id);

            return(View(order));
        }
        /// <summary>
        /// Log all incoming text in a text file
        /// </summary>
        public string Index()
        {
            var path = Server.MapPath(string.Format("~/notification{0}.log", DateTime.Now.ToString("yyyy-MM-dd")));

            //check post values
            string notification = new StreamReader(Request.InputStream).ReadToEnd();

            //check get values
            string query = Request.Url.Query;

            string line = string.Format("[{0}] POST: {1} GET: {2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), notification, query);

            if (System.IO.File.Exists(path))
            {
                string oldText = System.IO.File.ReadAllText(path);
                using (var sw = new StreamWriter(path, false))
                {
                    sw.WriteLine(line);
                    sw.Write(oldText);
                }
            }
            else
            {
                System.IO.File.WriteAllText(path, line);
            }


            //now stars the order processing
            //step 1: get the order from the MultiSafepay client
            var  transactionid  = Request["transactionid"];
            var  pm             = new PaymentModel();
            var  c              = new MultiSafepay.MultiSafepayClient(pm.ApiKey, apiUrl: pm.ApiUrls[0]);
            bool ordercompleted = false;

            var order = c.GetOrder(transactionid);

            if (order != null)
            {
                ordercompleted = order.Status == "completed";
            }


            if (ordercompleted)
            {
                //get our order
                var facade  = FacadeFactory.GetInstance().GetFacade <MSPFacade>();
                var orderdb = facade.GetById <MSPOrder>(transactionid);

                if (orderdb != null)
                {
                    orderdb.Status = MSPOrderStatus.Completed;
                    facade.Save();
                }
            }
            return("OK");
        }
예제 #3
0
        public ActionResult Post2(PaymentModel pm)
        {
            var ordermodel = CreateRedirectOrder(pm);

            var         param   = Newtonsoft.Json.JsonConvert.SerializeObject(ordermodel);
            HttpContent content = new StringContent(param, Encoding.UTF8, "application/json");

            content.Headers.Add("api_key", pm.ApiKey);

            HttpClient client = new HttpClient();

            var    result        = client.PostAsync(pm.ApiUrl + "orders", content).Result;
            string resultContent = result.Content.ReadAsStringAsync().Result;

            var message = Newtonsoft.Json.JsonConvert.DeserializeObject <MultiSafepay.ResponseMessage <MultiSafepay.Model.PaymentLink> >(resultContent);

            if (!message.Success)
            {
                pm.Errors.Add(message.ErrorCode.ToString() + "-" + message.ErrorInfo);
            }
            else
            {
                pm.PaymentUrl = message.Data.PaymentUrl;

                var facade = FacadeFactory.GetInstance().GetFacade <MSPFacade>();

                var order = facade.GetById <MSPOrder>(pm.OrderId);

                order         = new MSPOrder();
                order.Id      = pm.OrderId;
                order.OrderId = pm.OrderId;
                order.Status  = MSPOrderStatus.Created;
                facade.Add(order);
                var val = facade.Save();
                pm.Errors = val.BrokenRules.ToList();
            }

            return(Json(pm));
        }