You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用calcinai/xero-php获取带LineItems的发票时遇请求问题

解决Xero API批量获取发票LineItems为空的问题

核心误解:summaryOnly参数用反了

你搞混了summaryOnly的作用——这个参数设置为True时,Xero API只会返回发票的摘要信息,故意不返回LineItems,所以加它肯定拿不到明细。要批量获取带LineItems的发票,应该用include=LineItems参数,这才是告诉API要返回行项目的正确参数。

正确的请求构建方式(基于calcinai/xero-php)

在批量请求发票时,同时指定日期范围和include参数,一次请求就能拿到带LineItems的季度发票,避免逐个请求触发限流:

$invoiceService = $xero->load('Accounting\\Invoice');

// 设置日期范围(格式必须是YYYY-MM-DD)
$params = [
    'DateFrom' => '2024-01-01',
    'DateTo' => '2024-03-31',
    'include' => 'LineItems' // 关键参数:要求返回行项目
];

// 执行批量请求
$invoices = $invoiceService->find($params);

// 遍历发票并获取LineItems
foreach ($invoices as $invoice) {
    $lineItems = $invoice->getLineItems();
    // 处理分组汇总逻辑
}

解决日期查询的请求错误

如果加日期范围时触发请求错误,检查两个点:

  • 日期格式必须严格遵循YYYY-MM-DD,不能用其他格式(比如MM/DD/YYYY)
  • 参数名要和Xero API要求一致:DateFrom和DateTo(首字母大写,注意拼写)

确认数据是否正确返回

如果调用getLineItems()还是空,先打印请求返回的原始数据,确认LineItems字段是否存在:

print_r($invoice->toString()); // 查看发票的原始JSON结构

如果原始数据里没有LineItems,说明请求参数还是有问题;如果有,但getLineItems()拿不到,检查calcinai/xero-php的版本,或者手动从原始数据中提取:

$rawData = $invoice->getData();
$lineItems = $rawData['LineItems'];

内容的提问来源于stack exchange,提问作者dxj197i6

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:38:15