設定您商店頁面中已登入的顧客

您商店頁面中已登入的顧客

複製頁面

僅允許已登入的顧客透過您的商店網域呼叫 Webhook,停用直接網址,並在 Shopify Flow 中取得已驗證的顧客 ID。

從您自己的商店前端呼叫 Webhook,並了解是哪位顧客發送的。 無論是批發訂單表單、B2B 帳戶頁面上的「重新訂購」按鈕,還是已登入客戶的請求表單,皆可觸發 Shopify Flow 工作流程,而該工作流程會接收當前登入客戶的 ID。Shopify 會對該 ID 進行簽名驗證,因此無人能冒充其他客戶。

此內容基於應用程式代理伺服器的 URL,請參閱 CORS、應用程式代理伺服器網址與瀏覽器呼叫。

設定它

  1. 開啟 Webhook,並前往「進階設定」。
  2. 在「URL 設定」中,開啟「使用應用程式代理 URL」選項。現在,Webhook URL 將位於您的商店網域下,例如 https://your-store.com/apps/webhooks/abc123。
  3. 在「誰可以呼叫此 webhook」中,請從以下三個選項中選擇一個:
選項 應用程式代理伺服器網址 應用程式直接連結
任何擁有該網址的人 適用於所有人 作品
僅限透過貴店的網域 適用於所有人,包括訪客在內 因 403 錯誤而遭拒絕
僅限已登入您商店的顧客 此功能僅適用於已登入的客戶,訪客將收到 401 錯誤 因 403 錯誤而遭拒絕
  1. 儲存。此設定將套用至下一次請求。
「進階設定」中的「URL 設定」:已啟用「使用應用程式代理 URL」,且「誰可以呼叫此 Webhook」設定為「僅限已登入您商店的客戶」
此設定位於「進階設定」>「URL 設定」下,就在「應用程式代理伺服器 URL」開關的正下方。

該應用程式會檢查什麼

透過應用程式代理伺服器 URL 發送的每項請求,都會附帶來自 Shopify 的簽名。應用程式會依以下順序進行驗證:

  • **簽名。**若請求中缺少有效的 Shopify 簽名,系統將以 401 狀態碼拒絕該請求。由於 Shopify 是根據您的應用程式密鑰生成此簽名,因此無人能偽造它。
  • **您的商店。**針對其他商店簽署的請求將因 403 錯誤而被拒絕。
  • 已登入的客戶。若您的商店僅限已登入的客戶使用,則未包含已登入客戶的請求將因 401 錯誤(customer_login_required)而被拒絕。客戶 ID 來自簽名,絕不會來自請求正文。
  • **直接網址。**無論採用哪種限制,直接存取應用程式的網址都會返回 403 錯誤(proxy_required),因此無人能繞過這些檢查。

遭拒絕的請求永遠不會傳送到 Shopify Flow,也不會計入您的方案配額。

Shopify Flow 接收的內容

「Webhook 觸發器」和「同步 Webhook 觸發器」皆包含一個名為 customerId 的欄位:這是已登入客戶的數值 ID,例如 7350001。對於訪客,以及所有未透過應用程式代理 URL 傳入的請求,此欄位將為空。您所映射的欄位將如常傳入,詳見 有效載荷映射與 Shopify Flow 變數。

請從您的店面致電

此請求必須在客戶已登入的狀態下,從您商店的某個頁面發出,以便透過您商店的網域傳送。請從應用程式中複製 webhook URL:Shopify 允許您變更代理路徑,因此您的路徑可能與範例不同。此程式碼片段置於主題區段中,用於傳送 B2B 客戶所購買商品的公司所在地:

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>

將欄位 1 映射至 companyLocationId,以便工作流程能將該位置作為 fieldOne 接收。

在 Shopify Flow 中為客戶辦理入住手續

Shopify Flow 可以讀取關於客戶的所有資訊,因此這項檢查應納入工作流程中:

  1. **觸發器:**來自「Workflow Webhooks」的 Webhook 觸發器。如果您有多個 Webhook,請新增一個條件:Webhook ID 必須與應用程式中顯示的 ID 相同。
  2. 使用查詢 id:{{customerId}} 取得客戶資料。Shopify Flow 會載入已登入的客戶,包括標籤和公司角色。
  3. **條件:**客戶具有 wholesale 標籤,且其其中一個公司聯絡人檔案具有角色指派,該角色指派的公司地點 ID 等於 fieldOne,且角色為 Ordering only 或 Location admin。
  4. **若屬此情況:**請執行相關操作,例如為該地點建立訂單草稿。**否則:**停止操作,或透過 同步響應 向前端傳回回應,以便頁面能向顧客說明原因。

值得了解

  • 應用程式代理伺服器的 URL 需要您的商店前端可被存取。若為受密碼保護的商店,則僅在輸入商店前端密碼後才會回應。
  • 訪客會收到 401 錯誤訊息,因此請在該頁面顯示登入連結。
  • 「歷史紀錄」會顯示每個請求的客戶 ID,而「重播」功能則會再次傳送該 ID。
  • 當客戶要求刪除其資料時,其所傳送的歷史紀錄將被刪除。