Advertisement
  1. Code
  2. Shopify

Erstellen einer einfachen Shopify-App

by
Length:LongLanguages:

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

Shopify ist eine schnell wachsende E-Commerce-Plattform, auf der jeden Monat Tausende neuer Händler hinzukommen.

Das Tolle an der Shopify-Plattform ist, dass Shopify offen gesagt hat, dass es nicht darum geht, jedes Problem für seine Händler zu lösen. Stattdessen haben sie ihre APIs und den App Store erstellt, damit unabhängige Entwickler Funktionen erstellen (und in Rechnung stellen) können, die ihre Händler wünschen.

Das bedeutet, dass Sie Shopify mithilfe von Shopify-Apps erweitern und anpassen können, unabhängig davon, ob Sie über einen eigenen Shopify-Shop verfügen, den Sie verbessern möchten, oder ob Sie eine Shopify-App als Unternehmen erstellen möchten.

Shopify-Apps müssen auch nicht komplex sein. Eine Shopify-App ist nur eine Software, die in die REST-APIs von Shopify integriert wird. Shopify stellt Tools und Software Development Kits (SDKs) zur Verfügung, um das Erstellen einer App zu vereinfachen. Jedes Programm kann jedoch mit ein wenig Integration zu einer Shopify-App werden.

In diesem Artikel werde ich Ihnen zeigen, wie Sie eine einfache Shopify-App erstellen, und ich werde einige Dinge auf "harte Weise" tun, um Sie über die APIs und Shopify-Apps zu unterrichten. Überprüfen Sie am Ende die Ressourcen, um die besten Möglichkeiten zur Reduzierung des erforderlichen Aufwands zu finden.

Private Apps vs. öffentliche Apps

Bevor wir anfangen, müssen wir ein wichtiges Shopify-Konzept lernen. Ihre Wahl wird die gesamte App-Entwicklung, die Sie durchführen, bestimmen.

In Shopify gibt es zwei Arten von Apps:

  1. Öffentliche Apps, die mit mehreren Stores zusammenarbeiten, können im Shopify App Store aufgelistet werden und haben Zugriff auf die meisten APIs.
  2. Private Apps, die mit einem Store zusammenarbeiten, werden nicht im Shopify App Store aufgeführt, können nicht in das Shopify Admin-Bedienfeld eingebettet werden und haben nur eingeschränkten Zugriff auf die APIs.

Der große technische Unterschied zwischen beiden besteht darin, dass öffentliche Apps mit OAuth authentifiziert werden, was mehr Setup und ein verwirrendes "New User Setup" erfordert. Private Apps werden mit zwei Schlüsseln für einen einzelnen Shop authentifiziert, die sich wie ein app-spezifischer Benutzername und ein Passwort verhalten.

Da diese Shop-Authentifizierung eines der ersten Dinge ist, die Sie tun müssen, ist es wichtig, zu Beginn die richtige Entscheidung zu treffen.

Um die Komplexität gering zu halten, werden wir unsere App als private App erstellen. Auf diese Weise müssen wir uns keine Gedanken über die OAuth-Konfiguration und die damit verbundene Komplexität machen.

Erstellen einer App zum Markieren von Wiederholungskunden

In unserer Beispiel-Shopify-App erstellen wir eine Befehlszeilen-App, mit der ein Shop herausfinden kann, wer seine Stammkunden sind. Dies geschieht mithilfe der Kunden-API.

Anschließend werden diese Stammkunden markiert, damit wir sie im Shopify-Administrationsbereich leicht finden können. Befehlszeilenskripte wie dieses eignen sich hervorragend für die Automatisierung und Backoffice-Arbeit. Normalerweise werden sie so geplant, dass sie automatisch ausgeführt werden, sodass keine echte Benutzeroberfläche oder Benutzereingaben vorhanden sind.

Wir werden Ruby auch für diese App verwenden. Während Sie jede Sprache verwenden können, die HTTP-REST-Aufrufe unterstützt, verwendet Shopify selbst Ruby und Ruby on Rails und verwaltet die offiziellen Bibliotheken für Ruby.

1. Registrieren Sie Ihre neue App bei Shopify

Der erste Schritt zum Erstellen einer App besteht darin, sie in Shopify zu registrieren. Da es sich um eine private App handelt, melden wir uns in unserem Shopify-Shop an, gehen zum Abschnitt Apps, klicken auf Private Apps und dann auf Neue private App erstellen.

