Mağazanızda oturum açmış müşteriler

Mağazanızda oturum açmış müşteriler

Sayfayı kopyala

Webhook'u yalnızca mağazanıza giriş yapmış müşterilerin çağırmasına izin verin ve Shopify Flow'da Shopify imzalı müşteri kimliğini alın.

Kendi mağaza sayfanızdan bir webhook'u çağırın ve bunu hangi müşterinin gönderdiğini öğrenin. Bir toptan satış sipariş formu, bir B2B hesap sayfasındaki yeniden sipariş düğmesi veya oturum açmış müşteriler için bir talep formu, bir Shopify Flow iş akışını başlatabilir ve iş akışı, oturum açmış müşterinin kimliğini alır. Shopify bu kimliği imzalar, böylece kimse başka bir müşteri gibi davranamaz.

Bu, uygulama proxy URL’sini temel alır; bkz. CORS, uygulama proxy URL’si ve tarayıcı çağrıları.

Kurun

  1. Webhook'u açın ve Gelişmiş Ayarlar'a gidin.
  2. URL Ayarları altında, Uygulama proxy URL'sini kullan seçeneğini etkinleştirin. Webhook URL'si artık mağazanızın etki alanında yer almaktadır; örneğin https://your-store.com/apps/webhooks/abc123.
  3. "Bu webhook'u kim çağırabilir?" bölümünde, üç seçenekten birini seçin:
Seçenek Uygulama proxy URL'si Uygulamanın doğrudan URL'si
Bu URL’ye sahip olan herkes Herkes için işe yarar Eserler
Yalnızca mağazanızın alan adı üzerinden Herkes için geçerlidir, misafirler de dahil 403 hatasıyla reddedildi
Yalnızca mağazanıza giriş yapmış müşteriler Bu özellik, oturum açmış müşteriler için geçerlidir; misafirler ise 401 hatası alır 403 hatasıyla reddedildi
  1. Kaydet. Bu ayar bir sonraki isteğe uygulanır.
Gelişmiş Ayarlar, URL Ayarları: “Uygulama proxy URL’sini kullan” seçeneği açıktır ve “Bu webhook’u kimler çağırabilir?” seçeneği “Yalnızca mağazanıza giriş yapmış müşteriler” olarak ayarlanmıştır
Bu ayar, Gelişmiş Ayarlar > URL Ayarları bölümünde, uygulama proxy URL'si anahtarının hemen altında yer almaktadır.

Uygulamanın kontrol ettiği şeyler

Uygulama proxy URL’si üzerinden gelen her istek, Shopify’dan alınan bir imza içerir. Uygulama, şu sırayla kontrol eder:

  • İmza. Geçerli bir Shopify imzası içermeyen bir istek, 401 hatasıyla reddedilir. Shopify bu imzayı uygulamanızın gizli anahtarıyla oluşturduğu için kimse bunu taklit edemez.
  • Sizin mağazanız. Başka bir mağaza adına imzalanmış bir talep, 403 hatasıyla reddedilir.
  • Oturum açmış müşteri. Yalnızca mağazanıza oturum açmış müşteriler için geçerli olan bu durumda, oturum açmamış bir müşteriye ait istek 401 (customer_login_required) hatasıyla reddedilir. Müşteri kimliği imzadan alınır; asla istek gövdesinden alınmaz.
  • Doğrudan URL. Her iki kısıtlamada da, uygulamanın doğrudan URL’si 403 (proxy_required) hatası verir; dolayısıyla kimse bu kontrolleri atlayamaz.

Reddedilen bir istek hiçbir zaman Shopify Flow’a ulaşmaz ve planınızın kotasından düşülmez.

Shopify Flow’a gelenler

Webhook Tetikleyicisi ve Senkronizasyon Webhook Tetikleyicisi’nde customerId adlı bir alan bulunur: bu, oturum açmış müşterinin sayısal kimliğidir; örneğin 7350001. Misafirler için ve uygulama proxy URL’si üzerinden gelmeyen her istek için bu alan boştur. Eşleştirilmiş alanlarınız her zamanki gibi gelir; bkz. Yük haritalama ve Shopify Flow değişkenleri.

Mağazanızdan arayın

İstek, müşterinin oturum açmış olduğu bir durumda mağazanızın bir sayfasından gelmelidir; böylece mağazanızın etki alanı üzerinden iletilir. Uygulamadan webhook URL’sini kopyalayın: Shopify, proxy yolunu değiştirmenize izin verir; bu nedenle sizin yolunuz örnektekinden farklı olabilir. Bir tema bölümündeki bu kod parçacığı, B2B müşterisinin satın alma işlemini gerçekleştirdiği şirketin konumunu gönderir:

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>

Workflow'un konumu fieldOne olarak alabilmesi için Alan 1'i companyLocationId ile eşleştirin.

Shopify Flow'da müşterinin giriş işlemlerini tamamlayın

Shopify Flow, müşteri hakkındaki tüm bilgileri okuyabilir; bu nedenle bu kontrol, iş akışının bir parçası olmalıdır:

  1. **Tetikleyici: **Workflow Webhooks bölümünden “Webhook Tetikleyicisi”. Birden fazla webhook’unuz varsa, şu koşulu ekleyin: Webhook kimliği, uygulamada gösterilen kimliğe eşittir.
  2. id:{{customerId}} sorgusuyla müşteri verilerini alın. Shopify Flow, etiketler ve şirket rolleri de dahil olmak üzere oturum açmış müşterinin bilgilerini yükler.
  3. Koşul: Müşterinin wholesale etiketi olması ve şirket iletişim profillerinden birinde, şirket konum kimliği fieldOne ile eşleşen ve rolü Ordering only veya Location admin olan bir rol ataması bulunması.
  4. O zaman: gerekli işlemleri gerçekleştirin; örneğin, o konum için bir sipariş taslağı oluşturun. Aksi takdirde: işlemi durdurun ya da mağaza arayüzüne Eşzamanlı yanıt ile yanıt verin; böylece sayfa müşteriye nedenini açıklayabilir.

Bilgiye değer

  • Uygulama proxy URL’sinin çalışabilmesi için mağaza sayfanıza erişilebilir olması gerekir. Şifre korumalı bir mağazada ise, mağaza sayfası şifresi girildikten sonra yanıt verir.
  • Konuklar 401 hatası ile karşılaşıyor, bu nedenle o sayfada bir oturum açma bağlantısı gösterin.
  • Geçmiş, her isteğin müşteri kimliğini gösterir ve bir tekrar işlemi bu kimliği yeniden gönderir.
  • Bir müşteri verilerinin silinmesini talep ettiğinde, gönderdiği geçmiş kayıtları silinir.