PHP Laravel Sage One API говорит, что строки счета-фактуры требуются, когда они есть, а не пустые
В настоящее время я интегрирую приложение с Sage One API, и у меня возникла проблема. API говорит, что строки счета-фактуры не могут быть пустыми, но данные есть. Что я делаю не так?
Вот мой метод получения позиций:
$lineItems = [];
foreach ($invoiceItems as $invoiceItem){
$lineItems[] =
[
"SelectionId" => "35175771",
"TaxTypeId" => "6194291",
"Description" => $invoiceItem->name,
"Quantity" => $invoiceItem->duration,
"UnitPriceExclusive" => $invoiceItem->total_excl_vat
];
}
foreach ($invoiceOtherItems as $invoiceOtherItem){
$lineItems[] =
[
"SelectionId" => "35175771",
"TaxTypeId" => "6194291",
"Description" => $invoiceOtherItem->otherItem->name,
"Quantity" => $invoiceOtherItem->quantity,
"UnitPriceExclusive" => $invoiceOtherItem->total_excl_vat
];
}
//dd($lineItems)
И вот часть данных отправки в API, где я отправляю элементы счета (здесь удалено большинство элементов для краткости):
$invoice = [
"Date" => Carbon::now()->toDateString(),
"Lines" => $lineItems,
"DueDate" => "2021-08-29"
];
Выполнение дампа и смерти, где я прокомментировал, dd возвращает все массивы, но API сообщает мне, что требуются строки. Я что-то не так делаю? Код мне кажется правильным, и я не могу найти ничего, что могло бы помочь в этом вопросе.
1 ответ
Для всех, кто может столкнуться с этой проблемой, есть решение:
В своем ответе определите свои заголовки следующим образом:
'headers' => ['Content-Type' => 'application/json', 'Accept' => 'application/json']
И не используйте
form_params
, но используйте вместо этого:
'body' => json_encode($invoice)