0

我正在通过 Xero API(使用 OAuth2)根据名称从 Xero 获取联系人的详细信息。现在的问题是,我可以获得联系人的详细信息,但某些详细信息始终为空,例如跟踪类别。

我为此联系了 Xero 支持。他们建议通过 GUID 获取联系人。但问题是我需要按名称获取,因为我正在搜索在 Xero 中共享相同名称的联系人。所以可能有多个联系人,如果我按名称获取,它不会给我跟踪类别详细信息。

这是我获取联系人的方式。

List<Contact> contactList = new List<Contact>();
                
var AccountingApi = new AccountingApi();
var response = await AccountingApi.GetContactsAsync(accessToken, xeroTenantId, null,
                                string.Format("FirstName != Null && FirstName.ToLower().Contains(\"{0}\")", "aaron"));

contactList = response._Contacts.ToList();

注:Contact 指Xero.NetStandard.OAuth2.Model.Accounting
AccountingApi 指Xero.NetStandard.OAuth2.Api

通过此代码,我可以获得联系人,但跟踪类别始终为空。如何在不通过 GUID 搜索的情况下获取联系人的所有详细信息。

有人可以在这里帮助我吗?

Xero 联系人:https
://developer.xero.com/documentation/api/contacts 跟踪类别:https ://developer.xero.com/documentation/api/tracking-categories

4

2 回答 2

0

我在文档和 API 规范中看到联系人有SalesTrackingCategoriesPurchasesTrackingCategories但我在通过 UI 或 API 实际设置时遇到了麻烦。

您能否在 Xero UI 上截取该用户跟踪类别的设置,以及有关从 UI 返回的一些其他数据?

嘿 - 在 UI 中设置它们。我只有发票而不是联系人的跟踪设置。谢谢。

那么您是否通过该键单击了嵌套数组?

SalesTrackingCategories可能有一个包含值的嵌套SalesTrackingCategory数组?

我再次检查了另一个 SDK,它序列化了正确的数据,所以我的直觉是这可能是 SDK 在将其解析为数组时存在逻辑问题的问题。

成功序列化联系人跟踪

最好直接在 repo 中创建一个带有此问题链接的问题 - https://github.com/XeroAPI/Xero-NetStandard/issues,我将标记我的管理该问题的同事。

供参考 - 端点调用 JSON 需要像这样构造才能成功更新这些。

// POST https://api.xero.com/api.xro/2.0/Contacts/<contact-uuid>
{
  "SalesTrackingCategories": [{
    "TrackingCategoryName": "Contact Tracking",
    "TrackingOptionName": "Cool customer"
  }]
}
于 2021-02-05T17:47:41.593 回答
0

在与 Xero 支持团队讨论后,我发现他们在您这样搜索时故意包装数据,所以如果我想根据通用名称或类似名称获取联系人的所有详细信息,我将不得不传递页码。在我的情况下页面 = 1。(假设一页中不会有超过一百条同名的记录,因为它会检查与 where 条件匹配的前 100 条记录)。如果您有超过 100 个与您传递的名称类似的联系人,则 page=2 将返回第二组 100 个联系人。

参考: https ://central.xero.com/s/case?caseId=5003m0000174dtJAAQ

于 2021-02-22T07:03:39.827 回答