Setting up the Shopify appSetting up the Shopify appSetting up the Shopify app

Der Name der App wird nur als Referenz verwendet und im Code überhaupt nicht.

Nach der Erstellung erhalten wir einige API-Schlüssel zur Verwendung.

  • API-Schlüssel: Dies ist die Kennung der App und verhält sich wie der Benutzername der API.
  • App-Passwort: Dies ist das geheime Passwort, das unsere App authentifiziert.
  • Geteiltes Geheimnis: Das wird von Shopify verwendet, um einige APIs zu signieren. Wir verwenden es nicht in dieser App.

(Sie können sich für das Shopify-Partnerprogramm anmelden, mit dem Sie öffentliche Apps und kostenlose Entwicklungsgeschäfte erstellen können. Ich kann dies jedem nur empfehlen, auch wenn Sie nur in einen Shopify-Shop integrieren möchten, da Sie so Ihre App außerhalb Ihres Live-Shops testen können.)

Wenn die App registriert ist, können wir mit dem Schreiben von Code beginnen.

2. Einrichten der Ruby Gems

Da es sich um ein Ruby-Projekt handelt, möchten wir zunächst eine Gemfile erstellen, in der alle RubyGems aufgelistet sind, die wir verwenden werden. Zwei wichtige sind shopify_api und dotenv.

Das Juwel shopify_api enthält ActiveResource-Klassen für die Shopify-API. Dies bedeutet, dass Sie sich nicht um das Schreiben des Codes für die HTTP-Anforderungen und -Antworten kümmern müssen. Die Bibliothek führt die API-Aufrufe für Sie aus und gibt Ihnen Ruby-Objekte zurück, mit denen Sie arbeiten können. Shopify bietet auch Nicht-Ruby-Bibliotheken an. Überprüfen Sie die Ressourcen am Ende dieses Artikels auf Ihre Sprache.

Das dotenv-Juwel ist ein wichtiges Juwel, da wir damit eine spezielle Datei (.env) erstellen können, die unsere App-Konfiguration enthält, die beim Ausführen in die App geladen wird. Der Zweck ist, dass wir die App und ihren Code veröffentlichen können, ohne vertrauliche Daten wie unseren API-Schlüssel und unser Passwort einzubeziehen.

Diese .env-Datei definiert mehrere Variablen, die als Teil der Laufzeitumgebung in unsere App exportiert werden (Zugriff in Rubys ENV).

Nachdem die Gems konfiguriert wurden, können sie mit Bundler mit bundle install installiert werden.

3. Befehlszeilenschnittstelle

Wir möchten, dass diese App funktioniert: Ein Benutzer kann das Skript in der Befehlszeile wie bundle exec ruby tag_customers.rb ausführen und markiert automatisch alle Stammkunden in Shopify.

Beginnen wir damit, ein leeres Skript zu erstellen und die benötigten Bibliotheken zu laden.

Beachten Sie, wie wir Dotenv.load sofort aufrufen. Damit wird die Variable aus unserer .env-Datei exportiert, sodass wir von nun an diese Konfiguration verwenden können.

Wir werden auch eine einfache Klasse erstellen, die die Logik enthält, und diese Klasse am Ende aufrufen, um sie mit Rubys __FILE__ == $PROGRAM_NAME-Funktion auszuführen.

4. Shopify API-Verbindung

Nachdem wir nun alles haben, was zum Ausführen unserer App erforderlich ist, fügen wir der Shopify-API eine Verbindung hinzu. Da alles auf dem Shop basiert, eignet sich das Abrufen der Daten hervorragend als Verbindungstest. Dafür müssen wir einige Dinge tun:

  1. Konfigurieren Sie shopify_api für die Verwendung unseres Shopify-Shops und der Authentifizierung.
  2. Führen Sie den API-Aufruf an Shopify durch.
  3. Überprüfen Sie die Ergebnisse.

Bei der Arbeit mit privaten Apps in shopify_api können wir die Authentifizierung unseres Shops in der Basis-URL mithilfe von HTTP Basic konfigurieren. Die Basis-URL ist wie folgt aufgebaut:

  • https
  • HTTP Basic-Benutzername, der API-Schlüssel unserer App
  • HTTP-Basiskennwort, das das Kennwort unserer App ist
  • SHOP_NAME.myshopify.com-Subdomain, die für jeden Shop einzigartig ist
  • Unterverzeichnis /admin, in dem alle APIs gespeichert sind

