private AutoGen.CancelOrderRequest ParseCancelOrderRequest(byte[] Xml)
        {
            Type   T    = typeof(AutoGen.CancelOrderRequest);
            string Xml2 = EncodeHelper.Utf8BytesToString(Xml);

            return((AutoGen.CancelOrderRequest)EncodeHelper.Deserialize(Xml2, T));
        }
        public void ChargeOrderRequest()
        {
            ChargeOrderRequest Req;

            AutoGen.ChargeOrderRequest D;

            // Test the first constructor.
            Req = new ChargeOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, D.googleordernumber);
            Assert.AreEqual(null, D.amount);

            // Test the second constructor.
            Req = new ChargeOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, "GBP", 10.2m);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, D.googleordernumber);
            Assert.AreEqual("GBP", D.amount.currency);
            Assert.AreEqual(10.2m, D.amount.Value);

            Req = new ChargeOrderRequest(ORDER_NUMBER);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(Req.GoogleOrderNumber, D.googleordernumber);

            Req = new ChargeOrderRequest(ORDER_NUMBER, "USD", 12.975m);
            D   = (AutoGen.ChargeOrderRequest)EncodeHelper.Deserialize(Req.GetXml());
            Assert.AreEqual(Req.GoogleOrderNumber, D.googleordernumber);
            Assert.AreEqual(Req.Amount, 12.98m);
        }
        private void ProcessRiskInformationNotification(string xmlData)
        {
            var riskInformationNotification = (RiskInformationNotification)EncodeHelper.Deserialize(xmlData, typeof(RiskInformationNotification));

            var riskSb = new StringBuilder();

            riskSb.Append("Risk Information: ");
            riskSb.Append("googleordernumber: ");
            riskSb.Append(riskInformationNotification.googleordernumber);
            riskSb.Append(", avsresponse: ");
            riskSb.Append(riskInformationNotification.riskinformation.avsresponse);
            riskSb.Append(", ipaddress: ");
            riskSb.Append(riskInformationNotification.riskinformation.ipaddress);
            riskSb.Append(", partialccnumber: ");
            riskSb.Append(riskInformationNotification.riskinformation.partialccnumber);
            string message = riskSb.ToString();

            LogMessage(message);

            Order order = GetMerchantOrderByGoogleOrderId(riskInformationNotification.googleordernumber);

            if (order != null)
            {
                //add a note
                order.OrderNotes.Add(new OrderNote()
                {
                    Note         = message,
                    CreatedOnUtc = DateTime.UtcNow
                });
                _orderService.UpdateOrder(order);
            }
        }
        public void SendBuyerMessageRequestTests()
        {
            SendBuyerMessageRequest req = new SendBuyerMessageRequest(ORDER_NUMBER, MESSAGE, true);

            AutoGen.SendBuyerMessageRequest post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.SendBuyerMessageRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);
            Assert.AreEqual(req.Message, post.message);
            Assert.AreEqual(req.SendEmail, true);

            req  = new SendBuyerMessageRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, MESSAGE, true);
            post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.SendBuyerMessageRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);
            Assert.AreEqual(req.Message, post.message);
            Assert.AreEqual(req.SendEmail, post.sendemail);

            req  = new SendBuyerMessageRequest(ORDER_NUMBER, MESSAGE);
            post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.SendBuyerMessageRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);
            Assert.AreEqual(req.Message, post.message);
            Assert.AreEqual(req.SendEmail, post.sendemail);

            req  = new SendBuyerMessageRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, MESSAGE);
            post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.SendBuyerMessageRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);
            Assert.AreEqual(req.Message, post.message);
            Assert.AreEqual(req.SendEmail, post.sendemail, "Send Email");
        }
        public void Verify_Serial_Number_Supported()
        {
            var sn      = "123456";
            var request = new NotificationHistoryRequest(new NotificationHistorySerialNumber(sn));

            var roundTrip = EncodeHelper.Deserialize(EncodeHelper.Utf8BytesToString(request.GetXml()),
                                                     typeof(GCheckout.AutoGen.NotificationHistoryRequest)) as GCheckout.AutoGen.NotificationHistoryRequest;

            Assert.AreEqual(sn, roundTrip.serialnumber);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Parse the Message for a notification data token response message.
        /// </summary>
        /// <returns></returns>
        protected override bool ParseMessage()
        {
            try {
                if (ResponseXml.IndexOf("<notification-history-response") > -1)
                {
                    _response = (AutoGen.NotificationHistoryResponse)
                                EncodeHelper.Deserialize(ResponseXml,
                                                         typeof(AutoGen.NotificationHistoryResponse));
                    Log.Xml(_response.serialnumber, ResponseXml);
                    return(true);
                }
                else
                {
                    Debug.WriteLine("NotificationHistoryResponse was not expected type: notification-history-response");
                    /* hack: test against all possible message types and wrap in a response */
                    var messageTypes = new List <Type> {
                        typeof(AutoGen.NewOrderNotification),
                        typeof(AutoGen.AuthorizationAmountNotification),
                        typeof(AutoGen.ChargeAmountNotification),
                        typeof(AutoGen.OrderStateChangeNotification),
                        typeof(AutoGen.RiskInformationNotification)
                    };
                    _response = new AutoGen.NotificationHistoryResponse();
                    _response.notifications
                        = new GCheckout.AutoGen.NotificationHistoryResponseNotifications();
                    bool found = false;
                    foreach (Type t in messageTypes)
                    {
                        try {
                            Log.Debug("Trying to deserialize message as type:" + t.Name);
                            object o = EncodeHelper.Deserialize(ResponseXml, t);
                            _response.notifications.Items = new object[] { o };
                            Debug.WriteLine("Message was type:" + t.Name);
                            found = true;
                            break;
                        }
                        catch {
                            //ignore
                        }
                    }
                    Log.Xml(_response.serialnumber, ResponseXml);
                    if (!found)
                    {
                        Log.Err("Unable to determine message type for NotificationHistoryResponse:" + ResponseXml);
                    }
                    return(found);
                }
            }
            catch (Exception ex) {
                Log.Err("ParseMessage: Error trying to deserialize:" + ex.Message);
                //let it continue
            }

            return(false);
        }
        public void ArchiveOrderRequestTests()
        {
            ArchiveOrderRequest req = new ArchiveOrderRequest(ORDER_NUMBER);
            ArchiveOrderRequest req2
                = EncodeHelper.Deserialize(req.GetXml()) as ArchiveOrderRequest;

            Assert.AreEqual(ORDER_NUMBER, req.GoogleOrderNumber);

            req = new ArchiveOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            Assert.AreEqual(ORDER_NUMBER, req.GoogleOrderNumber);
        }
        public void UnarchiveOrderRequestTests()
        {
            UnarchiveOrderRequest req = new UnarchiveOrderRequest(ORDER_NUMBER);

            AutoGen.UnarchiveOrderRequest post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.UnarchiveOrderRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);

            req  = new UnarchiveOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            post = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.UnarchiveOrderRequest;
        }
        public void TestHelloRequest1()
        {
            HelloRequest hr = new HelloRequest();

            AutoGen.Hello sr = EncodeHelper.Deserialize(hr.GetXml()) as AutoGen.Hello;
            Assert.IsNotNull(sr);
            hr = new HelloRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Production.ToString());
            Assert.AreEqual(MERCHANT_ID, hr.MerchantID);
            Assert.AreEqual(MERCHANT_KEY, hr.MerchantKey);
            Assert.AreEqual(EnvironmentType.Production, hr.Environment);
        }
        public void TestNotificationDataRequest()
        {
            NotificationDataRequest hr = new NotificationDataRequest();

            AutoGen.NotificationDataRequest sr = EncodeHelper.Deserialize(hr.GetXml()) as AutoGen.NotificationDataRequest;
            Assert.IsNotNull(sr);

            hr = new NotificationDataRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Production.ToString(), "test_token");
            Assert.AreEqual(MERCHANT_ID, hr.MerchantID);
            Assert.AreEqual(MERCHANT_KEY, hr.MerchantKey);
            Assert.AreEqual(EnvironmentType.Production, hr.Environment);
            Assert.AreEqual("test_token", hr.Token);
        }
