API контента Google для покупок: ошибка при создании отправления

Я хочу пометить заказ в Google Покупках как отправленный, но не могу понять, как отформатировать lineItems. Я следую официальным документам для позиций доставки:

https://developers.google.com/shopping-content/v2/reference/v2.1/orders/shiplineitems

И вот мой код:

$client = new Google_Client();
$service = new Google_Service_ShoppingContent($client);

// Get Order and Line Items
$order = $service->orders->get('MERCHANT-ID', 'ORDER-ID', array());
$lineItems = $order->getLineItems();

// Prepare Item Info
foreach($lineItems as $item) {
  $items = array('lineItemId' => $item->getId(),'productId' => $item->getProduct()->getId(), 'quantity' => $item->quantityPending);
}

// Prepare Shipment Info
$shipment = array('shipmentId' => 'xxx', 'carrier' => 'ups', 'trackingId' => '1234567890');

// Prepare PostBody
$postBody = new Google_Service_ShoppingContent_OrdersShipLineItemsRequest();
$postBody->operationId = rand();
$postBody->lineItems = $items;
$postBody->shipmentInfos = $shipment;

// Mark Google Order as Shipped
$service->orders->shiplineitems('MERCHANT-ID', 'ORDER-ID', $postBody, array());

Это приводит к следующей ошибке, но я не смог точно понять, что не так:

Google_Service_Exception: { "error": { "errors": [ { "domain": "global", "reason": "invalid", "message": "Неверное значение для lineItems: {lineItemId=HI2PTRMVLNCZEXP, productId=online:en :US:d3k3245, количество=2}", "locationType": "другое", "location": "" } ], "code": 400, "message": "Неверное значение для lineItems: {lineItemId=HI2PTRMVLNCZEXP, productId =онлайн:en:US:d3k3245, количество=2}" } }

Любые идеи, что я делаю неправильно?


person AJK    schedule 26.07.2019    source источник


Ответы (1)


API ожидает массив класса Google_Service_ShoppingContent_OrderShipmentLineItemShipment.

$lineItemShipments = array();
$lineItemShipment = new Google_Service_ShoppingContent_OrderShipmentLineItemShipment();
$lineItemShipment->setLineItemId($item->getId());
$lineItemShipment->setQuantity($item->quantityPending);
$lineItemShipments[] = $lineItemShipment;
$postBody->setLineItems($lineItemShipments);
person James Martin    schedule 12.09.2019