Alles zusammen ergibt das folgende Ergebnis:

https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@example.myshopify.com/admin

Um dies in unserem Skript zu konfigurieren, stellen wir diese Basis-URL zusammen und weisen sie der ShopifyAPI::Base-Klasse zu.

Beachten Sie, wie die ENV erneut verwendet wird, um vertrauliche Daten aus dem tatsächlichen Code herauszuhalten. Auf diese Weise können Benutzer auch die SHOP-Variable ändern. Dies ist hilfreich, wenn Sie mehrere Shops haben, in denen Sie dieses Skript ausführen möchten.

Zuletzt fügen wir eine Methode hinzu, um die Details des Shops von Shopify abzurufen.

Mit ShopifyAPI::Shop.current lassen wir shopify_api:

  1. Erstellen Sie eine HTTP-Anforderung für die Shopdaten unter https://123456:abcdef@your-shop-name.myshopify.com/admin/shop.json
  2. Erhalten Sie die Antwort
  3. Wenn das erfolgreich ist, konvertieren Sie die Antwort JSON in ein ShopifyAPI::Shop-Objekt

Wenn die Anforderung erfolgreich war, druckte unser Skript das Endergebnis in der Befehlszeile aus. Wenn es einen Fehler gab, wie in unserer Authentifizierung oder in der API, würde shopify_api eine Ausnahme auslösen und unsere App mit einer Fehlermeldung beenden.

5. Kundenliste

Nachdem die Verbindung funktioniert, können wir eine andere API verwenden, um eine Liste der Kunden eines Shops abzurufen. Noch einmal, shopify_api macht dies einfach:

In diesem Fall möchten wir alle Kunden des Shops, daher verwenden wir ShopifyAPI::Customer.all, das hinter den Kulissen die Kunden-API von Shopify aufruft und eine Reihe von Kundenobjekten zurückgibt.

6. Markieren Sie Wiederholungskunden

Da wir nur Kunden kennzeichnen möchten, die mehr als eine Bestellung aufgegeben haben, müssen wir eine weitere Methode hinzufügen, um Stammkunden zu kennzeichnen.

Wenn Sie sich die Kundenobjekte oder die API-Dokumente von Shopify ansehen, sehen Sie, dass Shopify über ein Feld namens orders_count verfügt, in dem bereits nachverfolgt wird, wie viele Bestellungen ein Kunde aufgegeben hat. Dies sind großartige Neuigkeiten für unsere App, da in E-Commerce-Systemen normalerweise Tausende oder Millionen von Bestellungen eingehen. Wenn wir Kunden mit Nachbestellungen suchen möchten, müssen wir alle diese Bestellungen herunterladen und zählen. Da Shopify über dieses Feld verfügt, können wir uns ganz auf die Kunden konzentrieren.

Wenn Sie mit einer API arbeiten, ist es immer hilfreich, die API-Dokumentation zu lesen und sich die Daten anzusehen, die Sie von ihr zurückerhalten. Manchmal finden Sie einen besseren Weg, um das zu erreichen, was Sie versuchen.

Fügen wir eine Methode hinzu, die den orders_count überprüft und das Tagging ausführt.

Dies ist der Mut der App, also lasst es uns Teil für Teil aufschlüsseln.

Zunächst erstellen wir ein Array von tagged_customers. Wenn Sie zum Ende der Methode springen, können Sie sehen, dass dies zurückgegeben wird. Wir möchten, dass unsere App uns mitteilt, welche Kunden als Stammkunden gekennzeichnet sind, damit wir sie verfolgen und mögliche Probleme später erkennen können (z. B. werden Kunden übersprungen).

Als nächstes rufen wir unsere customers-Methode von früher auf, die die Shopify-API verwendet, um alle Kunden des Shops abzurufen.

Wir beginnen sofort, (each) Kundendatensatz, den wir zurückerhalten, zu wiederholen.

Da shopify_api den Kunden-JSON in ein Ruby-Objekt konvertiert hat, können wir customer.orders_count überprüfen und sehen, wie viele Bestellungen sie haben. Wir befassen uns nur mit Kunden, die mehr als eine Bestellung haben. if Sie also die Bedingung verwenden, können wir Kunden mit einer Bestellung von 0 oder 1 ignorieren.

