Zum Inhalt

Storefront API

Die Storefront API bietet eine JavaScript-Schnittstelle (window.GiftHeroAPI) für den Aufbau eigener Auswahl- und Kaufabläufe für Geschenkgutscheine in Ihrem Onlineshop.

Konfiguration der Storefront API


API aktivieren

  1. Gehen Sie in der linken Navigation zu For developers.
  2. Setzen Sie den Haken bei Enable storefront API und speichern Sie.

Die Oberfläche für Geschenkgutscheine, die die App auf Ihrer Produktseite erzeugt, wird ausgeschaltet, und stattdessen wird window.GiftHeroAPI geladen. Die Oberfläche bauen Sie selbst.

Die API liest keine Guthaben von Geschenkgutscheinen aus. Sie erfasst die Auswahl des Käufers und legt den Geschenkgutschein in den Warenkorb.

Headless-Storefronts

Bei einem Headless-Storefront wird die API geladen, sobald der Headless-Modus und Enable storefront API beide aktiv sind. Siehe Headless-Integration.


Initialisierung

Die API lädt asynchron. Gift Card Hero löst ein Ereignis auf window aus, sobald sie bereit ist. Warten Sie auf dieses Ereignis, bevor Sie Methoden aufrufen:

window.addEventListener('gift.hero:initalized', function () {
  const api = window.GiftHeroAPI;
  // API is ready to use
});

Der Ereignisname ist mit initalized geschrieben

Der Ereignisname enthält einen Tippfehler: gift.hero:initalized (ohne zweites „i“). Verwenden Sie ihn genau so, wie er geschrieben ist. Das Ereignis wird auf window ausgelöst, nicht auf document, nachdem das Storefront-Skript von Gift Card Hero geladen wurde. Wenn das Skript nicht auf der Seite ist oder die Storefront API ausgeschaltet ist, wird das Ereignis nicht ausgelöst.

Wenn die API startet, wählt sie die erste Variante (oder die Variante aus dem URL-Parameter ?variant=) und das erste Bild aus.


Methoden

addToCart(quantity?, skipValidation?)

Prüft die Kartendaten und legt den konfigurierten Geschenkgutschein mit /cart/add.js von Shopify in den Warenkorb.

try {
  const result = await window.GiftHeroAPI.addToCart(1);
  // result: { status: 200, data: { ... } }
} catch (e) {
  // e: { status: 400, data: { errors: ['...'] } } when validation fails
}
Parameter Typ Standard Beschreibung
quantity number 1 Anzahl der hinzuzufügenden Geschenkgutscheine
skipValidation boolean false Die Karte hinzufügen, auch wenn validate() Fehler meldet

Rückgabe: ein Promise mit der Warenkorb-Antwort von Shopify ({ status, data }). Es wird mit { status: 400, data: { errors } } abgelehnt, wenn die Prüfung fehlschlägt.


generatePreview()

Öffnet eine Vorschau, die zeigt, wie der Geschenkgutschein für den Empfänger aussieht, mit den bisher gesetzten Daten.

window.GiftHeroAPI.generatePreview();

getImages()

Gibt ein Array von Bild-URLs zurück, die für den Geschenkgutschein verfügbar sind: Ihre eigenen Designs, die ausgewählten integrierten Designs und, sofern aktiviert, die Produktbilder.

const images = window.GiftHeroAPI.getImages();
// ['https://cdn.shopify.com/...', 'https://cdn.shopify.com/...']

getOptions()

Gibt die Produktoptionen zurück, einschließlich der verfügbaren Wertstufen.

const options = window.GiftHeroAPI.getOptions();

getTranslations()

Gibt die Übersetzungen der Oberfläche für die aktuelle Sprache zurück, etwa die Beschriftungen und die Prüfmeldung.

const translations = window.GiftHeroAPI.getTranslations();

getVariants()

Gibt das Array der Produktvarianten zurück.

const variants = window.GiftHeroAPI.getVariants();

setCardData(cardData)

Legt alle Daten des Geschenkgutscheins auf einmal fest.

