Beispiel #1
0
        public async Task <ActionResult> Reserve(int ItemId, bool capture = true)
        {
            var item  = db.ItemDb.Where(m => m.ItemId == ItemId).SingleOrDefault();
            var param = new
            {
                productName     = item.ItemName,
                productImageUrl = item.ImgUrl,
                amount          = item.ItemUnitPrice,
                currency        = "TWD",
                confirmUrl      = "https://wisemachinewebapp.azurewebsites.net/home/Confirm",
                orderId         = $"ORDER-{DateTime.Now:yyyyMMdd_HHmmss}",
                capture         = capture
            };


            // *** call RESERVE API
            var responseJson = await RequestGateway("request", param);

            dynamic responseObj = JObject.Parse(responseJson);

            ViewBag.ResponseJson = JsonConvert.SerializeObject(responseObj, Formatting.Indented);
            if (responseObj.returnCode == "0000")
            {
                OrderTransactions[responseObj.info.transactionId.ToString()] = param;
                ViewBag.PaymentUrl = responseObj.info.paymentUrl.web;
            }
            string PaymentUrl = responseObj.info.paymentUrl.web;


            SalesStatisticsDb order = new SalesStatisticsDb();

            order.ItemId = ItemId;
            //order.TransactionId = responseObj.info.transactionId;
            order.MachineId  = "1";
            order.UpdateTime = DateTime.Now.ToString("yyyy/MM/dd");
            //order.Amount = 1;
            db.SalesStatisticsDb.Add(order);
            db.SaveChanges();

            return(Redirect(PaymentUrl));
        }
        public async Task <ActionResult> Reserve(int ItemId, string tdA0, string tdA1, string tdA2, string tdA3, string tdA4, string tdA5, string tdA6, string tdA7, string tdA8, string tdA9, bool capture = true)
        {
            TempData["PayOK"] = ItemId;
            var item  = db.ItemDb.Where(m => m.ItemId == ItemId).SingleOrDefault();
            var param = new
            {
                productName     = item.ItemName,
                productImageUrl = item.ImgUrl,
                amount          = item.ItemUnitPrice,
                currency        = "TWD",
                confirmUrl      = "https://wisemachinewebapp.azurewebsites.net/home/Confirm",
                orderId         = $"ORDER-{DateTime.Now:yyyyMMdd_HHmmss}",
                capture         = capture
            };

            string[] y       = new string[] { tdA0, tdA1, tdA2, tdA3, tdA4, tdA5, tdA6, tdA7, tdA8, tdA9 };
            var      name    = item.ItemName;
            var      machine = db.MachineStorageDb.Where(m => m.ItemId == ItemId).FirstOrDefault();
            int      buyit   = Convert.ToInt32(machine.Amount) - 1;

            y[Convert.ToInt32(machine.Rack) - 1] = buyit.ToString();

            for (int i = 1; i <= y.Length; i++)
            {
                var original = db.MachineStorageDb.AsNoTracking().Where(m => m.Rack == i.ToString() && m.MachineId == "1").FirstOrDefault();
                //新的值
                var machineStorage = db.MachineStorageDb.Where(m => m.Rack == i.ToString() && m.MachineId == "1").FirstOrDefault();
                machineStorage.Amount = y[i - 1];


                //比較新舊更新
                if (machineStorage.Amount != original.Amount)
                {
                    db.Entry(machineStorage).Property(m => m.Amount).IsModified = true;
                }
                else
                {
                    db.Entry(machineStorage).Property(m => m.Amount).IsModified = false;
                }
                db.SaveChanges();
            }

            // *** call RESERVE API
            var responseJson = await RequestGateway("request", param);

            dynamic responseObj = JObject.Parse(responseJson);

            ViewBag.ResponseJson = JsonConvert.SerializeObject(responseObj, Formatting.Indented);
            if (responseObj.returnCode == "0000")
            {
                OrderTransactions[responseObj.info.transactionId.ToString()] = param;
                ViewBag.PaymentUrl = responseObj.info.paymentUrl.web;
            }
            string PaymentUrl = responseObj.info.paymentUrl.web;


            SalesStatisticsDb order = new SalesStatisticsDb();

            order.ItemId = ItemId;
            //order.TransactionId = responseObj.info.transactionId;
            order.MachineId  = "1";
            order.UpdateTime = DateTime.Now.ToString("yyyy/MM/dd");
            //order.Amount = 1;
            db.SalesStatisticsDb.Add(order);
            db.SaveChanges();

            return(Redirect(PaymentUrl));
        }