Kunder, der er logget ind på din webshop

Kunder, der er logget ind på din webshop

Kopier side

Sørg for, at kun indloggede kunder kan kalde en webhook via din butiks domæne, deaktiver den direkte URL, og hent det verificerede kunde-ID i Shopify Flow.

Aktivér en webhook fra din egen webshop, og se, hvilken kunde der har udløst den. En grossistbestillingsformular, en genbestillingsknap på en B2B-kontoside eller en anmodningsformular til loggede kunder kan starte en Shopify Flow-arbejdsgang, og arbejdsgangen modtager ID'et for den kunde, der er logget ind. Shopify signerer dette ID, så ingen kan udgive sig for at være en anden kunde.

Dette bygger videre på app-proxy-URL’en, se CORS, appens proxy-URL og browseranmodninger.

Konfigurer det

  1. Åbn webhooken, og gå til »Avancerede indstillinger«.
  2. Under »URL-indstillinger« skal du aktivere »Brug app-proxy-URL«. Webhook-URL’en ligger nu på din butiks domæne, for eksempel https://your-store.com/apps/webhooks/abc123.
  3. Under »Hvem kan kalde denne webhook« skal du vælge en af de tre muligheder:
Valgmulighed App-proxy-URL Direkte app-URL
Enhver, der har URL’en Fungerer for alle Værker
Kun via din butiks domæne Fungerer for alle, også gæster Afvist med fejlkode 403
Kun kunder, der er logget ind på din butik Fungerer for kunder, der er logget ind; gæster får fejl 401 Afvist med fejlkode 403
  1. Gem. Indstillingen gælder for den næste anmodning.
Avancerede indstillinger, URL-indstillinger: »Brug app-proxy-URL« er aktiveret, og »Hvem kan kalde denne webhook« er indstillet til »Kun kunder, der er logget ind på din butik«
Indstillingen findes under Avancerede indstillinger > URL-indstillinger, lige under kontakten til app-proxy-URL’en.

Hvad appen kontrollerer

Hver anmodning via appens proxy-URL indeholder en signatur fra Shopify. Appen kontrollerer følgende i denne rækkefølge:

  • Signaturen. En anmodning uden en gyldig Shopify-signatur afvises med fejlkode 401. Ingen kan forfalske den, da Shopify genererer den ved hjælp af din apps hemmelige nøgle.
  • Din butik. En anmodning, der er underskrevet for en anden butik, afvises med fejlkode 403.
  • Den indloggede kunde. Når der kun er_ kunder_, der er logget ind på din butik, afvises en anmodning uden en indlogget kunde med fejlkoden 401 (customer_login_required). Kunde-ID’et stammer fra signaturen, aldrig fra anmodningens brødtekst.
  • Den direkte URL. Uanset hvilken begrænsning der gælder, returnerer den direkte app-URL en 403-fejl (proxy_required), så ingen kan omgå disse kontroller.

En afvist anmodning når aldrig frem til Shopify Flow og tæller ikke med i dit abonnement.

Hvad Shopify Flow modtager

Webhook-udløseren og Sync-webhook-udløseren har et felt ved navn customerId: det numeriske ID for den indloggede kunde, f.eks. 7350001. Feltet er tomt for gæster og for alle anmodninger, der ikke er kommet via app-proxy-URL’en. Dine tilknyttede felter modtages som sædvanligt; se Kortlægning af payload og strømningsvariabler.

Ring fra din webshop

Anmodningen skal komme fra en side i din butik, mens kunden er logget ind, så den går via din butiks domæne. Kopier webhook-URL’en fra appen: Shopify giver dig mulighed for at ændre proxy-stien, så din kan afvige fra eksemplet. Dette kodestykke i en tema-sektion sender den virksomhedsadresse, som B2B-kunden køber til:

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>

Knyt felt 1 til companyLocationId, så arbejdsgangen modtager lokationen som fieldOne.

Tjek kunder ind i Shopify Flow

Shopify Flow kan hente alle oplysninger om kunden, så kontrollen hører hjemme i arbejdsgangen:

  1. Udløser: Webhook-udløser fra Workflow Webhooks. Hvis du har flere webhooks, skal du tilføje en betingelse: Webhook-ID’et skal svare til det ID, der vises i appen.
  2. Hent kundedata med forespørgslen id:{{customerId}}. Shopify Flow indlæser den indloggede kunde, herunder tags og roller i virksomheden.
  3. Betingelse: Kunderne har mærket wholesale, og en af virksomhedens kontaktprofiler har en rolletildeling, hvor virksomhedens placerings-ID er lig med fieldOne, og hvor rollen er Ordering only eller Location admin.
  4. I så fald: Udfør dine handlinger, f.eks. opret en ordrekladde for den pågældende lokation. Ellers: Stop, eller svar til webshoppen med et Synkron respons, så siden kan forklare kunden hvorfor.

Godt at vide

  • Appens proxy-URL kræver, at din webshop er tilgængelig. På en adgangskodebeskyttet webshop svarer den først, når webshops adgangskode er indtastet.
  • Gæsterne får svar 401, så vis et link til login på den side.
  • Historikken viser kunde-ID’et for hver anmodning, og en gentagelse sender det igen.
  • Når en kunde anmoder om, at vedkommendes data slettes, slettes de historikposter, som vedkommende har indsendt.