发生智能触碰时,终端会将其收款方ID发送到GooglePay应用。GooglePay应用会检查每个卡券的兑换发卡机构,取得收款方ID,并在此ID匹配时将这些特定的卡券发送到终端。
流程如下例所示:
设置1:在上图中,Issuer_id:2018有一个类和一个对象。此发卡机构帐号供卡券开发者使用。Class_id:abc类具有redemptionIssuers['1990']对象。根据定义,Issuer_id:'1990'是代表商家fooPizza的兑换发卡机构ID。终端有一个收款方ID12345678。此ID对应至配置为兑换发卡机构1990的收款方ID。Class_id:abc的任何对象都通过收款方ID12345678传输给读取设备。
设置1.1:在上面的示例中,fooPizza和yumPie可以兑换相同的卡券object_id:123。一个类可以有多个兑换发卡机构。与发卡机构对应的兑换发卡机构帐号在其终端中具有各自的唯一收款方ID。
设置2:上图显示了该类如何将自己的发卡机构帐号设置为兑换发卡机构。Issuer_id:2018有一个类和一个对象。Class_id:abc类具有名为Issuer_id:2018的兑换发卡机构对象。根据定义,Issuer_id:2018是代表商家fooPizza的兑换发卡机构ID。终端有一个收款方ID12345678。此ID对应至配置为Issuer_id:2018的收款方ID,这也是Class_id:abc所在的位置。Class_id:abc的任何对象都通过收款方ID12345678传输给终端。
传输到GooglePay应用的行为取决于用户在其设备上看到的内容。
如果用户在GooglePay中查看卡券,然后使用智能触碰,则只要其收款方ID与请求此ID的终端匹配,系统就会传输该卡券。无论此卡券是否有效(取决于在相应类或对象上设置的属性),系统都会执行此操作。
用户可能看不到卡券,例如当他们在GooglePay的“首页”标签中,或者当他们从设备的未锁定屏幕视图中查看卡券时。如果用户没有看到卡券,并且只有一个基于收款方ID的有效可兑换卡券,则系统会传输该卡券。
如果用户有多个有效且可根据收款方ID兑换的卡券,GooglePay将执行以下任务之一:
考虑下面这个与假发卡机构及其会员卡有关的配置示例:
iLuvCoffee有两个不同的会员卡类,用于创建R-basic和R-gold这两个卡券。同时,Eat-foo有自己的MyRewards会员卡,而Bacon-R-us没有任何会员卡。
现在,假设您需要以下配置:
对于此配置,使用这些兑换发卡机构ID设置了会员卡类:
使用此配置,这些类的实例配置了以下收款方ID:
用户的GooglePay帐号中有两个会员卡:iLuvCoffee的R-basic会员卡和Eat-foo的MyRewards会员卡,用户会尝试触碰不同的终端。
为这两个会员卡类设置的兑换发卡机构如下:
以下是三种可能的结果:
iLuvCoffee终端:GooglePay应用可以在理论上进行身份验证并确认终端确实属于iLuvCoffee。但是,iLuvCoffee未设置为自己的会员卡类R-basic兑换发卡机构。因此,在这种情况下,系统不会传输任何内容。
Eat-foo终端:GooglePay应用会对使用公钥“bbb”的Eat-foo终端进行身份验证。如果我们假设用户无法查看R-basic或MyRewards卡券的详细屏幕(例如当他们正在查看“首页”标签时),该应用会搜索其拥有的由Eat-foo兑换的卡券。它会找到R-basic卡和MyRewards卡,并显示轮播界面,以便用户可以选择并触碰要传输的卡。
或者,如果用户查看R-basic和智能触碰,则系统仅会传输R-basic。
Bacon-R-us终端:在此平台中,Bacon-R-us没有任何公钥,因此即使R-basic卡已列为可兑换的发卡机构,它也无法对终端进行身份验证,并且系统不会传输任何内容。
当卡券同步到GooglePay应用时,可从Google后端查询该卡券的所有兑换发卡机构。对于该卡券,与每个兑换发卡机构对应的收款方ID、公钥和密钥版本会存储在GooglePay应用本地。
一个收款方ID可以有多个公钥和密钥版本。一个卡券可以有多个兑换发卡机构ID,这些兑换发卡机构ID与收款方ID一一对应。
如果GooglePay应用没有任何可由某个终端兑换的卡券,GooglePay应用便不会对该终端进行身份验证。卡券由收款方ID和请求的密钥版本进行标识。要更新卡券的公钥,设备必须连接到互联网,以便它可以从Google后端检索新的公钥。
每个类别的对象都需要设置此字符串属性:object.smartTapRedemptionValue。
一旦为与该对象对应的类启用了智能触碰,系统就会将该值发送到终端。
根据您与销售终端(POS)的集成,您可以使用此值来识别用户的卡券,并在他们成功触碰了商家终端后执行以下操作:
终端和GooglePay应用会处理通过NFC传输的所有数据的加密。发生智能触碰后,终端会处理数据的解密。在这些数据中,服务对象NDEF记录代表传输的每个卡券。服务对象的ServicenumberNDEFRecord具有一个有效负载,其中包含在卡券的object.smartTapRedemptionValue中设置的值。这意味着卡券开发者不必加密任何内容。如果卡券开发者需要额外加密以增加一道安全防线,请设置此值以便只有POS系统才能对其进行解密。由卡券开发者和POS联系人决定如何处理该加密过程。