コード例 #1
0
        private void btnProcessFile_Click(object sender, RoutedEventArgs e)
        {
            FilePath_TxtBox.Text = string.Empty;
            WebOrderModel webOrderModel = new WebOrderModel();

            try
            {
                webOrderModel = WebOrderHelpers.DeserializeToObject <WebOrderModel>(filePath);
            }
            catch (System.Exception exception)
            {
                MessageBox.Show($"There was an error in processing your file. Make sure it is the correct type and format. {Environment.NewLine}" +
                                $"Error message: {exception.Message}");
            }

            WebOrder webOrderView = new WebOrder();

            if (webOrderModel.Equals(new WebOrderModel()))
            {
                MessageBox.Show("There seems to be an error with your input file. Check its structure and try again.");
            }
            else
            {
                webOrderView     = new WebOrder(webOrderModel);
                Id.Content       = webOrderView.ID == 0 ? "Wrong order ID" : webOrderView.ID.ToString();
                Customer.Content = string.IsNullOrEmpty(webOrderView.Customer) ? "No customer name found." : webOrderView.Customer;
                Date.Content     = webOrderView.Date.Equals(new System.DateTime(0001, 01, 01)) ? Date.Content = "Wrong date format" : webOrderView.Date;
                PriceAvg.Content = webOrderView.PriceAvg.Equals("000.000") ? "No items found" : webOrderView.PriceAvg;
                Total.Content    = webOrderView.Total.Equals("000.000") ? "No items found" : webOrderView.Total;
            }
        }
コード例 #2
0
        public WebOrder(WebOrderModel webOrderModel)
        {
            double total, priceAvg;

            ID       = webOrderModel.ID;
            Customer = webOrderModel.Customer;
            Date     = WebOrderHelpers.GetParsedDate(webOrderModel.Date);
            Amount   = webOrderModel.Items.Count != 0  ? webOrderModel.Items.Sum(i => i.Quantity) : 0;
            total    = webOrderModel.Items.Count != 0 ? webOrderModel.Items.Select(x => x.Price * x.Quantity).Sum() : 0;
            Total    = string.Format("{0: #,000.000}", total).Trim();
            priceAvg = webOrderModel.Items.Count != 0 ? webOrderModel.Items.Average(i => i.Price) : 0;
            PriceAvg = string.Format("{0: #,000.000}", priceAvg).Trim();
        }
コード例 #3
0
        public void DeserializationTest1(string inputXMLPath)
        {
            WebOrderModel WOModel = WebOrderHelpers.DeserializeToObject <WebOrderModel>(inputXMLPath);

            if ((WOModel.ID.GetType().Equals(typeof(int)))
                & (WOModel.Customer.GetType().Equals(typeof(string)))
                & (WOModel.Date.GetType().Equals(typeof(string)))
                & (WOModel.AvgUnitPrice.GetType().Equals(typeof(decimal)))
                & (WOModel.Total.GetType().Equals(typeof(decimal))))
            {
                Assert.Pass();
            }
            else
            {
                Assert.Fail();
            }
        }
コード例 #4
0
        //網購傳回ATM訂單
        public void orderATM(string callback)
        {
            MotaiDataEntities dbContext  = new MotaiDataEntities();
            List <string>     enErrors   = new List <string>();
            Hashtable         htFeedback = null;

            try
            {
                using (AllInOne oPayment = new AllInOne())
                {
                    oPayment.HashKey = "5294y06JbISpM5x9";
                    oPayment.HashIV  = "v77hoKGq4kWxNNIS";
                    /* 取回付款結果 */
                    enErrors.AddRange(oPayment.CheckOutFeedback(ref htFeedback));
                }
                // 取回所有資料
                if (enErrors.Count() == 0)
                {
                    /* 支付後的回傳的基本參數 */
                    string szMerchantID      = String.Empty;
                    string szMerchantTradeNo = String.Empty;
                    string szPaymentType     = String.Empty;
                    string szRtnCode         = String.Empty;
                    string szRtnMsg          = String.Empty;
                    string szTradeAmt        = String.Empty;
                    string szTradeDate       = String.Empty;
                    string szTradeNo         = String.Empty;
                    string szBankCode        = String.Empty;
                    string szVirtualAccount  = String.Empty;
                    string szExpireDate      = String.Empty;
                    // 取得資料
                    foreach (string szKey in htFeedback.Keys)
                    {
                        switch (szKey)
                        {
                        /* 支付後的回傳的基本參數 */
                        case "MerchantID": szMerchantID = htFeedback[szKey].ToString(); break;

                        case "MerchantTradeNo": szMerchantTradeNo = htFeedback[szKey].ToString();
                            break;

                        case "RtnCode": szRtnCode = htFeedback[szKey].ToString(); break;

                        case "RtnMsg": szRtnMsg = htFeedback[szKey].ToString(); break;

                        case "TradeNo": szTradeNo = htFeedback[szKey].ToString(); break;

                        case "TradeAmt": szTradeAmt = htFeedback[szKey].ToString(); break;

                        case "PaymentType": szPaymentType = htFeedback[szKey].ToString(); break;

                        case "TradeDate": szTradeDate = htFeedback[szKey].ToString(); break;

                        case "BankCode": szBankCode = htFeedback[szKey].ToString(); break;

                        case "vAccount": szVirtualAccount = htFeedback[szKey].ToString(); break;

                        case "ExpireDate": szExpireDate = htFeedback[szKey].ToString(); break;

                        default:
                            break;
                        }
                    }
                    WebOrderModel Trade = Session[szMerchantTradeNo] as WebOrderModel;
                    //先建訂單
                    tOrder newOrder = new tOrder();
                    newOrder.oCustomerId    = Trade.customer.CustomerId;
                    newOrder.oDate          = Trade.payDate;
                    newOrder.oAddress       = Trade.webpay.shipAddress;
                    newOrder.oWarehouseName = 1;
                    dbContext.tOrders.Add(newOrder);
                    dbContext.SaveChanges();
                    tOrder CreateOrder = dbContext.tOrders.OrderByDescending(o => o.OrderId).FirstOrDefault();
                    foreach (var item in Trade.boughtList)
                    {
                        tOrderDetail orderDetail = new tOrderDetail();
                        orderDetail.oOrderId    = CreateOrder.OrderId;
                        orderDetail.oProductId  = item.sProductId;
                        orderDetail.oProductQty = item.sProductQty;
                        dbContext.tOrderDetails.Add(orderDetail);
                        dbContext.tStatus.Remove(item);
                    }
                    dbContext.SaveChanges();
                }
                else
                {
                    // 其他資料處理。
                }
            }
            catch (Exception ex)
            {
                // 例外錯誤處理。
                enErrors.Add(ex.Message);
            }
            finally
            {
                this.Response.Clear();
                // 回覆成功訊息。
                if (enErrors.Count() == 0)
                {
                    this.Response.Write("1|OK");
                }
                // 回覆錯誤訊息。
                else
                {
                    this.Response.Write(String.Format("0|{0}", String.Join("\\r\\n", enErrors)));
                }
                this.Response.Flush();
                this.Response.End();
            }
        }
