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)
Другие вопросы по тегам