2017-03-15 7 views
1

Ich verwende Google Content Shopping API, alles läuft gut mit diesem code.PHP - Content Shopping Api - Artikel nicht gefunden

Aber wenn ich versuche, das Produkt von Merchant Center durch folgende Methode zu löschen, löschte das Produkt erfolgreich aus der Liste, aber immer noch Fehler "Artikel nicht gefunden" zurückgegeben.

Dies ist der Code:

public function deleteProduct($offerId) { 
    $productId = $this->buildProductId($offerId); 
    // The response for a successful delete is empty 
    $this->service->products->delete($this->merchantId, $productId); 
} 

Und das ist der Fehler, den es zurückkehrt.

Google_Service_Exception 
{ 
"error": { 
"errors": [ 
{ 
"domain": "global", 
"reason": "notFound", 
"message": "item not found" 
} 
], 
"code": 404, 
"message": "item not found" 
} 
} 
+0

Ich habe viel nach diesem gesucht, auch wenn es nichts als häufige Fehler in Google-Dokumentation gibt. – kishor10d

Antwort

1

Nun, ich möchte zwei Szenarien in meinem Projekt behandeln.

1) Wenn das Produkt im Google Merchant Center live ist, dann fordern Sie an, es zu löschen, andernfalls nicht.

2) Wenn das Produkt bereits im Google Merchant Center aktiv ist, versuchen Sie nicht, es erneut hochzuladen.

Content Shopping API, die keine Überprüfung des Produkts hat, ist bereits vorhanden oder nicht. Sie werfen die Ausnahme direkt.

Antwort für Szenario 1:

Eigentlich bin ich mit Yii2 Rahmen, der Pjax in Gridview verwendet. Wenn ich auf eine Schaltfläche klicke, rufe ich zuerst Pjax an und leite dann zur URL um. Daher versucht es, das gleiche Produkt wieder zu löschen. Und daher die Ausnahme.

Antwort für Szenario 2:

Sie können das gleiche Produkt wieder auf das Google Merchant Center hochladen. Wenn das Produkt bereits vorhanden ist, werden alle Werte für diese productId (itemId oder offerId) aktualisiert. Ich denke nicht, dass es gut für mich ist. Daher behalte ich den Status von hochgeladenen Produkten in meiner Datenbank. Und wenn das gleiche Produkt kam, setze ich einfach die Flagge "hochgeladen" und lade das Produkt nicht wirklich hoch.