단말기와 Google 월렛 앱 간의 통신
단말기는 패스 사용 발급기관 ID에 매핑된 수집기 ID로 자신을 식별합니다. 스마트 탭이 발생하면 단말기는 수집기 ID를 사용자의 기기로 전송합니다. 그러면 Google 월렛 앱이 저장된 각 패스의 클래스 ID와 수집기 ID를 검사합니다. 일치하는 항목이 하나 이상 발견되면 Google 월렛 앱이 일치하는 패스를 단말기로 전송합니다. 설정 세부정보는 판매자 구성을 참조하세요.
예 1: 하나의 패스 사용 발급기관
앞의 다이어그램에는 두 가지 발급기관이 있습니다.
- 발급기관
2018
은(는) 패스 개발자(애그리게이터라고도 함)입니다. - 발급기관
1990
은(는) 판매자 fooPizza(쿠폰 사용 발급기관이라고도 함)입니다.
패스 사용 발급기관인 fooPizza는 패스에 스마트 탭 기능을 사용 설정하려고 합니다 (애그리게이터에서 관리). 판매자 단말기에 스마트 탭을 사용 설정하려면 애그리게이터 및 패스 사용 발급기관이 다음 단계를 완료해야 합니다.
단계 | 역할 | 설명 |
---|---|---|
1 | 애그리게이터 | 패스 클래스와 객체를 만듭니다 (다이어그램에서 각각 abc 와 123 ). |
2 | 애그리게이터 | 패스 클래스의 redemptionIssuers 속성에 패스 사용 발급기관의 ID를 포함합니다. 이를 통해 발급기관 ID 1990 에서 이 클래스를 참조하는 패스 객체를 사용할 수 있음을 Google 월렛에 알립니다. |
3 | 패스 사용 발급기관 | 수집기 ID를 가져옵니다 (다이어그램, 12345678 ).
|
4 | 패스 사용 발급기관 | 사용할 각 스마트 탭 지원 단말기에서 회수자 ID 12345678 를 설정합니다. 클래스 ID가 abc 이고 수집기 ID가 12345678 인 모든 객체가 리더에 전달됩니다. |
예 2: 여러 개의 패스 사용 발급기관
단일 패스 클래스에는 여러 개의 패스 사용 발급기관이 있을 수 있습니다. 특정 패스 클래스를 사용하려면 클래스의 redemptionIssuers
속성에 패스 사용 발급기관의 ID를 포함해야 합니다. 그런 다음 각 패스 사용 발급기관에는 해당 스마트 탭 지원 단말기에서 구성되는 고유 회수자 ID가 있습니다.
앞의 다이어그램에는 세 가지 발급기관이 있습니다.
8088
발급기관이 패스 개발자 (애그리게이터)입니다.1990
발급기관은 fooPizza (사용 발급기관)라는 판매자입니다.- 발급기관(
2018
)이 판매자인 yumPie(사용 발급기관)입니다.
애그리게이터 및 패스 사용 발급기관은 다음 단계를 완료하여 판매자 단말기에서 스마트 탭을 사용 설정해야 합니다.
단계 | 역할 | 설명 |
---|---|---|
1 | 애그리게이터 | 패스 클래스와 객체를 만듭니다 (다이어그램에서 각각 abc 와 123 ). |
2 | 애그리게이터 | 패스 클래스의 redemptionIssuers 속성에 패스 사용 발급기관의 ID를 포함합니다. 이를 통해 발급기관 ID 1990 와 2018 가 이 클래스를 참조하는 패스 객체를 사용할 수 있음을 Google 월렛에 알립니다. |
3 | 패스 사용 발급기관 | 수집기 ID를 가져옵니다 (다이어그램의 경우 fooPizza의 경우 12345678 , yumPie의 경우 18802001 ). |
4 | 패스 사용 발급기관 | 사용할 스마트 탭 지원 단말기마다 해당하는 회수자 ID를 설정합니다. 클래스 ID가 abc 이고 일치하는 수집기 ID가 있는 모든 객체가 리더에 전달됩니다. |
예 3: 애그리게이터 없음
패스 클래스는 동일한 발급기관 계정 내에서 개발하고 발급할 수 있습니다. 이 경우 여러 패스 사용 발급기관의 패스 클래스를 관리하는 애그리게이터가 없습니다. 특정 패스 클래스를 사용할 수 있으려면 패스 개발자가 클래스의 redemptionIssuers
속성에 발급기관 ID를 포함해야 합니다.
그러면 패스 개발자는 회수자 ID를 받아 스마트 탭 지원 단말기에서 구성해야 합니다.
패스 개발자는 다음 단계를 완료하여 판매자 단말기에 스마트 탭을 사용 설정해야 합니다.
단계 | 역할 | 설명 |
---|---|---|
1 | 패스 개발자 | 패스 클래스와 객체를 만듭니다 (다이어그램에서 각각 abc 와 123 ). |
2 | 패스 개발자 | 패스 클래스의 redemptionIssuers 속성에 발급기관 ID를 포함합니다. 이렇게 하면 발급기관 ID 2018 가 이 클래스를 참조하는 패스 객체를 사용할 수 있음을 Google 월렛에 알립니다. |
3 | 패스 개발자 | 수집기 ID를 가져옵니다 (다이어그램, 12345678 ).
|
4 | 패스 개발자 | 사용할 스마트 탭 지원 단말기마다 해당하는 회수자 ID를 설정합니다. 클래스 ID가 abc 이고 일치하는 수집기 ID가 있는 모든 객체가 리더에 전달됩니다. |
사용자 환경 및 행동
단말기와 Google 월렛 앱 간에 전송되는 동작은 사용자와 당시 사용자가 Google 월렛 앱과 상호작용하는 방식에 따라 달라집니다.
시나리오 1: 사용자가 특정 패스를 엽니다.
단계 | 역할 | 설명 |
---|---|---|
1 | 사용자 | Google 월렛 앱에서 특정 패스를 선택합니다. |
2 | 사용자 | 스마트 탭 지원 단말기를 탭합니다. |
3 | 터미널 | (수집기 ID 일치) 패스가 터미널로 전송됩니다. (회수기 ID가 일치하지 않음) 패스가 단말기로 전송되지 않습니다. |
시나리오 2: Google 월렛 홈 탭 또는 잠금 해제된 화면 보기
단계 | 역할 | 설명 |
---|---|---|
1 | 사용자 | Google 월렛 앱에서 홈 탭을 열거나 기기 화면을 잠금 해제합니다. |
2 | 사용자 | 스마트 탭 지원 단말기를 탭합니다. |
3 | 터미널 | (유효한 단일 수집기 ID 일치) 패스가 단말기로 전송됩니다.
(여러 유효한 회수자 ID 일치) 유효한 패스 캐러셀을 표시하고 사용자가 선택한 패스를 전송합니다. |
패스의 유효성은 패스 객체의 특정 구성에 따라 다릅니다. 다음 패스 객체 속성을 확인하세요.
state
validTimeInterval
스마트 탭 회수 예
다음 표에서는 이 예시에서 사용할 발급기관과 패스를 설명합니다.
판매자 이름 | ILuvCoffee | 커피-푸 | Mocha-R-Us |
---|---|---|---|
발급기관 ID | 123 |
456 |
789 |
수집기 ID | 11111111 |
44444444 |
77777777 |
포인트 등급 | R-베이직 | 내 리워드 | |
R-골드 |
ILuvCoffee에는 R-Basic과 R-Gold라는 두 가지 포인트 등급이 있습니다. 한편 Coffee-Foo에는 단일 등급의 포인트 제도인 My 보상이 있으며 Mocha-R-Us에는 포인트 제도가 없습니다.
판매자는 교차 프로모션 캠페인의 일환으로 고객에게 다음 옵션을 제공하려고 합니다.
- R-Basic 등급 고객은 스마트 탭을 사용하여 Coffee-Foo 및 Mocha-R-Us에서 포인트 멤버십을 사용할 수 있습니다.
- R-골드 등급 고객은 스마트 탭 사용이 필요하지 않습니다.
- MyReward 고객은 스마트 탭을 사용하여 Coffee-Foo에서만 포인트 멤버십을 사용할 수 있습니다.
이 캠페인이 작동하려면 각 포인트 클래스에 클래스 정의의 redemptionIssuers
속성에 설정된 다음 값이 필요합니다.
포인트 클래스 | 패스 사용 발급기관 ID |
---|---|
R-베이직 | ["456", "789"] |
R-골드 | [] |
내 리워드 | ["456"] |
이 구성을 사용하면 이러한 클래스를 참조하는 모든 패스 객체에는 다음과 같은 수집기 ID가 있습니다.
- R-Basic:
44444444
,77777777
- R-Gold: 회수자 ID가 포함되지 않습니다.
- 내 리워드:
44444444
탭 시 수집기 인증
발급기관 구성의 일환으로 하나의 발급기관 계정에 연결된 공개 키가 여러 개 있을 수 있습니다. 이러한 공개 키는 Google 월렛 앱에 저장되며, 사용자가 스마트 탭이 사용 설정된 단말기에서 기기를 탭할 때 인증에 사용됩니다. 이 인증 단계는 앱이 단말기에서 공지하는 값과 일치하는 수집기 ID를 가진 사용자에게 발급된 패스 객체를 찾은 후에 발생합니다.
이전 섹션의 예를 계속 이어서, 다음 표에서는 각 발급기관과 연결된 공개 키를 설명합니다.
판매자 이름 | ILuvCoffee | 커피-푸 | Mocha-R-Us |
---|---|---|---|
발급기관 ID | 123 |
456 |
789 |
수집기 ID | 11111111 |
44444444 |
77777777 |
포인트 등급 | R-베이직 | 내 리워드 | |
R-골드 | |||
공개 키 | aaa | bbb |
고객의 Google 월렛 앱에 저장된 다음과 같은 포인트 카드가 있는 예입니다.
- ILuvCoffee: R-Basic
- Coffee-Foo: 내 리워드
이전과 마찬가지로 각 포인트 클래스의 redemptionIssuers
속성에서 다음 값이 설정됩니다.
- R-Basic:
["456", "789"]
- 내 리워드:
["456"]
사용자가 각 판매자의 단말기에서 기기를 탭하면 다음과 같은 세 가지 결과가 발생할 수 있습니다.
판매자 단말기 | 결과 |
---|---|
ILuvCoffee | ILuvCoffee (사용 발급기관 ID 123 )는 현재 자체 포인트 클래스인 R-Basic을 사용하도록 구성되어 있지 않으므로 아무것도 전송되지 않습니다. |
커피-푸 | Google 월렛 앱은 bbb 공개 키를 사용하여 Coffee-Foo 터미널에 인증합니다. 사용자가 기기에서 보고 있는 현재 화면에 따라 사용자 환경 섹션에 나열된 시나리오 중 하나가 발생합니다. |
Mocha-R-Us | 이 예시에는 Mocha-R-Us의 공개 키가 없습니다. R-Basic 프로그램은 판매자를 통해 사용할 수 있지만 단말기에 인증할 수 없으므로 아무것도 전송되지 않습니다. |
인증 한도
패스가 사용자의 Google 월렛 앱과 동기화되면 해당 패스의 모든 패스 사용 발급기관이 Google 월렛 백엔드에서 조회됩니다. 각 패스 사용 발급기관의 회수자 ID, 공개 키, 키 버전은 Google 월렛 앱에 로컬로 저장됩니다.
패스 하나에 여러 개의 패스 사용 발급기관 ID가 있을 수 있습니다. 각각은 특정 판매자의 특정 수집기 ID에 매핑됩니다. 또한 단일 수집기 ID에 대한 여러 개의 공개 키와 키 버전이 있을 수 있습니다.
Google 월렛 앱은 단말기에서 사용할 수 있는 패스가 없으면 해당 단말기에 대한 인증을 시도하지 않습니다. 이는 수집기 ID와 공개 키 버전을 기준으로 합니다. 패스의 공개 키를 업데이트하려면 터미널이 Google 월렛 백엔드에서 새 공개 키를 가져올 수 있도록 인터넷에 연결되어 있어야 합니다.
단일 패스는 한 번에 여러 공개 키와 연결될 수 있습니다. 동일한 패스에 여러 공개 키를 설정하는 방법은 판매자 구성을 참조하세요.
탭 중 값 전송
탭 중에 패스에서 데이터를 전송하려면 패스 객체의 smartTapRedemptionValue
를 설정해야 합니다. 객체에 해당하는 클래스가 스마트 탭을 사용할 수 있게 되면 이 값이 단말기로 전송됩니다.
통합 및 사용 사례에 따라 이 값은 사용자의 패스를 식별하고 다음과 같은 필요한 트랜잭션 로직을 실행하는 데 사용됩니다.
- 사용자의 잔액 또는 상태 업데이트
- 트랜잭션을 기반으로 자체 백엔드 업데이트
- 기기에서의 사용자 상태 변경사항이 반영되도록 Google Wallet API를 사용하여 패스 객체에 업데이트를 실행합니다.
단말기와 Google 월렛 앱은 NFC를 통해 전송되는 모든 데이터의 암호화를 처리합니다. 단말기는 스마트 탭이 발생한 후 데이터의 복호화를 처리합니다. 데이터 내에는 전송된 각 패스를 나타내는 서비스 객체 NDEF 레코드가 있습니다. 서비스 객체의 Service number NDEF Record
에는 패스 객체의 smartTapRedemptionValue
속성에 설정된 값이 포함된 페이로드가 있습니다. 즉, 패스 개발자는 전송된 데이터의 암호화를 처리할 필요가 없습니다.
다른 보안 레이어를 추가하려면 전송된 데이터 (예: POS)를 수신하는 시스템만 데이터를 복호화할 수 있도록 smartTapRedemptionValue
속성을 설정하면 됩니다. 그러나 암호화/복호화 프로세스는 패스 개발자와 POS 관리자가 담당합니다.