Für die Stammkunden fügen wir das Tag "repeat" hinzu und rufen dann die save-Methode für das Ruby-Objekt auf. Diese Methode führt über shopify_api den API-Aufruf aus, um den Kundendatensatz zu aktualisieren.

Das Umschreiben und save von Anrufen ist eine weitere Bedingung. Bevor wir uns die Zeit und den API-Aufruf nehmen, um den Kunden mit einem neuen Tag zu aktualisieren, sollten wir prüfen, ob er bereits das "Repeat"-Tag hat. In diesem Fall können wir sie überspringen und zum nächsten Kunden übergehen. Wenn Sie die API-Aufrufe auf nur Datensätze beschränken, die aktualisiert werden müssen, wird unsere App schneller ausgeführt und es wird auch verhindert, dass sie die API-Aufrufbeschränkungen von Shopify erreicht.

Für Stammkunden fügen wir sie schließlich zu dem Array von tagged_customers hinzu, das wir zu Beginn eingerichtet haben, damit die Methode es zurückgibt.

7. Aufrufen der Klasse über die Befehlszeile

Sie müssen nur noch unsere neuen tag_repeat_customers aufrufen, wenn unser Skript ausgeführt wird. Wir werden dort sogar ein wenig Inhalt hinzufügen, um in der Befehlszeile zu drucken, wie viele Stammkunden markiert wurden.

Endgültiger Code

Shopify App abgeschlossen, um Kunden zu markieren

In ungefähr 50 Codezeilen haben wir eine private Shopify-App erstellt, die Kunden mit mehr als einer Bestellung findet und sie mit "Wiederholen" markiert. Wenn wir unseren Teil test_connection zählen, verwenden wir hier drei separate Shopify-APIs:

  • GET Shop
  • GET Kunden
  • PUT Kunde

Zukünftige Verbesserungen

Dieses Skript ist nett und löst ein Problem recht leicht, aber es gibt immer Raum für Verbesserungen.

Eine dramatische Verbesserung wäre, es in eine Web-App zu ändern, die auf einem Server ausgeführt wird. Die Schnittstelle könnte eine Schaltfläche zum Ausführen der Tagging-Methoden haben, oder das Tagging könnte automatisch ausgeführt werden. Die Web-App könnte auch protokollieren, bei welchen Kunden das Tag jedes Mal hinzugefügt wird, und wir könnten frühere Läufe durchsuchen und die Stammkunden des Geschäfts sehen.

Wenn Sie sich für diesen Weg entscheiden, lesen Sie unbedingt das shopify_app-Projekt. Dieses Projekt ist eine Bibliothek, die das gem shopify_api umschließt und zusammen mit OAuth in Ruby on Rails integriert. Dies ist das Grundgerüst, das Sie verwenden möchten, wenn Sie eine Rails-basierte öffentliche Shopify-App erstellen.

Eine weitere Verbesserung der App besteht darin, Kunden anhand ihrer Bestellung zu kennzeichnen. Beispielsweise möchten Sie möglicherweise Kunden markieren, die ein bestimmtes Produkt gekauft haben oder mehr als einen bestimmten Betrag ausgegeben haben.

Diese Verbesserung würde das Abrufen der Bestellungen und Werbebuchungen für jeden Kunden erfordern, was es aufgrund des Umfangs der Datenverarbeitung zu einer komplexeren App macht.

Shopify-Entwicklungsbibliotheken und -Ressourcen

Shopify verwaltet mehrere verschiedene Bibliotheken für seine API, und es gibt mehrere inoffizielle Bibliotheken von Drittanbietern, die Sie ebenfalls verwenden können. Hier ist eine kleine Sammlung davon:

Jetzt sollten Sie besser verstehen, wie Sie eine Shopify-App erstellen können. Sie haben gesehen, wie Sie mithilfe von shopify_api und der Authentifizierung für private Apps von Ruby aus eine Verbindung zu Shopify herstellen. Sie haben auch gelernt, wie Sie die Verbindung mit einem API-Aufruf testen sowie eine Technik, um Ihre API-Nutzung einzuschränken. Schließlich haben Sie gelernt, wie einfach es ist, die Shopify-Objekte zu aktualisieren und diese Änderungen auf Shopify zurückzuschieben.

Während das Konzept der App einfach ist, gelten alle diese Techniken für größere und komplexere Apps.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.