Zalogowani klienci w Państwa sklepie internetowym

Zalogowani klienci w Państwa sklepie internetowym

Skopiuj stronę

Wywołaj webhook tylko dla zalogowanych klientów przez proxy aplikacji w domenie sklepu i otrzymaj w Shopify Flow podpisany identyfikator klienta.

Wywołaj webhook ze swojego sklepu internetowego i dowiedz się, który klient go wysłał. Formularz zamówienia hurtowego, przycisk ponownego zamówienia na stronie konta B2B lub formularz zapytania dla zalogowanych klientów mogą uruchomić przepływ pracy w Shopify Flow, a przepływ ten otrzymuje identyfikator zalogowanego klienta. Shopify podpisuje ten identyfikator, dzięki czemu nikt nie może podszywać się pod innego klienta.

Jest to oparte na adresie URL serwera proxy aplikacji; zob. CORS, adres URL serwera proxy aplikacji oraz wywołania przeglądarki.

Skonfiguruj to

  1. Proszę otworzyć webhook i przejść do sekcji Ustawienia zaawansowane.
  2. W sekcji Ustawienia adresu URL proszę włączyć opcję Użyj adresu URL serwera proxy aplikacji. Adres URL webhooka znajduje się teraz w domenie Państwa sklepu, na przykład https://your-store.com/apps/webhooks/abc123.
  3. W sekcji Kto może wywołać ten webhook proszę wybrać jedną z trzech opcji:
Opcja Adres URL serwera proxy aplikacji Bezpośredni adres URL aplikacji
Każdy, kto posiada adres URL Sprawdza się w przypadku każdego Dzieła
Wyłącznie za pośrednictwem domeny Państwa sklepu Działa dla wszystkich, w tym dla gości Odmowa z kodem 403
Wyłącznie klienci zalogowani w Państwa sklepie Działa w przypadku zalogowanych klientów; goście otrzymują komunikat 401 Odmowa z kodem 403
  1. Zapisz. To ustawienie zostanie zastosowane przy następnym żądaniu.
Ustawienia zaawansowane, Ustawienia adresu URL: opcja „Użyj adresu URL serwera proxy aplikacji” jest włączona, a opcja „Kto może wywołać ten webhook” ma wartość „Tylko klienci zalogowani do Państwa sklepu”
Opcja ta znajduje się w sekcji „Ustawienia zaawansowane” > „Ustawienia adresów URL”, tuż pod przełącznikiem adresu URL serwera proxy aplikacji.

Co sprawdza aplikacja

Każde żądanie przesyłane za pośrednictwem adresu URL serwera proxy aplikacji zawiera podpis od Shopify. Aplikacja sprawdza, w następującej kolejności:

  • Podpis. Żądanie bez prawidłowego podpisu Shopify zostanie odrzucone z kodem błędu 401. Nikt nie jest w stanie go sfałszować, ponieważ Shopify generuje go na podstawie klucza tajnego Państwa aplikacji.
  • Państwa sklep. Żądanie podpisane w imieniu innego sklepu zostaje odrzucone z kodem błędu 403.
  • Zalogowany klient. W trybie Tylko klienci zalogowani do Państwa sklepu żądanie bez zalogowanego klienta zostanie odrzucone z kodem błędu 401 (kod customer_login_required). Identyfikator klienta pochodzi z podpisu, a nie z treści żądania.
  • Bezpośredni adres URL. Niezależnie od zastosowanego ograniczenia bezpośredni adres URL aplikacji zwraca kod błędu 403 (proxy_required), więc nikt nie może ominąć tych kontroli.

Odrzucony wniosek nigdy nie trafia do serwisu Shopify Flow i nie jest wliczany do limitu przewidzianego w Państwa planie.

Co otrzymuje Shopify Flow

Wyzwalacz Webhook oraz wyzwalacz Sync Webhook zawierają pole customerId: numeryczny identyfikator zalogowanego klienta, na przykład 7350001. Pole to pozostaje puste w przypadku gości oraz w przypadku każdego żądania, które nie zostało przesłane za pośrednictwem adresu URL serwera proxy aplikacji. Państwa zmapowane pola są przekazywane w zwykły sposób - proszę zapoznać się z sekcją Mapowanie danych użytkowych i zmienne w Shopify Flow.

Zadzwoń z Państwa punktu sprzedaży

Żądanie musi pochodzić ze strony Państwa sklepu, gdy klient jest zalogowany, tak aby przechodziło przez domenę Państwa sklepu. Proszę skopiować adres URL webhooka z aplikacji: Shopify umożliwia zmianę ścieżki proxy, więc Państwa adres może różnić się od podanego w przykładzie. Poniższy fragment kodu umieszczony w sekcji szablonu wysyła lokalizację firmy, dla której klient B2B dokonuje zakupu:

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>

Proszę przypisać pole 1 do companyLocationId, tak aby w ramach przepływu pracy lokalizacja była odbierana jako fieldOne.

Zarejestruj klienta w Shopify Flow

Shopify Flow ma dostęp do wszystkich informacji o kliencie, dlatego sprawdzenie tych danych powinno stanowić część procesu:

  1. Wyzwalacz: Wyzwalacz typu „Webhook” z sekcji Workflow Webhooks. Jeśli posiada Pan/Pani kilka webhooków, proszę dodać warunek: identyfikator webhooka jest równy identyfikatorowi wyświetlanemu w aplikacji.
  2. Proszę pobrać dane klienta za pomocą zapytania id:{{customerId}}. Shopify Flow pobiera informacje o zalogowanym kliencie, w tym tagi i role w firmie.
  3. Warunek: klient posiada tag wholesale, a jeden z profili kontaktowych jego firmy posiada przypisanie roli, w którym identyfikator lokalizacji firmy jest równy fieldOne, a rola to Ordering only lub Location admin.
  4. W takim przypadku: proszę wykonać odpowiednie czynności, na przykład utworzyć projekt zamówienia dla tej lokalizacji. W przeciwnym razie: proszę przerwać operację lub przekazać interfejsowi sklepu odpowiedź typu Odpowiedź synchroniczna, aby strona mogła poinformować klienta o przyczynie.

Warto wiedzieć

  • Aby adres URL serwera proxy aplikacji działał, strona sklepu musi być dostępna. W przypadku sklepu chronionego hasłem serwer proxy odpowiada dopiero po wprowadzeniu hasła do strony sklepu.
  • Goście otrzymują komunikat o błędzie 401, dlatego na tej stronie należy wyświetlić link do logowania.
  • W sekcji „Historia” wyświetlany jest identyfikator klienta dla każdego żądania, a funkcja ponownego wysłania powoduje jego ponowne przesłanie.
  • Gdy klient zwraca się z prośbą o usunięcie swoich danych, wysłane przez niego wpisy historyczne są usuwane.