Я использую Google Content Shopping API, все идет хорошо с этим код.
Но когда я пытаюсь удалить продукт из Merchant Center следующим способом, продукт удаляется из списка успешно, но все еще возвращает ошибку «элемент не найден».
Это код:
public function deleteProduct($offerId) {
$productId = $this->buildProductId($offerId);
// The response for a successful delete is empty
$this->service->products->delete($this->merchantId, $productId);
}
И это ошибка, которую он возвращает.
Google_Service_Exception
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "item not found"}
],
"code": 404,
"message": "item not found"}
}
Ну, я хочу обработать два сценария в моем проекте.
1) Если продукт доступен в Google Merchant Center, запросите его удаление, в противном случае — нет.
2) Если продукт уже есть в Google Merchant Center, не пытайтесь загрузить его снова.
Content Shopping API, у которого нет такой вещи, чтобы проверить продукт, уже присутствует или нет. Они прямо бросают Исключение.
Ответ для сценария 1:
На самом деле я использую Yii2 Framework, который использует Pjax в GridView. Когда я нажимаю кнопку, она сначала вызывает Pjax, а затем перенаправляет на URL. Следовательно, он пытается удалить тот же продукт снова. И, следовательно, исключение.
Ответ для сценария 2:
Вы можете снова загрузить этот же продукт в Google Merchant Center. Если продукт уже существует, он обновит все значения для этого productId (itemId или offerId). Я не думаю, что это хорошо для меня. Поэтому я сохраняю статус загруженных продуктов в своей базе данных. И если появился тот же продукт, я просто устанавливаю флаг «загружен» и не загружаю продукт.
Других решений пока нет …