2017-01-04 2 views
3

Итак, посмотрев ссылку ниже, я вижу, что вы можете отменить заказ, открыв спор с API.Ebay API C# Отменить заказ без AddDispute

Cancel eBay order via API

Но я не ищу, чтобы открыть спор для каждого отмены. То, что я хотел бы сделать, это возможность программно отменить заказ, не открывая спор. Казалось бы, это должно быть возможно, поскольку оно доступно в графическом интерфейсе. В графическом интерфейсе, если вы посмотрите свои заказы и нажмите на раскрывающийся список заказов, вы получите кнопку отмены. Затем на следующем экране он спрашивает причину отмены и дает вам два варианта. Кажется, я нигде не могу найти документацию. Все, что я могу найти для отмены заказа с API, приводит к способу открытия спора. Кто-нибудь знает, как отменить заказ с помощью этого метода? Заранее спасибо.

enter image description here

enter image description here

+0

Я нашел другое сообщение в другом месте с кем-то, объясняющим ту же проблему, но все же не разрешением в этой теме. https://forums.developer.ebay.com/questions/11988/how-to-cancel-an-order-using-api-without-adding-a.html Просто подумал, что буду делиться тем, кто может помочь с этим вопросом. – Roro

+0

Я до сих пор не смог найти решение этой проблемы. Любая помощь будет принята с благодарностью. – Roro

ответ

2

мне удалось выяснить, это может быть достигнуто с помощью API после заказа.

https://developer.ebay.com/Devzone/post-order/index.html

Посмотрите на ссылки в разделе аннулирования.

ОБНОВЛЕНИЕ ОТВЕТ С КОДА ДЛЯ KEVINUK:

Это мой рабочий пример. Я использую его как bool, чтобы сообщить мне, был ли запрос аннулирования успешным или нет, чтобы я мог видеть, куда идти оттуда.

/// <summary> 
    /// 
    /// </summary> 
    /// <param name="authToken"></param> 
    /// <param name="ebayFullOrderId"></param> 
    /// <param name="reason">Must be BUYER_ASKED_CANCEL or ADDRESS_ISSUES</param> 
    private static bool Cancellation_SubmitCancelRequest(string authToken, string ebayFullOrderId, string reason) 
    { 
     var status = false; 
     const string url = "https://api.ebay.com/post-order/v2/cancellation"; 

     var cancelOrderRequest = (HttpWebRequest)WebRequest.Create(url); 

     cancelOrderRequest.Headers.Add("Authorization", "TOKEN " + authToken); 
     cancelOrderRequest.ContentType = "application/json"; 
     cancelOrderRequest.Accept = "application/json"; 
     cancelOrderRequest.Headers.Add("X-EBAY-C-MARKETPLACE-ID", "EBAY_US"); 
     cancelOrderRequest.Method = "POST"; 

     //cancelOrderRequest.Headers.Add("legacyOrderId", ebayFullOrderId); 

     using (var streamWriter = new StreamWriter(cancelOrderRequest.GetRequestStream())) 
     { 
      string json = "{\"legacyOrderId\":\"" + ebayFullOrderId + "\",\"cancelReason\":\"" + reason + "\"}"; 

      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Close(); 
     } 

     var response = (HttpWebResponse)cancelOrderRequest.GetResponse(); 

     string result; 
     using (var streamReader = new StreamReader(response.GetResponseStream())) 
     { 
      result = streamReader.ReadToEnd(); 
     } 
     var reader = new JsonTextReader(new StringReader(result)); 

     while (reader.Read()) 
     { 
      if (reader.Value != null) 
      { 
       var pt = reader.Path; 
       var val = reader.Value.ToString(); 

       var isNumeric = !string.IsNullOrEmpty(val) && val.All(Char.IsDigit); 
       if (pt == "cancelId" & isNumeric == true) 
       { 
        status = true; 
        break; 
       } 
      } 
     } 
     return status; 
    }  
+1

Большое спасибо за образец! :) – KevinUK

+0

Что такое authToken? Я использовал UserToken, но получаю неустранимую ошибку. –