如何使用 C# 在 XERO API 中通过 ContactId 更新 AccountNumber 值

How to update AccountNumber value by ContactId in XERO API using C#

我正在尝试实现与 Xero 的更新联系 api:我正在尝试更新 AccountNumber 值为空。

这是更新方法的代码。我正在使用 ContactId 和 AccountNumber 传递值。

        var xContact = new XeroContact
        {
            AccountNumber = null,
            ContactId = CustomerGUID
        };
        var request = new XeroContactRequest { AuthToken = _authHelper.AccessToken, Search = "", TenantId = _authHelper.TenantId, CustomerGUID = CustomerGUID, Contact = xContact };
        var xeroCustomerResult = _xeroContactBusiness.UpdateContact(request);

更新函数:

public IResult<XeroContact> UpdateContact(XeroContactRequest data)
        {
            var result = new Result<XeroContact>();
            try
            {
                if (data == null || string.IsNullOrEmpty(data.AuthToken) || string.IsNullOrEmpty(data.TenantId)) throw new ArgumentNullException("data is required");

                var client = new RestClient(BaseUrl);
                var method = string.Format("/{0}/{1}", _apiMethod, data.CustomerGUID);
                var request = new RestRequest(method, Method.POST);

                request.AddHeader("Authorization", string.Format("Bearer {0}", data.AuthToken));
                request.AddHeader("Accept", "application/json");
                request.AddHeader("Xero-tenant-id", data.TenantId);

                var postData = JsonConvert.SerializeObject(data.Contact);
                request.AddJsonBody(postData);                                          
                var response = client.Execute(request);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(ParseError(response.Content));
                }
            }
            catch (Exception ex)
            {
                result.HasData = false;
                result.Data = null;
                result.Error = ex;
            }       
            return result;
        }

你能帮我理解我做错了什么吗?如何通过 ContactId 更新 AccountNumber。谢谢!

我已经通过以下方式解决了这个问题,只需要发送 ContactId 和那些需要更新的参数。这里 "AccountNumber" 字段需要更新。谢谢!

        var body = new
        {
            ContactId = data.CustomerGUID,
            AccountNumber=""
        };

        var postData = JsonConvert.SerializeObject(body);
        request.AddJsonBody(postData);