Kunder som er logget inn på nettbutikken din

Kunder som er logget inn på nettbutikken din

Kopier side

La kun innloggede kunder kalle opp en webhook via nettbutikkens domene, deaktiver den direkte URL-en og hent den bekreftede kunde-ID-en i Shopify Flow.

Kall opp en webhook fra din egen nettbutikk og finn ut hvilken kunde som sendte den. Et bestillingsskjema for grossist, en knapp for nybestilling på en B2B-kontoside eller et forespørselsskjema for innloggede kunder kan starte en Shopify Flow-arbeidsflyt, og arbeidsflyten mottar ID-en til den innloggede kunden. Shopify signerer denne ID-en, slik at ingen kan utgi seg for å være en annen kunde.

Dette bygger videre på app-proxy-URL-en, se CORS, appens proxy-URL og nettleserforespørsler.

Sett det opp

  1. Åpne webhooken og gå til Avanserte innstillinger.
  2. Under URL-innstillinger må du aktivere Bruk app-proxy-URL. Webhook-URL-en ligger nå på nettbutikkens domene, for eksempel https://your-store.com/apps/webhooks/abc123.
  3. Under «Hvem kan utløse denne webhooken?» velger du ett av tre alternativer:
Alternativ URL for app-proxy Direkte URL til appen
Alle som har nettadressen Fungerer for alle Verk
Kun via butikkens domene Fungerer for alle, også gjester Avvist med feilkode 403
Kun kunder som er logget inn i nettbutikken din Fungerer for innloggede kunder; gjester får feilmelding 401 Avvist med feilkode 403
  1. Lagre. Innstillingen gjelder for neste forespørsel.
Avanserte innstillinger, URL-innstillinger: «Bruk app-proxy-URL» er aktivert, og «Hvem kan kalle opp denne webhooken» er satt til «Kun kunder som er logget inn i butikken din»
Innstillingen finnes under «Avanserte innstillinger» > «URL-innstillinger», rett under bryteren for app-proxy-URL.

Hva appen sjekker

Hver forespørsel som sendes via appens proxy-URL, inneholder en signatur fra Shopify. Appen sjekker følgende, i denne rekkefølgen:

  • Signaturen. En forespørsel uten en gyldig Shopify-signatur avvises med feilkode 401. Ingen kan forfalske den, fordi Shopify genererer den ved hjelp av appens hemmelige nøkkel.
  • Din butikk. En forespørsel som er signert for en annen butikk, avslås med feilkode 403.
  • Den innloggede kunden. Når det kun er_ kunder som er logget inn i butikken din_, avvises en forespørsel uten en innlogget kunde med feilkoden 401 (customer_login_required). Kunde-ID-en hentes fra signaturen, aldri fra forespørselens brødtekst.
  • Den direkte URL-adressen. Uansett hvilken begrensning som gjelder, returnerer den direkte app-URL-adressen feilkoden 403 (proxy_required), slik at ingen kan omgå disse kontrollene.

En avvist forespørsel når aldri Shopify Flow og teller ikke med i abonnementet ditt.

Hva Shopify Flow mottar

Webhook-utløseren og synkroniserings-webhook-utløseren har et felt kalt customerId: den numeriske ID-en til den innloggede kunden, for eksempel 7350001. Feltet er tomt for gjester og for alle forespørsler som ikke kom via appens proxy-URL. De tilordnede feltene dine kommer inn som vanlig; se Kartlegging av nyttelast og Shopify Flow-variabler.

Ring fra butikken din

Forespørselen må komme fra en side i nettbutikken din mens kunden er logget inn, slik at den går via nettbutikkens domene. Kopier webhook-URL-en fra appen: Shopify lar deg endre proxybanen, så din kan avvike fra eksemplet. Dette kodestykket i en temaseksjon sender firmaadressen til den B2B-kunden kjøper for:

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>

Knytt felt 1 til companyLocationId, slik at arbeidsflyten mottar stedet som fieldOne.

Sjekk inn kunden i Shopify Flow

Shopify Flow kan hente inn all informasjon om kunden, så sjekken hører hjemme i arbeidsflyten:

  1. Utløser: Webhook-utløser fra Workflow Webhooks. Hvis du har flere webhooks, må du legge til et vilkår: Webhook-ID-en må være den samme som ID-en som vises i appen.
  2. Hent kundedata med spørringen id:{{customerId}}. Shopify Flow henter inn den innloggede kunden, inkludert tagger og roller i bedriften.
  3. Betingelse: Kunden har taggen wholesale, og en av bedriftens kontaktprofiler har en rolletildeling der bedriftens lokasjons-ID er lik fieldOne, og der rollen er Ordering only eller Location admin.
  4. I så fall: utfør handlingene dine, for eksempel opprett et ordreutkast for det aktuelle stedet. Ellers: avbryt, eller send et svar til butikkfronten med Synkron respons, slik at siden kan forklare kunden hvorfor.

Godt å vite

  • Appens proxy-URL krever at nettbutikken din er tilgjengelig. For en passordbeskyttet nettbutikk svarer den først etter at passordet til nettbutikken er oppgitt.
  • Gjestene får svar 401, så vis en påloggingslenke på den siden.
  • Historikken viser kunde-ID-en for hver forespørsel, og en gjengivelse sender den på nytt.
  • Når en kunde ber om at opplysningene sine skal slettes, blir historikkoppføringene de har sendt inn, slettet.