Angemeldete Kunden in Ihrer Storefront

Angemeldete Kunden in Ihrer Storefront

Seite kopieren

Erlauben Sie nur angemeldeten Kunden, einen Webhook über Ihre Shop-Domain aufzurufen, und erhalten Sie die signierte Kunden-ID in Shopify Flow.

Rufen Sie einen Webhook von Ihrer eigenen Storefront aus auf und erfahren Sie, welcher Kunde ihn gesendet hat. Ein Großhandelsbestellformular, eine Schaltfläche zum Nachbestellen auf einer B2B-Kontoseite oder ein Anfrageformular für angemeldete Kunden können einen Shopify Flow-Workflow auslösen, und der Workflow erhält die ID des angemeldeten Kunden. Shopify signiert diese ID, sodass sich niemand als ein anderer Kunde ausgeben kann.

Dies baut auf der App-Proxy-URL auf; siehe CORS, die Proxy-URL der App und Browser-Aufrufe.

Richten Sie es ein

  1. Öffnen Sie den Webhook und wechseln Sie zu den erweiterten Einstellungen.
  2. Aktivieren Sie unter „URL-Einstellungen“ die Option „App-Proxy-URL verwenden“. Die Webhook-URL befindet sich nun auf der Domain Ihres Shops, zum Beispiel https://your-store.com/apps/webhooks/abc123.
  3. Wählen Sie unter „Wer kann diesen Webhook aufrufen?“ eine der drei Optionen aus:
Option URL des App-Proxys Direkte App-URL
Jeder, der über die URL verfügt Funktioniert für alle Werke
Ausschließlich über die Domain Ihres Shops Gilt für alle, auch für Gäste Abgelehnt mit Fehlercode 403
Nur Kunden, die in Ihrem Shop angemeldet sind Funktioniert für angemeldete Kunden; Gäste erhalten den Fehlercode 401 Abgelehnt mit Fehlercode 403
  1. Speichern. Die Einstellung gilt für die nächste Anfrage.
Erweiterte Einstellungen, URL-Einstellungen: Die Option „App-Proxy-URL verwenden“ ist aktiviert, und unter „Wer kann diesen Webhook aufrufen?“ ist „Nur Kunden, die in Ihrem Shop angemeldet sind“ eingestellt.
Die Einstellung finden Sie unter „Erweiterte Einstellungen“ > „URL-Einstellungen“, direkt unter dem Schalter für die App-Proxy-URL.

Was die App überprüft

Jede Anfrage, die über die Proxy-URL der App erfolgt, enthält eine Signatur von Shopify. Die App überprüft in folgender Reihenfolge:

  • Die Signatur. Eine Anfrage ohne gültige Shopify-Signatur wird mit dem Statuscode 401 abgelehnt. Niemand kann diese fälschen, da Shopify sie anhand des Geheimschlüssels Ihrer App erstellt.
  • Ihr Shop. Eine für einen anderen Shop unterzeichnete Anfrage wird mit dem Fehlercode 403 abgelehnt.
  • Der angemeldete Kunde. Wenn in Ihrem Shop ausschließlich angemeldete Kunden zugelassen sind, wird eine Anfrage ohne angemeldeten Kunden mit dem Status 401 (customer_login_required) abgelehnt. Die Kunden-ID stammt aus der Signatur, niemals aus dem Request-Body.
  • Die direkte URL. Unabhängig davon, welche Einschränkung gilt, gibt die direkte App-URL den Fehlercode 403 (proxy_required) zurück, sodass niemand diese Überprüfungen umgehen kann.

Eine abgelehnte Anfrage gelangt niemals zu Shopify Flow und wird nicht auf Ihren Plan angerechnet.

Was Shopify Flow empfängt

Der Webhook-Trigger und der Sync-Webhook-Trigger verfügen über das Feld „customerId“: die numerische ID des angemeldeten Kunden, zum Beispiel 7350001. Bei Gästen und bei allen Anfragen, die nicht über die App-Proxy-URL eingegangen sind, ist dieses Feld leer. Ihre zugeordneten Felder werden wie gewohnt übermittelt; siehe Zuordnung der Payload-Daten und Flow-Variablen.

Rufen Sie von Ihrer Storefront aus an

Die Anfrage muss von einer Seite Ihres Shops ausgehen, während der Kunde angemeldet ist, damit sie über die Domain Ihres Shops läuft. Kopieren Sie die Webhook-URL aus der App: Bei Shopify können Sie den Proxy-Pfad ändern, sodass sich Ihrer vom Beispiel unterscheiden kann. Dieser Codeausschnitt in einem Theme-Abschnitt übermittelt den Standort des Unternehmens, für den der B2B-Kunde einkauft:

sections/wholesale-request.liquidhtml
<script>
  fetch('/apps/webhooks/abc123', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      companyLocationId: 'gid://shopify/CompanyLocation/{{ customer.current_location.id }}'
    })
  })
</script>

Ordnen Sie Feld 1 der companyLocationId zu, damit der Workflow den Standort als fieldOne erhält.

Den Kunden in Shopify Flow einchecken

Shopify Flow kann alle Informationen zum Kunden abrufen, daher gehört die Überprüfung in den Workflow:

  1. Trigger: Webhook-Trigger aus Workflow Webhooks. Falls Sie über mehrere Webhooks verfügen, fügen Sie eine Bedingung hinzu: Die Webhook-ID entspricht der in der App angezeigten ID.
  2. Rufen Sie Kundendaten mit der Abfrage id:{{customerId}} ab. Shopify Flow lädt die Daten des angemeldeten Kunden, einschließlich Tags und Rollen des Unternehmens.
  3. Bedingung: Der Kunde verfügt über das Tag wholesale, und eines seiner Unternehmenskontaktprofile weist eine Rollenzuweisung auf, deren Unternehmensstandort-ID mit fieldOne übereinstimmt und deren Rolle Ordering only oder Location admin lautet.
  4. Dann: Führen Sie die entsprechenden Aktionen aus, beispielsweise das Anlegen eines Bestellentwurfs für diesen Standort. Andernfalls: Brechen Sie den Vorgang ab oder senden Sie eine Antwort an die Storefront mit einem Synchrone Reaktion, damit die Seite dem Kunden den Grund dafür mitteilen kann.

Gut zu wissen

  • Die Proxy-URL der App setzt voraus, dass Ihre Storefront erreichbar ist. Bei einem passwortgeschützten Shop antwortet sie erst, nachdem das Passwort für die Storefront eingegeben wurde.
  • Da die Besucher die 401-Fehlermeldung erhalten, zeigen Sie auf dieser Seite bitte einen Link zur Anmeldung an.
  • In der Historie wird die Kunden-ID jeder Anfrage angezeigt, und bei einer Wiederholung wird diese erneut gesendet.
  • Wenn ein Kunde die Löschung seiner Daten beantragt, werden die von ihm übermittelten Verlaufseinträge gelöscht.