Ejemplo n.º 11
0
        public void FailedXmlParsing_NotXml()
        {
            string invalidXml = "This is not valid XML.";

            try {
                Object o = EncodeHelper.Deserialize(invalidXml);
                Assert.Fail("An exception should have been thrown.");
            }
            catch (ApplicationException e) {
                // Make sure there is an exception and that it contains
                // the malformed XML.
                Assert.IsTrue(e.Message.IndexOf(invalidXml) > -1);
            }
        }
        public void ProcessOrderRequest()
        {
            byte[] xml;
            ProcessOrderRequest req = new ProcessOrderRequest(ORDER_NUMBER);

            xml = req.GetXml();

            AutoGen.ProcessOrderRequest post
                = EncodeHelper.Deserialize(xml) as AutoGen.ProcessOrderRequest;

            Assert.AreEqual(req.GoogleOrderNumber, post.googleordernumber);

            req = new ProcessOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            xml = req.GetXml();
        }
Ejemplo n.º 13
0
        public void FailedXmlParsing_InvalidEnd()
        {
            AutoGen.NewOrderNotification n = CreateNewOrderNotification();
            string xml = EncodeHelper.Utf8BytesToString(EncodeHelper.Serialize(n));

            xml = xml + "blah";
            try {
                Object o = EncodeHelper.Deserialize(xml);
                Assert.Fail("An exception should have been thrown.");
            }
            catch (ApplicationException e) {
                // Make sure there is an exception and that it contains
                // the malformed XML.
                Assert.IsTrue(e.Message.IndexOf(xml) > -1);
            }
        }
        public void TestAddMerchantOrderNumberRequest()
        {
            AddMerchantOrderNumberRequest req = new AddMerchantOrderNumberRequest(ORDER_NUMBER, MERCHANT_ORDER_NUMBER);

            AutoGen.AddMerchantOrderNumberRequest D
                = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.AddMerchantOrderNumberRequest;

            Assert.AreEqual(req.GoogleOrderNumber, D.googleordernumber);
            Assert.AreEqual(MERCHANT_ORDER_NUMBER, D.merchantordernumber);

            req = new AddMerchantOrderNumberRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, MERCHANT_ORDER_NUMBER);
            D   = EncodeHelper.Deserialize(req.GetXml()) as AutoGen.AddMerchantOrderNumberRequest;

            Assert.AreEqual(req.GoogleOrderNumber, D.googleordernumber);
            Assert.AreEqual(MERCHANT_ORDER_NUMBER, D.merchantordernumber);
        }
Ejemplo n.º 15
0
        public void DefaultTaxTable_AddStateTaxRule_VerifyTaxRateSetsIsSpecified()
        {
            //create a pickup shipping method
            var request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "GBP", 120);

            request.AddStateTaxRule("OH", .05, true);

            CheckoutShoppingCart roundTrip = EncodeHelper.Deserialize(EncodeHelper.Utf8BytesToString(request.GetXml()),
                                                                      typeof(CheckoutShoppingCart)) as CheckoutShoppingCart;

            var actualTaxTable = roundTrip.checkoutflowsupport.Item.taxtables.defaulttaxtable.taxrules[0];

            Assert.AreEqual(.05, actualTaxTable.rate);
            Assert.IsTrue(actualTaxTable.rateSpecified);
            Assert.IsTrue(actualTaxTable.shippingtaxed);
            Assert.AreEqual(typeof(USStateArea), actualTaxTable.taxarea.Item.GetType());
        }
        private void ProcessOrderStateChangeNotification(string xmlData)
        {
            try
            {
                var changeOrder = (OrderStateChangeNotification)EncodeHelper.Deserialize(xmlData, typeof(OrderStateChangeNotification));

                FinancialOrderState orderState = changeOrder.newfinancialorderstate;
                Order order = GetMerchantOrderByGoogleOrderId(changeOrder.googleordernumber);
                if (order != null)
                {
                    string message = string.Format("Order status {0} from Google: Order Number {1}", orderState, changeOrder.googleordernumber);
                    LogMessage(message);

                    //add a note
                    order.OrderNotes.Add(new OrderNote()
                    {
                        Note         = message,
                        CreatedOnUtc = DateTime.UtcNow
                    });
                    _orderService.UpdateOrder(order);

                    if (orderState == FinancialOrderState.CHARGING ||
                        orderState == FinancialOrderState.REVIEWING)
                    {
                    }

                    if (orderState == FinancialOrderState.CHARGEABLE)
                    {
                        _orderProcessingService.MarkAsAuthorized(order);
                    }
                    if (orderState == FinancialOrderState.CHARGED)
                    {
                        _orderProcessingService.MarkOrderAsPaid(order);
                    }
                    if (orderState == FinancialOrderState.CANCELLED || orderState == FinancialOrderState.CANCELLED_BY_GOOGLE)
                    {
                        _orderProcessingService.CancelOrder(order, true);
                    }
                }
            }
            catch (Exception exc)
            {
                LogMessage("processOrderStateChangeNotification Exception: " + exc.Message + ": " + exc.StackTrace);
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Parse the Message for a notification data token response message.
        /// </summary>
        /// <returns></returns>
        protected override bool ParseMessage()
        {
            try {
                if (ResponseXml.IndexOf("<notification-data-response") > -1)
                {
                    _response = (AutoGen.NotificationDataResponse)
                                EncodeHelper.Deserialize(ResponseXml,
                                                         typeof(AutoGen.NotificationDataResponse));
                    Log.Xml(_response.serialnumber, ResponseXml);
                    return(true);
                }
            }
            catch (Exception ex) {
                Log.Err("NotificationDataResponse ParseResponse:" + ex.Message);
            }

            return(false);
        }
Ejemplo n.º 18
0
        public void VerifyTaxRateSetsIsSpecified()
        {
            //create a pickup shipping method
            var request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "GBP", 120);

            request.AddPickupShippingMethod("Name", 4.95m);
            request.AddCountryTaxRule(GCheckout.AutoGen.USAreas.ALL, .05, true);
            request.AddWorldAreaTaxRule(.02, true);
            //Tax GB at 5%
            request.AddPostalAreaTaxRule("GB", .05, true);

            CheckoutShoppingCart roundTrip = EncodeHelper.Deserialize(EncodeHelper.Utf8BytesToString(request.GetXml()),
                                                                      typeof(CheckoutShoppingCart)) as CheckoutShoppingCart;

            Assert.IsTrue(roundTrip.checkoutflowsupport.Item.taxtables.defaulttaxtable.taxrules[0].rateSpecified);
            Assert.IsTrue(roundTrip.checkoutflowsupport.Item.taxtables.defaulttaxtable.taxrules[0].shippingtaxed);
            Assert.IsTrue(roundTrip.checkoutflowsupport.Item.taxtables.defaulttaxtable.taxrules[0].shippingtaxedSpecified);
        }
Ejemplo n.º 19
0
        private static void ProcessNotification(string Type, string Xml)
        {
            switch (Type)
            {
            case "new-order-notification":
                NewOrderNotification N1 = (NewOrderNotification)
                                          EncodeHelper.Deserialize(Xml, typeof(NewOrderNotification));
                // Add call to existing business system here, passing data from N1.
                break;

            case "risk-information-notification":
                RiskInformationNotification N2 = (RiskInformationNotification)
                                                 EncodeHelper.Deserialize(Xml, typeof(RiskInformationNotification));
                // Add call to existing business system here, passing data from N2.
                break;

            case "order-state-change-notification":
                OrderStateChangeNotification N3 = (OrderStateChangeNotification)
                                                  EncodeHelper.Deserialize(Xml, typeof(OrderStateChangeNotification));
                // Add call to existing business system here, passing data from N3.
                break;

            case "charge-amount-notification":
                ChargeAmountNotification N4 = (ChargeAmountNotification)
                                              EncodeHelper.Deserialize(Xml, typeof(ChargeAmountNotification));
                // Add call to existing business system here, passing data from N4.
                break;

            case "refund-amount-notification":
                RefundAmountNotification N5 = (RefundAmountNotification)
                                              EncodeHelper.Deserialize(Xml, typeof(RefundAmountNotification));
                // Add call to existing business system here, passing data from N5.
                break;

            case "chargeback-amount-notification":
                ChargebackAmountNotification N6 = (ChargebackAmountNotification)
                                                  EncodeHelper.Deserialize(Xml, typeof(ChargebackAmountNotification));
                // Add call to existing business system here, passing data from N6.
                break;

            default:
                throw new ApplicationException("Unknown notification type: " + Type);
            }
        }
        private AutoGen.DeliverOrderRequest ParseDeliverOrderRequest(byte[] Xml)
        {
            object testVal = null;

            Type T = typeof(AutoGen.DeliverOrderRequest);

            testVal = EncodeHelper.Deserialize(Xml);
            Assert.IsNotNull(testVal);
            Assert.AreEqual(testVal.GetType(), T);

            string Xml2 = EncodeHelper.Utf8BytesToString(Xml);

            //we want to test the generic Deserialize Method first.
            testVal = EncodeHelper.Deserialize(Xml2);
            Assert.IsNotNull(testVal);
            Assert.AreEqual(testVal.GetType(), T);

            return((AutoGen.DeliverOrderRequest)EncodeHelper.Deserialize(Xml2, T));
        }
        public void TestAlternateTaxTable_NoRules_VerifyNodeIsCreated()
        {
            //create a pickup shipping method
            var request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "GBP", 120);

            var taxTable = new AlternateTaxTable("canada");

            request.AlternateTaxTables.Add(taxTable);

            CheckoutShoppingCart roundTrip = EncodeHelper.Deserialize(EncodeHelper.Utf8BytesToString(request.GetXml()),
                                                                      typeof(CheckoutShoppingCart)) as CheckoutShoppingCart;

            //Debug.WriteLine(EncodeHelper.Utf8BytesToString(request.GetXml()));

            var actualTaxTable = roundTrip.checkoutflowsupport.Item.taxtables.alternatetaxtables[0];

            Assert.IsNotNull(actualTaxTable.alternatetaxrules);
            Assert.IsTrue(actualTaxTable.alternatetaxrules.Length == 0);
        }
        public void TestAlternateTaxTable_AddWorldAreaTaxRule_VerifyTaxRateSetsIsSpecified()
        {
            //create a pickup shipping method
            var request = new CheckoutShoppingCartRequest(MERCHANT_ID, MERCHANT_KEY, EnvironmentType.Sandbox, "GBP", 120);

            var taxTable = new AlternateTaxTable("canada");

            request.AlternateTaxTables.Add(taxTable);
            taxTable.AddWorldAreaTaxRule(.05);

            CheckoutShoppingCart roundTrip = EncodeHelper.Deserialize(EncodeHelper.Utf8BytesToString(request.GetXml()),
                                                                      typeof(CheckoutShoppingCart)) as CheckoutShoppingCart;

            var actualTaxTable = roundTrip.checkoutflowsupport.Item.taxtables.alternatetaxtables[0].alternatetaxrules[0];

            Assert.AreEqual(.05, actualTaxTable.rate);
            Assert.IsTrue(actualTaxTable.rateSpecified);
            Assert.AreEqual(typeof(WorldArea), actualTaxTable.taxarea.Item.GetType());
        }
        private void processErrorNotification(string xmlData)
        {
            try
            {
                ErrorResponse errorResponse = (ErrorResponse)EncodeHelper.Deserialize(xmlData, typeof(ErrorResponse));

                StringBuilder errorSB = new StringBuilder();
                errorSB.Append(string.Format("Error response message received: {0}", errorResponse.errormessage));
                foreach (string Warning in errorResponse.warningmessages)
                {
                    errorSB.Append("Warning: " + Warning);
                }
                string message = errorSB.ToString();
                logMessage(message);
            }
            catch (Exception exc)
            {
                logMessage("processErrorNotification Exception: " + exc.Message + ": " + exc.StackTrace);
            }
        }
        public void CartExpiration()
        {
            byte[] Xml;
            AutoGen.CheckoutShoppingCart Cart;
            CheckoutShoppingCartRequest  Req = new CheckoutShoppingCartRequest
                                                   ("123", "456", EnvironmentType.Sandbox, "USD", 0);

            Req.AddItem("Mars bar", "", 0.75m, 2);
            Req.AddFlatRateShippingMethod("USPS", 4.30m);
            Req.SetExpirationMinutesFromNow(10);
            Xml  = Req.GetXml();
            Cart = (AutoGen.CheckoutShoppingCart)EncodeHelper.Deserialize(Xml);
            DateTime Exp = Cart.shoppingcart.cartexpiration.gooduntildate;

            Exp = Exp.ToLocalTime();
            TimeSpan T = Exp.Subtract(DateTime.Now);

            Assert.IsTrue(T.TotalSeconds <= 600);
            Assert.IsTrue(T.TotalSeconds > 595);
        }
        public void RequestInitialAuthDetails()
        {
            byte[] Xml;
            AutoGen.CheckoutShoppingCart Cart;
            CheckoutShoppingCartRequest  Req = new CheckoutShoppingCartRequest
                                                   ("123", "456", EnvironmentType.Sandbox, "USD", 0);

            Req.AddItem("Mars bar", "", 0.75m, 2);
            Req.AddFlatRateShippingMethod("USPS", 4.30m);
            // Check the <order-processing-support> tag is not there by default.
            Xml  = Req.GetXml();
            Cart = (AutoGen.CheckoutShoppingCart)EncodeHelper.Deserialize(Xml);
            Assert.IsNull(Cart.orderprocessingsupport);
            // Set RequestInitialAuthDetails and check that the XML changes.
            Req.RequestInitialAuthDetails = true;
            Xml  = Req.GetXml();
            Cart = (AutoGen.CheckoutShoppingCart)EncodeHelper.Deserialize(Xml);
            Assert.IsNotNull(Cart.orderprocessingsupport);
            Assert.IsTrue(Cart.orderprocessingsupport.requestinitialauthdetails);
            Assert.IsTrue(Cart.orderprocessingsupport.requestinitialauthdetailsSpecified);
        }
        public void TestChargeAndShipOrderRequest()
        {
            ChargeAndShipOrderRequest req;

            AutoGen.ChargeAndShipOrderRequest d;

            // Test the first constructor.
            req = new ChargeAndShipOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER);
            d   = (AutoGen.ChargeAndShipOrderRequest)EncodeHelper.Deserialize(req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, d.googleordernumber);
            Assert.AreEqual(null, d.amount);

            // Test the second constructor.
            req = new ChargeAndShipOrderRequest(MERCHANT_ID, MERCHANT_KEY, "Sandbox", ORDER_NUMBER, "GBP", 10.2m);
            d   = (AutoGen.ChargeAndShipOrderRequest)EncodeHelper.Deserialize(req.GetXml());
            Assert.AreEqual(ORDER_NUMBER, d.googleordernumber);
            Assert.AreEqual("GBP", d.amount.currency);
            Assert.AreEqual(10.2m, d.amount.Value);

            req = new ChargeAndShipOrderRequest(ORDER_NUMBER);
            d   = (AutoGen.ChargeAndShipOrderRequest)EncodeHelper.Deserialize(req.GetXml());
            Assert.AreEqual(req.GoogleOrderNumber, d.googleordernumber);

            req        = new ChargeAndShipOrderRequest(ORDER_NUMBER);
            req.Amount = 12.98m;
            d          = (AutoGen.ChargeAndShipOrderRequest)EncodeHelper.Deserialize(req.GetXml());
            Assert.AreEqual(req.GoogleOrderNumber, d.googleordernumber);
            Assert.AreEqual(req.Amount, 12.98m);


            req           = new ChargeAndShipOrderRequest(ORDER_NUMBER);
            req.Amount    = 12.98m;
            req.SendEmail = true;
            req.ItemShippingInformation.AddMerchantItemId("UPS", "123456", "12");
            req.TrackingDataList.AddTrackingData("UPS", "987655");
            d = (AutoGen.ChargeAndShipOrderRequest)EncodeHelper.Deserialize(req.GetXml());
            Assert.AreEqual(req.GoogleOrderNumber, d.googleordernumber);
            Assert.AreEqual(req.Amount, 12.98m);
            Assert.AreEqual(req.SendEmail, d.sendemail);
        }
Ejemplo n.º 27
0
        public void BadXmlTests()
        {
            try {
                EncodeHelper.Deserialize("<garbage />", typeof(System.Object));
                Assert.Fail("You should not have been able to deserialize this preceding xml");
            }
            catch {
            }

            MemoryStream ms = new MemoryStream();

            using (StreamWriter sw = new StreamWriter(ms)) {
                sw.Write("<garbage />");
                sw.Flush();
                object test = EncodeHelper.Deserialize(ms);
                Assert.AreEqual(null, test);
            }

            try {
                //Test the Deserialize method that builds an error message.
                ms = new MemoryStream();
                using (BufferedStream sw = new BufferedStream(ms)) {
                    sw.Write(Encoding.UTF8.GetPreamble(), 0, 3);
                    byte[] msg = System.Text.Encoding.UTF8.GetBytes("<garbage>");
                    sw.Write(msg, 0, msg.Length);
                    sw.Flush();
                    ms.Position = 0;
                    object test = EncodeHelper.Deserialize(ms);
                    Assert.AreEqual(null, test);
                }
            }
            catch (Exception ex) {
                if (ex.Message.IndexOf("Couldn't parse XML") == -1)
                {
                    Assert.Fail("We should have failed for a bad xml file.");
                }
            }
        }
        public void TestOrderSummaryRequest()
        {
            var shipRequestOriginal = new OrderSummaryRequest("1234567890");
            var shipRequestNew      = EncodeHelper.Deserialize(shipRequestOriginal.GetXml()) as AutoGen.OrderSummaryRequest;

            Assert.AreEqual(shipRequestOriginal.GoogleOrderNumbers[0], shipRequestNew.ordernumbers[0]);

            //we need to simulate a response.
            var tempResonse = new AutoGen.OrderSummaryResponse();

            tempResonse.serialnumber = "1234567890";
            var tempSummary = new AutoGen.OrderSummary();

            tempSummary.buyerid           = 12;
            tempSummary.googleordernumber = "1234567890";
            tempResonse.ordersummaries    = new GCheckout.AutoGen.OrderSummary[] { tempSummary };
            var tempXml = EncodeHelper.Utf8BytesToString(EncodeHelper.Serialize(tempResonse));

            var shipResponse = new OrderSummaryResponse(tempXml);

            Assert.AreEqual(1, shipResponse.OrderSummary.Count);
            Assert.AreEqual("1234567890", shipResponse.OrderSummary[0].googleordernumber);
        }