コード例 #5
0
        public ActionResult test()
        {
            List <string> enErrors   = new List <string>();
            Hashtable     htFeedback = null;

            try
            {
                using (AllInOne oPayment = new AllInOne())
                {
                    oPayment.HashKey = "5294y06JbISpM5x9";
                    oPayment.HashIV  = "v77hoKGq4kWxNNIS";
                    /* 取回付款結果 */
                    enErrors.AddRange(oPayment.CheckOutFeedback(ref htFeedback));
                    //htFeedback.Values[];
                }

                // 取回所有資料
                if (enErrors.Count() == 0)
                {
                    /* 支付後的回傳的基本參數 */
                    string szMerchantID      = String.Empty;
                    string szMerchantTradeNo = String.Empty;
                    string szRtnCode         = String.Empty;
                    string szRtnMsg          = String.Empty;
                    /* 使用定期定額交易時,回傳的額外參數 */
                    string szPeriodType        = String.Empty;
                    string szFrequency         = String.Empty;
                    string szExecTimes         = String.Empty;
                    string szAmount            = String.Empty;
                    string szGwsr              = String.Empty;
                    string szProcessDate       = String.Empty;
                    string szAuthCode          = String.Empty;
                    string szFirstAuthAmount   = String.Empty;
                    string szTotalSuccessTimes = String.Empty;
                    // 取得資料
                    foreach (string szKey in htFeedback.Keys)
                    {
                        switch (szKey)
                        {
                        /* 使用定期定額交易時回傳的參數 */
                        case "MerchantID": szMerchantID = htFeedback[szKey].ToString(); break;

                        case "MerchantTradeNo":
                            szMerchantTradeNo = htFeedback[szKey].ToString();
                            break;

                        case "RtnCode": szRtnCode = htFeedback[szKey].ToString(); break;

                        case "RtnMsg": szRtnMsg = htFeedback[szKey].ToString(); break;

                        case "PeriodType": szPeriodType = htFeedback[szKey].ToString(); break;

                        case "Frequency": szFrequency = htFeedback[szKey].ToString(); break;

                        case "ExecTimes": szExecTimes = htFeedback[szKey].ToString(); break;

                        case "Amount": szAmount = htFeedback[szKey].ToString(); break;

                        case "Gwsr": szGwsr = htFeedback[szKey].ToString(); break;

                        case "ProcessDate": szProcessDate = htFeedback[szKey].ToString(); break;

                        case "AuthCode": szAuthCode = htFeedback[szKey].ToString(); break;

                        case "FirstAuthAmount":
                            szFirstAuthAmount = htFeedback[szKey].ToString();
                            break;

                        case "TotalSuccessTimes":
                            szTotalSuccessTimes = htFeedback[szKey].ToString();
                            break;

                        default: break;
                        }
                    }

                    WebOrderModel Trade = Session[szMerchantTradeNo] as WebOrderModel;
                }
                else
                {
                    // 其他資料處理。
                }
            }
            catch (Exception ex)
            {
                // 例外錯誤處理。
                enErrors.Add(ex.Message);
            }
            finally
            {
                this.Response.Clear();
                // 回覆成功訊息。
                if (enErrors.Count() == 0)
                {
                    this.Response.Write("1|OK");
                }
                // 回覆錯誤訊息。
                else
                {
                    this.Response.Write(String.Format("0|{0}", String.Join("\\r\\n", enErrors)));
                }
                this.Response.Flush();
                this.Response.End();
            }
            return(View(htFeedback));
        }