Korrekte erweiterte Preise via API auslesen?

Aktuell neue Baustelle - mittels API bestimmte Produkte von Shop A nach Shop B zu übertragen. So weit, so gut - bis ich auf die erweiterten Preise gestolpert bin. Denn die werden wohl nicht korrekt ausgelesen.

Also ein Testprodukt ausgesucht, welches erweiterte Preise hat. Hier wurden 2 Felder angelegt mit 2 Kundengruppen bzw. Regeln. Zudem haben die Preise Staffelpreise. Das Ganze sieht dann etwa so aus:

Versuch Nummer 1

Der erste Versuch um alle Produktdaten auszulesen erfolgte über die Store API. Laut Doku also

/store-api/product/{productId}

Fast alle Informationen werden ausgelesen. Jedoch die erweiterte Preise werden nur zum Teil angezeigt. Hier kommen zwar unter „calculatedPrices“ Daten, aber unvollständig. Ok, so wird das nix.

Versuch Nummer 2

Jetzt versuche die Daten über Admin API auszulesen. Also mein Testscript umgebaut und versuch gestartet. Laut Doku also

/api/product/{productId}

Jedoch hier kommt leider gar nichts. Da wo die Preise stehen sollten (laut Doku) kommt das zurück:

[prices] => Array
                (
                )

Vielleicht habe ich etwas übersehen, aber wie bekomme ich die kompletten erweiterten Preise mit Angabe der Regeln (ruleId) und die Staffeln? Über die normalen Produktinformationen jedenfalls nicht.

Kann ja auch nicht. Sonst könnte jeder deine Preise ansehen.

Du musst mit den entsprechenden Rechten „eingeloggt“ sein / Token mitsenden, um die Werte zu erhalten.

An alle Werte kommst du mit der Admin-API oder eben per Store-API an die freigegebenen.

Nun ja, aber die Stammpreise werden auch angezeigt.

Ähm, verstehe ich jetzt was was du meinst. Ich baue aktuell an einer Schnittstelle die bereits mit Token etc. läuft. Daran kann es nicht liegen :slight_smile:

Kundengruppe Shopkunden hört sich für mich nach einer geschlossenen Gruppe an und nicht nach Gästen.

Mehr Denkanstöße kann ich dir nicht geben, ohne selbst alles nachzubauen.

Ja verständlich.

Nun, mein 2. Versuch basiert hierauf:

Aber wie im Eingangspost schon erwähnt, hier ist das Objekt „prices“ komplett lerr - sollte laut Doku aber gar nicht sein.

Wenn alle Stricke reißen, muss ich direkt in die DB um an die Werte zu kommen. Mich hat es nur gewundert, dass diese Infos hier komplett fehlen.

Die haben eine eigene UUID. Du musst entsprechend diese nutzen oder über die Suche in dem Endpoint.

Einfach im Admin die XHR Requests ansehen, dann siehst du wie die Erweiterten Preise abgefragt werden.

Ich baue mal um und teste :slight_smile:

Oh Gott, dass ist wirklich sehr umständlich.

Mit „/api/product-price/“ oder auch „/api/search/product-price/“ kann ich nur auslesen, wenn ich auch die UUIDs zu den Preisen kenne. Diese Info kommt aber bei den Stammdaten mit rüber.

Bei „/api/search/product-price/“ müsste man die „product_id“ übergeben können, damit dann alle Preise angezeigt werden.

import requests

def get_product_prices(base_url, product_id, api_key):
url = f"{base_url}/api/search/product-price/"
headers = {„Authorization“: f"Bearer {api_key}", „Content-Type“: „application/json“}
payload = {„product_id“: product_id}

response = requests.post(url, json=payload, headers=headers)

if response.status_code == 200:
return response.json()
else:
return {„error“: f"Request failed with status code {response.status_code}", „details“: response.text}

Beispielaufruf

base_url = „https://www.dein-shop.de“ # Ersetze mit der tatsächlichen Basis-URL
test_product_id = „123456“ # Ersetze mit einer echten Produkt-ID
api_key = „your_api_key_here“ # Ersetze mit deinem echten API-Schlüssel

prices = get_product_prices(base_url, test_product_id, api_key)
print(prices)

sieht es bei Dir so aus ?

Es bringt keinem etwas, wenn wir alle anfangen ChatGPT oder andere Antworten hier im Forum zu posten.

Dennoch danke, für deine Mühe.

1 „Gefällt mir“

Ich hab es heraus gefunden. Man muss die jeweilige productId als Filter übergeben:

      "filter": [
        {
          "type": "multi",
          "operator": "and",
          "queries": [
            {
            "type": "equals",
            "field": "productId",
            "value": "01927060cd5470c08653ef2fc233c540"
            }
          ]
        }
      ]

Dann werden alle erweiterten Preise inkl. der ruleId angezeigt :slight_smile:

1 „Gefällt mir“