static void SubmitAck(AckOrders order) { RestClient restClient = new RestClient(live_url_base); IRestRequest restRequest = new RestRequest(ack_order_resource, Method.POST); //restRequest.AddHeader("Accept", content_json); //adding token on the client side restRequest.AddHeader("x-amz-access-token", "your_access_token"); //add the body string json = JsonConvert.SerializeObject(order, Formatting.Indented); restRequest.AddParameter("orderAcknowledgements", json, content_json, ParameterType.RequestBody); restRequest = signatureHelper.SignRequest(restRequest, restClient, content_json); try { var result = restClient.Execute(restRequest); System.IO.File.WriteAllText("C:\\Amazon1P\\ack\\" + Guid.NewGuid() + ".txt", result.Content);//keep the orignal message if (result.StatusCode == System.Net.HttpStatusCode.OK) { var payload = JsonConvert.DeserializeObject <POSTResponse>(result.Content); } else if (result.StatusCode == System.Net.HttpStatusCode.Accepted) { var payload = JsonConvert.DeserializeObject <POSTResponse>(result.Content); } else if (result.StatusCode == System.Net.HttpStatusCode.Forbidden) { //token expired - get a new one string new_toke = signatureHelper.GetToken(); //AppCred.Default.AccessToken = new_toke; //AppCred.Default.Save(); //saved new token //run again SubmitAck(order); } else { //problem //Status: 400 - Request has missing or invalid parameters and cannot be parsed. //Status: 403 - 403 can be caused for reasons like Access Denied, Unauthorized, Expired Token, Invalid Signature or Resource Not Found. //Status: 404 - The resource specified does not exist. //Status: 415 - The entity of the request is in a format not supported by the requested resource. //Status: 429 - The frequency of requests was greater than allowed. //Status: 500 - Encountered an unexpected condition which prevented the server from fulfilling the request. //Status: 503 - Temporary overloading or maintenance of the server. } } catch (Exception e) { //save error } }
static AckOrders BuildAck(string code, string description) { string amazon_po = "get_amazon_po_from_your_db"; var ackRequest = new AckOrders(); var ackList = new List <OrderAcknowledgement>(); var ack = new OrderAcknowledgement(); ack.AcknowledgementDate = DateTime.Now.ToString("o"); var ackStatus = new AcknowledgementStatus(); ackStatus.Code = code; ackStatus.Description = description; ack.AcknowledgementStatus = ackStatus; ack.PurchaseOrderNumber = amazon_po; ack.SellingParty = new Ack.SellingParty { PartyId = "your_selling_id" }; //SellingParty and ShipFromParty are other models too ack.ShipFromParty = new Ack.ShipFromParty { PartyId = "your_ship_from_id" }; ack.VendorOrderNumber = "your_system_order_number"; var items = new List <ItemAcknowledgements>(); var i = new ItemAcknowledgements(); i.AcknowledgedQuantity = new AcknowledgedQuantity { Amount = 2, UnitOfMeasure = "Each" }; i.BuyerProductIdentifier = "get_item_id_from_amazon_order"; i.ItemSequenceNumber = "1";//amazon order should have this data i.VendorProductIdentifier = "your_seller_sku"; items.Add(i); ack.Items = items; ackList.Add(ack); ackRequest.OrderAcknowledgements = ackList; return(ackRequest); }