商家的感應式刷卡機可以透過數種方式來要求特定的票證。
感應式刷卡機和 Google Pay 應用程式之間的通訊
感應式刷卡機使用賣家 ID 來識別自己的身分。賣家 ID 會對應到 Google 後端的票證兌換機構 ID。票證開發人員會透過 Google Pay API for Passes 與 Google 後端進行互動。
智慧感應功能發揮作用時,感應式刷卡機會將其賣家 ID 傳輸至 Google Pay 應用程式。接著,Google Pay 應用程式會檢驗各張票證的票證兌換機構、擷取賣家 ID,並將資訊相符的特定票證傳輸至感應式刷卡機。
如要設定這項功能,請參閱設定商家感應式刷卡機一文。
以下是這項程序的流程圖:
設定步驟 1:在上圖中,Issuer_id: 2018
含有一個類別和一個物件。這個核發機構帳戶是由票證開發人員使用。Class_id: abc
類別有一個 redemptionIssuers['1990']
物件。根據定義,Issuer_id: '1990'
是代表 fooPizza 這個商家的票證兌換機構 ID。感應式刷卡機的賣家 ID 為「12345678」,這組 ID 對應至為票證兌換機構 1990
設定的賣家 ID。Class_id: abc
的所有物件都會傳輸至具備「12345678」這組賣家 ID 的感應式刷卡機。
設定步驟 1.1:在上方範例中,fooPizza 和 yumPie 都能兌換相同的票證 object_id: 123
。一個類別可以同時包含多個票證兌換機構。與核發機構相對應的票證兌換機構帳戶在自家的感應式刷卡機中,會有自己的專屬賣家 ID。
設定步驟 2:上圖顯示該類別如何將自己的核發機構帳戶設為票證兌換機構。Issuer_id: 2018
含有一個類別和一個物件。Class_id: abc
類別中包含一個稱為 Issuer_id: 2018
的票證兌換機構物件。根據定義,Issuer_id: 2018
是代表 fooPizza 這個商家的票證兌換機構 ID。感應式刷卡機的賣家 ID 為「12345678」,這組 ID 對應至為 Issuer_id: 2018
這組核發機構 ID 設定的賣家 ID,該核發機構 ID 也包含 Class_id: abc
。Class_id: abc
的所有物件都會傳輸至含有「12345678」這組賣家 ID 的感應式刷卡機。
Google Pay 應用程式的使用者選擇機制
視使用者在裝置上看見的內容而定,系統向 Google Pay 應用程式傳輸何種資訊的行為可能不同。
如果使用者先在 Google Pay 中看見票證,然後才使用智慧感應功能,則只要該張票證的賣家 ID 與要求這項資訊的感應式刷卡機關聯賣家 ID 相符,系統就會傳輸這張票證。票證的效力以類別或物件中設定的屬性集為準。不過在上述情況下,無論票證是否有效,系統都會傳輸票證。
在某些情況下,使用者可能無法看見票證,例如使用者位於 Google Pay 的首頁分頁,或者票證是在裝置的解鎖畫面中顯示。如果使用者並未看見票證,但賣家 ID 比對完成後只有一張有效票證可供兌換,則系統還是會傳輸票證。
賣家 ID 比對完成後,如果使用者同時擁有多張有效票證可供兌換,Google Pay 會執行下列其中一項工作:
- 向該名使用者顯示可供選取的輪轉內容,使用者輕觸所需項目即可進行傳輸。
- 如果只有一張有效票證,Google Pay 就會傳輸票證。
票證的效期會因票證類別有所不同,因此請務必檢查與狀態和使用日期相關的屬性,例如 object.state
或 object.validTimeInterval
。
智慧感應功能收取作業範例
請參閱以下虛構的核發機構和會員方案設定範例:
iLuvCoffee | Eat-foo | Bacon-R-us | |
---|---|---|---|
核發機構 ID | 123 | 456 | 789 |
賣家 ID | 111 | 44444444 | 77777777 |
會員級別 | 基本級會員獎勵 | 我的會員獎勵 | 無 |
會員級別 | 黃金級會員獎勵 | 無 | 無 |
在建立票證時,iLuvCoffee 設有兩種不同的會員級別:「基本級會員獎勵方案」和「黃金級會員獎勵方案」。同時,Eat-foo 也有自己的「我的會員獎勵」方案,Bacon-R-us 則沒有任何會員方案。
現在,假設您想進行以下設定:
- 「基本級會員獎勵」可在 Eat-foo 和 Bacon-R-us 兌換。
- 「我的會員獎勵」可在 Eat-foo 兌換。
- 「黃金級會員獎勵」無法透過任何智慧感應功能兌換。
如要進行上述設定,請使用下列票證兌換機構 ID 來設定會員級別:
- 「基本級會員獎勵」票證兌換機構 ID:456 和 789。
- 「我的會員獎勵」票證兌換機構 ID:456。
- 「黃金級會員獎勵」票證兌換機構 ID:無。
設定完成後,系統就會為這些會員級別項目設定以下賣家 ID:
- 「基本級會員獎勵」賣家 ID:44444444 和 77777777。
- 「我的會員獎勵」賣家 ID:44444444。
- 「黃金級會員獎勵」賣方 ID:無。
智慧感應功能發揮作用時的賣家驗證機制
每個核發機構帳戶都可以連結至任意數量的公開安全金鑰。接著,系統就會同步處理這些公開金鑰,並將其儲存至 Google Pay 應用程式。這樣一來,如果使用者將裝置貼近標榜具備其中一組關聯賣家 ID 的感應式刷卡機,就能順利透過 Google Pay 進行交易。
繼續以我們的範例來說明,假設核發機構也設定了以下金鑰:
iLuvCoffee | Eat-foo | Bacon-R-us | |
---|---|---|---|
核發機構 ID | 123 | 456 | 789 |
賣家 ID | 11111111 | 44444444 | 77777777 |
會員級別 | 基本級會員獎勵 | 我的會員獎勵 | 無 |
公開金鑰 | aaa | bbb | 無 |
使用者的 Google Pay 帳戶中有 iLuvCoffee 的「基本級會員獎勵」會員卡和 Eat-foo 的「我的會員獎勵」會員卡,而使用者嘗試在不同的感應式刷卡機上進行感應。
以下是這兩個會員卡類別的票證兌換機構 ID 組合:
- 「基本級會員獎勵」票證兌換機構 ID:456 和 789。
- 「我的會員獎勵」票證兌換機構 ID:456。
接下來可能會發生三種情況:
iLuvCoffee 感應式刷卡機:理論上,Google Pay 應用程式應該可以驗證並確認該部感應式刷卡機確實屬於 iLuvCoffee。不過,iLuvCoffee 並未設定為可兌換自家會員級別「基本級會員獎勵」的核發機構,因此在這個情況下,系統不會傳輸任何內容。
Eat-foo 感應式刷卡機:Google Pay 應用程式會驗證使用「bbb」公開金鑰的 Eat-foo 感應式刷卡機。假設使用者無法查看「基本級會員獎勵」或「我的會員獎勵」票證的詳細資料畫面 (例如使用者目前位於首頁分頁),那麼應用程式就會在本身擁有的票證中搜尋 Eat-foo 兌換的票證。應用程式找到「基本級會員獎勵」會員卡和「我的會員獎勵」會員卡後會顯示輪轉介面,讓使用者選擇要感應哪種會員卡來傳輸資訊。
或者,如果使用者是在看見「基本級會員獎勵」後使用智慧感應功能,則系統僅會傳輸「基本級會員獎勵」。
Bacon-R-us 感應式刷卡機:這個平台沒有任何 Bacon-R-us 公開金鑰,因此即使您將 Bacon-R-us 設為可兌換「基本級會員獎勵」卡的核發機構,系統也無法驗證感應式刷卡機,所以不會傳輸任何內容。
驗證限制
系統將票證同步處理至 Google Pay 應用程式之後,就會透過 Google 後端查詢該票證的所有票證兌換機構。如果系統為票證找到了對應至各個票證兌換機構的賣家 ID、公開金鑰和金鑰版本,就會將這些資訊儲存在使用者的 Google Pay 應用程式中。
一組賣家 ID 可以同時包含許多公開金鑰和金鑰版本,一張票證可以具備多組票證兌換機構 ID,但一組票證兌換機構 ID 只能與一組賣家 ID 相互對應。
如果 Google Pay 應用程式中沒有任何可在該感應式刷卡機兌換的票證,應用程式就不會驗證該感應式刷卡機。這項資訊可以透過賣家 ID 和所要求的金鑰版本識別。如要更新票證的公開金鑰,裝置就必須連上網際網路,這樣系統才能從 Google 後端擷取新的公開金鑰。
一張票證可以同時與多組公開金鑰相關聯。請參閱為商家啟用智慧感應功能一節,瞭解如何為同一張票證設定多組公開金鑰。
從票證傳出的值
無論物件所屬的票證類別為何,您都必須為物件設定 object.smartTapRedemptionValue
這項字串屬性。
與物件相對應的類別啟用智慧感應功能後,系統就會將這個值傳送至感應式刷卡機。
如果貴商家已與銷售點 (POS) 相互整合,您就能使用這個值來識別使用者的票證,並在票證成功與商家的感應式刷卡機感應後執行以下動作:
- 透過銷售點 (POS) 更新使用者的餘額或狀態。
- 根據銷售點 (POS) 進行的交易更新自己的後端系統。
- 發布物件更新,在 Google Pay 票證中反映現況。
感應式刷卡機和 Google Pay 應用程式會將透過 NFC 傳輸的所有資料加密,感應式刷卡機則會在智慧感應功能發揮作用後將資料解密。資料中會包含用於代表各張已傳輸票證的服務物件 NDEF 記錄,服務物件的 Service number NDEF Record
有一個酬載,其中含有在票證 object.smartTapRedemptionValue
中設定的值。這表示票證開發人員不須加密任何資料。如果票證開發人員想要進行額外的加密作業來進一步提升安全性,請設定這個值,僅允許銷售點 (POS) 系統將資料解密。此加密程序須由票證開發人員和銷售點 (POS) 聯絡人負責處理。