FROM CACHE - de_header
Gelöst

Shopify mit Shopify verbinden

jhe
Shopify Partner
6 0 1

Hallo zusammen, 

 

ich suche momentan eine Möglichkeit, Produkte & Inventar von einem Shopify Shop in einen anderen Shopify-Shop zu importieren - und auch den Bestand zu synchronisieren. 

 

Kennt jemand ein Addon, das das schon kann? 

1 AKZEPTIERTE LÖSUNG
Gabe
Shopify Staff
15895 2517 3759

Erfolg.

Hey @jhe 

 

Verstehe und viele verwenden dafür einen "Zwischenspeicher" wie Google Drive wo man die Produkte in den versch. Tabellen gespeichert hat, sie vom Lieferanten aktualisiert und von dem aus man zwischen den Shops die Produktstämme synchronisiert. Über das API geht das ganze auch, sit aber ein ziemlich großer Job.

 

Ich habe jetzt einen groben Flowchart oder "back of the napkin" Mockup skizziert zu dem was ich meine und wie das aussehen könnte und womit man viel Geld sparen würde und man eine teure API Programmierung vermeiden:

 

328699106_732875338473123_6894977894754857305_n.jpg

 

Die Shops über dem API verbinden

Hierfür müsste man eine benutzerdefinierte App bauen (siehe wie hier). 

 

Ganz grob gesagt, man authentifiziert sich beim Shopify API mit API-Schlüsseln und secret keys von jedem Shopify-Shop. Dann stellt man eine Verbindung mit dem Hauptshop (A) her und erhält eine Liste aller Produkte, die man synchronisieren möchte indem man eine GET-Anforderung an dan Shopify-Produkte-Endpunkt-API sendet. Man stellt dann eine Verbindung zu jedem N-Shop her und aktualisiert die Produkte indem man eine PUT-Anforderung an den Shopify-Produkte-Endpunkt-API sendet.

 

Um Bestandsdaten aus N zu beziehen, kann man eine Anfrage an das Shopify-Endpunkt-API senden, um die Bestandsdaten für jedes Produkt in jedem N-Shop abzurufen. Um Produktdaten aus A zu beziehen, sendet man eine Anfrage an das Shopify-Endpunkt-API, um Produktdaten für jedes Produkt im Hauptshop A abzurufen. Mit der benutzerdefinierten App die man baut kann man das Shopify-API programmieren, um diesen Vorgang zu automatisieren. Hier wäre es aber sucper wichtig dass alle Produktdaten und Bestandsdaten in allen Shops korrekt synchronisiert werden, um sicherzustellen, dass die Kunden immer korrekte Informationen erhalten. Dann muss man auf die API-Rate Limits aufpassen.

 

Aus unserer Entwickler Doku habe ich jetzt einen Beispielcode und Logik zusammengestellt, wie das aussehen könnte aber das ist ohne Gewähr und dient euch in die richtige Richtung zu verweisen. Ihr müsst das selber testen und mit einem API Experten bauen. Hier ist ein Beispielcode, um eine Vorstellung davon zu geben, wie der Prozess aussehen könnte. Hier die grobe Logik:

 

import requests
import json

# API-Schlüssel und geheime Schlüssel für jeden Shop
main_shop_api_key = "your_api_key"
main_shop_secret_key = "your_secret_key"
n_shop_api_key = "your_api_key"
n_shop_secret_key = "your_secret_key"

# Authentifizierung und Anfragen an Shopify API durchführen
def shopify_request(shop_url, api_key, secret_key, api_endpoint, method, data=None):
    url = f"https://{api_key}:{secret_key}@{shop_url}/admin/api/2021-09/{api_endpoint}.json"
    if method == "GET":
        response = requests.get(url)
    elif method == "PUT":
        headers = {'Content-type': 'application/json'}
        response = requests.put(url, headers=headers, data=json.dumps(data))
    if response.status_code == 200:
        return json.loads(response.text)
    else:
        return None