Ejemplo n.º 29
0
        public void SerializeAndDeserialize()
        {
            AutoGen.NewOrderNotification N1 = CreateNewOrderNotification();
            byte[] B   = EncodeHelper.Serialize(N1);
            String Xml = EncodeHelper.Utf8BytesToString(B);

            AutoGen.NewOrderNotification N2 = (AutoGen.NewOrderNotification)
                                              EncodeHelper.Deserialize(Xml, typeof(AutoGen.NewOrderNotification));
            Assert.AreEqual(N1.googleordernumber, N2.googleordernumber);
            Assert.AreEqual(N1.buyerid, N2.buyerid);
            Assert.AreEqual(N1.serialnumber, N2.serialnumber);
            Assert.AreEqual(N1.financialorderstate, N2.financialorderstate);
            Assert.AreEqual(N1.timestamp, N2.timestamp);
            Assert.AreEqual(N1.shoppingcart.items.Length,
                            N2.shoppingcart.items.Length);
            Assert.AreEqual(N1.shoppingcart.items[0].itemname,
                            N2.shoppingcart.items[0].itemname);
            Assert.AreEqual(N1.shoppingcart.items[0].itemdescription,
                            N2.shoppingcart.items[0].itemdescription);
            Assert.AreEqual(N1.shoppingcart.items[0].quantity,
                            N2.shoppingcart.items[0].quantity);
            Assert.AreEqual(N1.shoppingcart.items[0].unitprice.currency,
                            N2.shoppingcart.items[0].unitprice.currency);
            Assert.AreEqual(N1.shoppingcart.items[0].unitprice.Value,
                            N2.shoppingcart.items[0].unitprice.Value);
            Assert.AreEqual(N1.shoppingcart.items[1].itemname,
                            N2.shoppingcart.items[1].itemname);
            Assert.AreEqual(N1.shoppingcart.items[1].itemdescription,
                            N2.shoppingcart.items[1].itemdescription);
            Assert.AreEqual(N1.shoppingcart.items[1].quantity,
                            N2.shoppingcart.items[1].quantity);
            Assert.AreEqual(N1.shoppingcart.items[1].unitprice.currency,
                            N2.shoppingcart.items[1].unitprice.currency);
            Assert.AreEqual(N1.shoppingcart.items[1].unitprice.Value,
                            N2.shoppingcart.items[1].unitprice.Value);
        }
        private void processNewOrderNotification(string xmlData)
        {
            try
            {
                NewOrderNotification newOrderNotification = (NewOrderNotification)EncodeHelper.Deserialize(xmlData, typeof(NewOrderNotification));
                string googleOrderNumber = newOrderNotification.googleordernumber;

                XmlNode  CustomerInfo       = newOrderNotification.shoppingcart.merchantprivatedata.Any[0];
                int      CustomerID         = Convert.ToInt32(CustomerInfo.Attributes["CustomerID"].Value);
                int      CustomerLanguageID = Convert.ToInt32(CustomerInfo.Attributes["CustomerLanguageID"].Value);
                int      CustomerCurrencyID = Convert.ToInt32(CustomerInfo.Attributes["CustomerCurrencyID"].Value);
                Customer customer           = CustomerManager.GetCustomerById(CustomerID);

                NopSolutions.NopCommerce.BusinessLogic.Orders.ShoppingCart Cart = ShoppingCartManager.GetCustomerShoppingCart(customer.CustomerId, ShoppingCartTypeEnum.ShoppingCart);

                if (customer == null)
                {
                    logMessage("Could not load a customer");
                    return;
                }

                NopContext.Current.User = customer;

                if (Cart.Count == 0)
                {
                    logMessage("Cart is empty");
                    return;
                }

                //validate cart
                foreach (NopSolutions.NopCommerce.BusinessLogic.Orders.ShoppingCartItem sci in Cart)
                {
                    bool ok = false;
                    foreach (Item item in newOrderNotification.shoppingcart.items)
                    {
                        if (!String.IsNullOrEmpty(item.merchantitemid))
                        {
                            if ((Convert.ToInt32(item.merchantitemid) == sci.ShoppingCartItemId) && (item.quantity == sci.Quantity))
                            {
                                ok = true;
                                break;
                            }
                        }
                    }

                    if (!ok)
                    {
                        logMessage(string.Format("Shopping Cart item has been changed. {0}. {1}", sci.ShoppingCartItemId, sci.Quantity));
                        return;
                    }
                }


                string[] billingFullname  = newOrderNotification.buyerbillingaddress.contactname.Trim().Split(new char[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries);
                string   billingFirstName = billingFullname[0];
                string   billingLastName  = string.Empty;
                if (billingFullname.Length > 1)
                {
                    billingLastName = billingFullname[1];
                }
                string        billingEmail           = newOrderNotification.buyerbillingaddress.email.Trim();
                string        billingAddress1        = newOrderNotification.buyerbillingaddress.address1.Trim();
                string        billingAddress2        = newOrderNotification.buyerbillingaddress.address2.Trim();
                string        billingPhoneNumber     = newOrderNotification.buyerbillingaddress.phone.Trim();
                string        billingCity            = newOrderNotification.buyerbillingaddress.city.Trim();
                int           billingStateProvinceID = 0;
                StateProvince billingStateProvince   = StateProvinceManager.GetStateProvinceByAbbreviation(newOrderNotification.buyerbillingaddress.region.Trim());
                if (billingStateProvince != null)
                {
                    billingStateProvinceID = billingStateProvince.StateProvinceId;
                }
                string  billingZipPostalCode = newOrderNotification.buyerbillingaddress.postalcode.Trim();
                int     billingCountryID     = 0;
                Country billingCountry       = CountryManager.GetCountryByTwoLetterIsoCode(newOrderNotification.buyerbillingaddress.countrycode.Trim());
                if (billingCountry != null)
                {
                    billingCountryID = billingCountry.CountryId;
                }

                NopSolutions.NopCommerce.BusinessLogic.CustomerManagement.Address BillingAddress = customer.BillingAddresses.FindAddress(
                    billingFirstName, billingLastName, billingPhoneNumber,
                    billingEmail, string.Empty, string.Empty, billingAddress1, billingAddress2, billingCity,
                    billingStateProvinceID, billingZipPostalCode, billingCountryID);

                if (BillingAddress == null)
                {
                    BillingAddress = CustomerManager.InsertAddress(CustomerID, true,
                                                                   billingFirstName, billingLastName, billingPhoneNumber, billingEmail,
                                                                   string.Empty, string.Empty, billingAddress1,
                                                                   billingAddress2, billingCity,
                                                                   billingStateProvinceID, billingZipPostalCode,
                                                                   billingCountryID, DateTime.Now, DateTime.Now);
                }
                customer = CustomerManager.SetDefaultBillingAddress(customer.CustomerId, BillingAddress.AddressId);

                NopSolutions.NopCommerce.BusinessLogic.CustomerManagement.Address ShippingAddress = null;
                customer.LastShippingOption = null;
                bool shoppingCartRequiresShipping = ShippingManager.ShoppingCartRequiresShipping(Cart);
                if (shoppingCartRequiresShipping)
                {
                    string[] shippingFullname  = newOrderNotification.buyershippingaddress.contactname.Trim().Split(new char[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries);
                    string   shippingFirstName = shippingFullname[0];
                    string   shippingLastName  = string.Empty;
                    if (shippingFullname.Length > 1)
                    {
                        shippingLastName = shippingFullname[1];
                    }
                    string        shippingEmail           = newOrderNotification.buyershippingaddress.email.Trim();
                    string        shippingAddress1        = newOrderNotification.buyershippingaddress.address1.Trim();
                    string        shippingAddress2        = newOrderNotification.buyershippingaddress.address2.Trim();
                    string        shippingPhoneNumber     = newOrderNotification.buyershippingaddress.phone.Trim();
                    string        shippingCity            = newOrderNotification.buyershippingaddress.city.Trim();
                    int           shippingStateProvinceID = 0;
                    StateProvince shippingStateProvince   = StateProvinceManager.GetStateProvinceByAbbreviation(newOrderNotification.buyershippingaddress.region.Trim());
                    if (shippingStateProvince != null)
                    {
                        shippingStateProvinceID = shippingStateProvince.StateProvinceId;
                    }
                    int     shippingCountryID     = 0;
                    string  shippingZipPostalCode = newOrderNotification.buyershippingaddress.postalcode.Trim();
                    Country shippingCountry       = CountryManager.GetCountryByTwoLetterIsoCode(newOrderNotification.buyershippingaddress.countrycode.Trim());
                    if (shippingCountry != null)
                    {
                        shippingCountryID = shippingCountry.CountryId;
                    }

                    ShippingAddress = customer.ShippingAddresses.FindAddress(
                        shippingFirstName, shippingLastName, shippingPhoneNumber,
                        shippingEmail, string.Empty, string.Empty,
                        shippingAddress1, shippingAddress2, shippingCity,
                        shippingStateProvinceID, shippingZipPostalCode, shippingCountryID);
                    if (ShippingAddress == null)
                    {
                        ShippingAddress = CustomerManager.InsertAddress(CustomerID, false,
                                                                        shippingFirstName, shippingLastName, shippingPhoneNumber, shippingEmail,
                                                                        string.Empty, string.Empty, shippingAddress1,
                                                                        shippingAddress2, shippingCity, shippingStateProvinceID,
                                                                        shippingZipPostalCode, shippingCountryID,
                                                                        DateTime.Now, DateTime.Now);
                    }

                    customer = CustomerManager.SetDefaultShippingAddress(customer.CustomerId, ShippingAddress.AddressId);

                    string  shippingMethod = string.Empty;
                    decimal shippingCost   = decimal.Zero;
                    if (newOrderNotification.orderadjustment != null &&
                        newOrderNotification.orderadjustment.shipping != null &&
                        newOrderNotification.orderadjustment.shipping.Item != null)
                    {
                        FlatRateShippingAdjustment ShippingMethod = (FlatRateShippingAdjustment)newOrderNotification.orderadjustment.shipping.Item;
                        shippingMethod = ShippingMethod.shippingname;
                        shippingCost   = ShippingMethod.shippingcost.Value;


                        ShippingOption shippingOption = new ShippingOption();
                        shippingOption.Name         = shippingMethod;
                        shippingOption.Rate         = shippingCost;
                        customer.LastShippingOption = shippingOption;
                    }
                }

                //customer.LastCalculatedTax = decimal.Zero;

                PaymentMethod googleCheckoutPaymentMethod = PaymentMethodManager.GetPaymentMethodBySystemKeyword("GoogleCheckout");

                PaymentInfo paymentInfo = new PaymentInfo();
                paymentInfo.PaymentMethodId   = googleCheckoutPaymentMethod.PaymentMethodId;
                paymentInfo.BillingAddress    = BillingAddress;
                paymentInfo.ShippingAddress   = ShippingAddress;
                paymentInfo.CustomerLanguage  = LanguageManager.GetLanguageById(CustomerLanguageID);
                paymentInfo.CustomerCurrency  = CurrencyManager.GetCurrencyById(CustomerCurrencyID);
                paymentInfo.GoogleOrderNumber = googleOrderNumber;
                int    orderID = 0;
                string result  = OrderManager.PlaceOrder(paymentInfo, customer, out orderID);
                if (!String.IsNullOrEmpty(result))
                {
                    logMessage("new-order-notification received. CreateOrder() error: Order Number " + orderID + ". " + result);
                    return;
                }

                Order order = OrderManager.GetOrderById(orderID);
                logMessage("new-order-notification received and saved: Order Number " + orderID);
            }
            catch (Exception exc)
            {
                logMessage("processNewOrderNotification Exception: " + exc.Message + ": " + exc.StackTrace);
            }
        }