+-
Ebay API C#取消不带AddDispute的订单
因此,通过查看下面的链接,我发现您可以通过与API发生争议来取消订单.

Cancel eBay order via API

但是我不希望每次取消都引起争议.我想做的是能够以编程方式取消订单而不会引起争议.由于它在GUI中可用,因此似乎应该可行.在GUI中,如果您查找订单并单击订单屏幕的下拉菜单,则会显示一个取消按钮.然后在下一个屏幕上,询问取消原因,并提供两个选项.我似乎在任何地方都找不到此文档.我使用API​​取消订单所能找到的所有内容都会引发争议.有谁知道如何用这种方法取消订单?

enter image description here

enter image description here

最佳答案
我能够弄清楚这可以通过使用Post-Order API来完成.

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

查看“取消”部分下的链接.

用KEVINUK的代码示例更新答案:

这是我的工作示例.我将其用作布尔值,以让我知道取消请求是否成功,以便我可以知道从那里去哪里.

    /// <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;
    }    
点击查看更多相关文章

转载注明原文:Ebay API C#取消不带AddDispute的订单 - 乐贴网