# Produkte von Hauptshop (A) abrufen
main_shop_url = "main-shop.myshopify.com"
products = shopify_request(main_shop_url, main_shop_api_key, main_shop_secret_key, "products", "GET")

# Produkte in jedem N-Shop aktualisieren
n_shop_urls = ["n-shop1.myshopify.com", "n-shop2.myshopify.com", "n-shop3.myshopify.com"]
for url in n_shop_urls:
    for product in products:
        # Bestandsdaten von jedem N-Shop abrufen
        inventory = shopify_request(url, n_shop_api_key, n_shop_secret_key, f"products/{product['id']}/inventory_levels", "GET")
        
        # Produktinformationen von Hauptshop (A) abrufen
        main_product = shopify_request(main_shop_url, main_shop_api_key, main_shop_secret_key, f"products/{product['id']}", "GET")
        
        # Produkt in N-Shop aktualisieren
        shopify_request(url, n_shop_api_key, n_shop_secret_key, f"products/{product['id']}", "PUT", main_product)

 

Hier werden die Produkte von Hauptshop (A) abgeruft und die Produkte in jedem N-Shop damit aktualisiert.

 

Hoffe das hilft! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Lösung in ursprünglichem Beitrag anzeigen

5 ANTWORTEN 5

Gabe
Shopify Staff
15895 2517 3759

Hey @jhe 

 

Danke für die Frage und wenn csv import/export nicht passt dann kann eine App wie Matrixify das machen. Die verlinkte Anleitungen zeigen wie man es machen kann. Möchtest du zwei Shops mit selben Produkten managen?

 

VG,

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

jhe
Shopify Partner
6 0 1

Hmmm - ich stehe vor folgender Aufgabe: 

Es gibt einen "Haupt"shop (A), mehrere Shops (N) mit subset der Produkte des Hauptshops. 

 

A soll Bestandsdaten aus N beziehen.

N sollen Produktdaten aus A beziehen. 

 

Daher dachte ich an eine Brücke über API, nicht an FTP. Aber wahrscheinlich ist das zu speziell, oder? 

Gabe
Shopify Staff
15895 2517 3759

Erfolg.

Hey @jhe 

 

Verstehe und viele verwenden dafür einen "Zwischenspeicher" wie Google Drive wo man die Produkte in den versch. Tabellen gespeichert hat, sie vom Lieferanten aktualisiert und von dem aus man zwischen den Shops die Produktstämme synchronisiert. Über das API geht das ganze auch, sit aber ein ziemlich großer Job.

 

Ich habe jetzt einen groben Flowchart oder "back of the napkin" Mockup skizziert zu dem was ich meine und wie das aussehen könnte und womit man viel Geld sparen würde und man eine teure API Programmierung vermeiden:

 

328699106_732875338473123_6894977894754857305_n.jpg

 

Die Shops über dem API verbinden

Hierfür müsste man eine benutzerdefinierte App bauen (siehe wie hier). 

 

Ganz grob gesagt, man authentifiziert sich beim Shopify API mit API-Schlüsseln und secret keys von jedem Shopify-Shop. Dann stellt man eine Verbindung mit dem Hauptshop (A) her und erhält eine Liste aller Produkte, die man synchronisieren möchte indem man eine GET-Anforderung an dan Shopify-Produkte-Endpunkt-API sendet. Man stellt dann eine Verbindung zu jedem N-Shop her und aktualisiert die Produkte indem man eine PUT-Anforderung an den Shopify-Produkte-Endpunkt-API sendet.

 

