在 Google 錢包中移動及取消連結 Flow for Motics 票券

本頁面說明如何為 Motics 票證導入遷移及取消連結票券流程。如要提供良好的使用者體驗,使用者應該要能在不同的裝置之間移動 Motics 票證,但須符合發卡機構定義的特定限制。發卡機構只能讓一部裝置使用一個票證。使用者必須先刪除原始票證,才能將票證儲存至新裝置。如果使用者無法刪除原始票證 (可能是因為遺失裝置),發卡機構必須取消舊裝置與票證的連結。

「移動並取消連結」流程必須符合以下規定:

  • Motics 票券一次只能在一部裝置上使用。
  • 在下列情況中,使用者必須能夠將 Motics 票證移至新裝置:
    • 存取舊裝置,例如昇級到新裝置時。
    • 無法存取舊裝置,例如裝置遺失或遭竊。
  • 移動次數或票證啟用次數應受到 PTO 的業務需求所定義,且會受限於 Motics 票證核發機構端的適當控制項。

使用者體驗

本節將詳細說明使用者體驗的兩種情境,具體做法是視使用者在嘗試移動 Motics 票證時,是否仍能存取舊裝置而定。

使用者可存取舊裝置

在這種情況下,使用者可以從舊裝置啟動移動流程:

  1. 使用者從舊裝置的錢包應用程式中刪除 Motics 票券。
  2. 使用者在新裝置或登入售票 Webshop 入口網站中,找到發送的確認電子郵件,並按一下「儲存至 Google 錢包」連結,將票券重新儲存至 Google 錢包應用程式。

使用者無法存取舊裝置

當使用者無法存取舊裝置時,他們需要從 Webshop 售票入口網站啟動取消連結及移動流程,或是與核發機構客戶服務團隊聯絡,可以代表使用者啟動取消連結流程。

  1. 使用者找到核發者傳送的確認電子郵件,信中會有向客服人員尋求協助,或從發卡機構網站或支援單入口網站開始取消連結流程。這可以是票券入口網站上的「取消連結」按鈕。
  2. 發卡機構會代表使用者將票證與舊裝置取消連結 (詳情請參閱「發卡機構責任」一節)。
  3. 發卡機構取消連結後,就無法在原始裝置上使用該票證 (條碼無法掃描)。
  4. 核發機構應拒絕將舊票證列入拒絕清單,確保檢查裝置無法再掃描該票證。
  5. 等到票券重新上線後,系統就會自動從原本的裝置中刪除該票券 (我們會盡力這麼做)。
  6. 使用者在新裝置或登入售票 Webshop 入口網站中,找到發送的確認電子郵件,並按一下「儲存至 Google 錢包」連結,將票券重新儲存至 Google 錢包應用程式。

核發者的責任

  • 在初始設定期間,核發機構必須使用 multipleDevicesAndHoldersAllowedStatus=ONE_USER_ONE_DEVICE 插入 TransitClass
  • 核發機構在使用者購買時傳送給使用者的確認電子郵件,其中必須包含將票證移至新裝置的操作說明。
  • 確認電子郵件必須包含支援程序的協助票證 ID。
  • 為了盡量減少聯絡次數,發卡機構也應在 Webshop 或支援單入口網站中設置取消連結按鈕,供使用者管理票證。
  • 核發機構必須負責限制支援單的次數。這是為了避免使用者無限期在裝置 (皆登入相同帳戶) 之間來回切換同一張票券。
    • 核發機構必須追蹤針對相同物件 ID 呼叫啟用端點的次數,並在超過限制時拒絕啟用要求。
    • 由於每個核發機構對票證移動次數有各自的規則,因此 Google 會要求發卡機構處理限制票證的數量限制。
  • 如果使用者想透過聯絡客戶服務的方式取消連結支援單:
    • 如果使用者無法從舊裝置中移除票券,發卡機構會針對票證的 objectId 呼叫 {hasLinkedDevice:false},藉此取消連結 transitObject:patch
      • 核發機構需要找出指定票證的 objectId。他們應根據確認電子郵件中提供給使用者的 ID 查詢這項資訊。
  • 如果使用者在 webshop 或支援單入口網站啟動取消連結流程:
    • 發卡機構針對票證的 objectId 呼叫 transitObject:patch,並透過 {hasLinkedDevice:false} 呼叫 transitObject:patch 來取消連結支援單。
  • 核發機構應拒絕舊支援單,讓檢查裝置不再掃描該票證。

Google 的責任

為回應透過 {hasLinkedDevice:false} 呼叫接收 transitObject:patch,Google 會透過 Motics 伺服器撤銷現有憑證 (如果有的話)。如果使用者仍持有原始支援單的舊裝置,那麼只要重新連上網路或重新連上網路,該條碼就會失去效力,屆時該條碼就會從舊裝置中刪除。

序列圖表

圖 1 取消連結 Motics 票證流程 取消拼音流程

圖 1 顯示當使用者無法再存取舊裝置時,為了取消連結票證而進行的 transitObject:patchpruneTree() 呼叫。