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); }
/// <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); }
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(); }
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); }
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); } }
/// <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); }
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); }
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); }
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); }
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); } }