public void PlaceOrder(Order order) { if (catalog.HasInventory(order.Product.Id, order.Quantity)) { try { catalog.Remove(order.Product.Id, order.Quantity); order.Filled = true; } catch (InvalidOperationException) { // LOG? } } }
public void SubmitOrder(Order order, Action<string> purchaseUrlCallback) { try { SubmitOrderCore(order, purchaseUrlCallback); } catch { purchaseUrlCallback(null); } }
private void SubmitOrderCore(Order order, Action<string> purchaseUrlCallback) { WebClient webClient = new WebClient(); webClient.DownloadStringCompleted += delegate(object sender, DownloadStringCompletedEventArgs e) { if ((e.Cancelled == false) && (e.Error == null)) { string xml = e.Result.Replace(@"xmlns=""http://webservices.amazon.com/AWSECommerceService/2005-03-23""", String.Empty); if (String.IsNullOrEmpty(xml) == false) { XDocument doc = XDocument.Parse(xml); XElement purchaseUrlElement = doc.Descendants("PurchaseURL").Single(); if (purchaseUrlElement != null) { string purchaseUrl = purchaseUrlElement.Value; purchaseUrlCallback(purchaseUrl); return; } } } purchaseUrlCallback(null); }; StringBuilder sb = new StringBuilder(); int itemNumber = 1; foreach (OrderItem item in order.Items) { sb.AppendFormat(CultureInfo.InvariantCulture, "&Item.{0}.ASIN={1}&Item.{0}.Quantity={2}", itemNumber, item.Product.ASIN, item.Quantity); itemNumber++; } Uri requestUri = new Uri(String.Format(CartUriFormat, SubscriptionID, sb.ToString())); webClient.DownloadStringAsync(requestUri); }
private void OnCheckoutCompleted(string purchaseUrl) { if (String.IsNullOrEmpty(purchaseUrl) == false) { _checkoutUrl = purchaseUrl; RaisePropertyChanged("CheckoutUrl"); if (OrderCheckedOut != null) { OrderCheckedOut(this, EventArgs.Empty); } _order = null; _checkoutUrl = null; RaisePropertyChanged("Order", "CheckoutUrl"); } IsCheckingOut = false; }