window.GiftHeroAPI.setCardData({
  variantId: 12345678,
  image: 'https://cdn.shopify.com/...',
  message: 'Happy Birthday!',
  from: 'Alice',
  to: 'Bob',
  deliveryDate: new Date('2026-12-25'),
  email: 'recipient@example.com'
});
Feld Typ Beschreibung
variantId number Die ausgewählte Varianten-ID
image string URL des ausgewählten Kartenbilds
message string Nachricht des Geschenkgutscheins
from string Name des Absenders
to string Name des Empfängers (optional)
deliveryDate Date Geplantes Zustelldatum als JavaScript-Date-Objekt (optional)
email string E-Mail-Adresse des Empfängers (optional)

Die SMS-Zustellung ist über die API nicht verfügbar. Deshalb gibt es kein Telefonfeld.


Einzelne Setter

Methode Parameter Beschreibung
setDeliveryDate(date) Date Geplantes Zustelldatum festlegen. Wirft einen Fehler, wenn es kein gültiges Datumsobjekt ist
setEmail(email) string E-Mail-Adresse des Empfängers festlegen
setFrom(name) string Namen des Absenders festlegen
setTo(name) string Namen des Empfängers festlegen
setImage(image) string URL des ausgewählten Kartenbilds festlegen
setMessage(message) string Nachricht des Geschenkgutscheins festlegen
setVariant(variantId) number oder string Ausgewählte Variante festlegen
setProperty(name, value) string, string Der Warenkorbposition eine zusätzliche Eigenschaft hinzufügen

validate()

Prüft die aktuellen Daten des Geschenkgutscheins und gibt { valid, errors } zurück. errors ist ein Array von Meldungen, das aus Ihren Übersetzungen gebildet wird.

const { valid, errors } = window.GiftHeroAPI.validate();

Prüfregeln:

  • Wenn eine E-Mail-Adresse des Empfängers gesetzt ist, sind Zustelldatum, Absendername (from) und Nachricht erforderlich.
  • Wenn ein Zustelldatum gesetzt ist, sind E-Mail-Adresse des Empfängers, Absendername und Nachricht erforderlich.
  • Ohne E-Mail-Adresse und ohne Zustelldatum ist nichts erforderlich.

setCustomAmount(amount)

Wählt einen frei festgelegten Betrag in Ihrer Shop-Währung aus (zum Beispiel 75 für 75,00). Das funktioniert nur, wenn frei festgelegte Beträge für Ihren Shop aktiviert sind. Andernfalls wird Custom amount is not enabled ausgelöst. Die Methode prüft Ihr Minimum und Maximum nicht. Prüfen Sie den Betrag daher selbst.

window.GiftHeroAPI.setCustomAmount(75);

Physische Geschenkgutscheine

Wenn Sie physische Geschenkgutscheine verkaufen, stellen Sie die API mit setCardType('physical') darauf um (mit setCardType('eGift') wechseln Sie zurück).

Methode Beschreibung
setCardType(type) 'eGift' oder 'physical'. Mit 'physical' wird die erste physische Variante und das erste Bild gewählt
getPhysicalProduct() Das physische Geschenkgutschein-Produkt
getPhysicalVariants() Varianten des physischen Produkts
getPhysicalImages() Bild-URLs des physischen Produkts
setPhysicalVariant(variantId) Eine physische Variante wählen (nur im Typ physical)
setPhysicalDeliveryAddress(address) Die Lieferadresse festlegen (nur im Typ physical): firstName, lastName, address, zipCode, city, country und optional state
isPhysicalCard() true, wenn der Typ physical ausgewählt ist

uploadCustomDesign(file, options?)

Lädt ein eigenes Bild des Käufers hoch und gibt seine URL zurück, die Sie an setImage() übergeben können.

const { url } = await window.GiftHeroAPI.uploadCustomDesign(file);
window.GiftHeroAPI.setImage(url);

Die Datei muss ein JPG-, PNG-, GIF- oder WebP-Bild sein, standardmäßig bis 5 MB groß. Sie können die Grenzen mit options.maxSize (in Bytes) und options.allowedTypes ändern. Die Methode löst einen Fehler mit einer klaren Meldung aus, wenn die Datei abgelehnt wird.


Beispiel zur React-Integration

Ein vollständiges Beispiel zur React-Integration steht auf JSFiddle bereit. Es zeigt, wie Sie die API initialisieren, eine eigene Auswahloberfläche für Geschenkgutscheine bauen und den Ablauf „In den Warenkorb“ umsetzen:

React-Beispiel auf JSFiddle ansehen