Um Bestandsdaten aus N zu beziehen, kann man eine Anfrage an das Shopify-Endpunkt-API senden, um die Bestandsdaten für jedes Produkt in jedem N-Shop abzurufen. Um Produktdaten aus A zu beziehen, sendet man eine Anfrage an das Shopify-Endpunkt-API, um Produktdaten für jedes Produkt im Hauptshop A abzurufen. Mit der benutzerdefinierten App die man baut kann man das Shopify-API programmieren, um diesen Vorgang zu automatisieren. Hier wäre es aber sucper wichtig dass alle Produktdaten und Bestandsdaten in allen Shops korrekt synchronisiert werden, um sicherzustellen, dass die Kunden immer korrekte Informationen erhalten. Dann muss man auf die API-Rate Limits aufpassen.

 

Aus unserer Entwickler Doku habe ich jetzt einen Beispielcode und Logik zusammengestellt, wie das aussehen könnte aber das ist ohne Gewähr und dient euch in die richtige Richtung zu verweisen. Ihr müsst das selber testen und mit einem API Experten bauen. Hier ist ein Beispielcode, um eine Vorstellung davon zu geben, wie der Prozess aussehen könnte. Hier die grobe Logik:

 

import requests
import json

# API-Schlüssel und geheime Schlüssel für jeden Shop
main_shop_api_key = "your_api_key"
main_shop_secret_key = "your_secret_key"
n_shop_api_key = "your_api_key"
n_shop_secret_key = "your_secret_key"

# Authentifizierung und Anfragen an Shopify API durchführen
def shopify_request(shop_url, api_key, secret_key, api_endpoint, method, data=None):
    url = f"https://{api_key}:{secret_key}@{shop_url}/admin/api/2021-09/{api_endpoint}.json"
    if method == "GET":
        response = requests.get(url)
    elif method == "PUT":
        headers = {'Content-type': 'application/json'}
        response = requests.put(url, headers=headers, data=json.dumps(data))
    if response.status_code == 200:
        return json.loads(response.text)
    else:
        return None

# Produkte von Hauptshop (A) abrufen
main_shop_url = "main-shop.myshopify.com"
products = shopify_request(main_shop_url, main_shop_api_key, main_shop_secret_key, "products", "GET")

# Produkte in jedem N-Shop aktualisieren
n_shop_urls = ["n-shop1.myshopify.com", "n-shop2.myshopify.com", "n-shop3.myshopify.com"]
for url in n_shop_urls:
    for product in products:
        # Bestandsdaten von jedem N-Shop abrufen
        inventory = shopify_request(url, n_shop_api_key, n_shop_secret_key, f"products/{product['id']}/inventory_levels", "GET")
        
        # Produktinformationen von Hauptshop (A) abrufen
        main_product = shopify_request(main_shop_url, main_shop_api_key, main_shop_secret_key, f"products/{product['id']}", "GET")
        
        # Produkt in N-Shop aktualisieren
        shopify_request(url, n_shop_api_key, n_shop_secret_key, f"products/{product['id']}", "PUT", main_product)

 

Hier werden die Produkte von Hauptshop (A) abgeruft und die Produkte in jedem N-Shop damit aktualisiert.

 

Hoffe das hilft! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

jhe
Shopify Partner
6 0 1

Wow, danke dir @Gabe . 

Datenaustausch per GDrive/FTP - im Grunde so wie du es beschrieben hast - hatte ich auch auf dem imaginären Schirm, werde ich dann jetzt für v1 mal ausprobieren. Danke dir für die Bestätigung meiner Gedanken 🙂 

 

Kudos für diese extrem ausführliche Antwort, Riesenkudo geht an die Serviette!

Hab einen großartigen Tag. 

Gabe
Shopify Staff
15895 2517 3759

@jhe 

 

Ja, Matrixify bietet FTP über den Google Drive als Middleware an so weit ich weiss. Mit Shopify direkt über FTP verbinden ist nicht möglich da Shopify als SaaS Plattform kein FTP erlaubt aufgrund Sicherheitsgründen und der inhärenten Schwachstellen und potentiellen Hintertüren mit der FTP Schnittstelle. Somit kann man mit Shopify nur über API eine Schnittstelle derzeit erreichen.

 

Halte uns auf dem Laufenden wie ihr vorankommt! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog