One VTAP reading multiple NFC passes

The VTAP reader has the potential to read multiple Apple or Google passes, as the reader can be configured with up to 6 Apple VAS Merchant IDs with associated keys, and up to 6 Google Smart Tap Collector IDs and associated keys and key versions. However, the support for this feature differs significantly between Apple and Android phones.

Multiple Apple Wallet passes

You can request more than one Merchant ID from Apple, applying for each separately, one by one, and using each of these to generate and distribute passes. The VTAP reader can then be configured to read any passes associated up to 6 stored merchant IDs and keys.

Apple VAS multiple pass reading concept

Apple VAS multiple pass reading concept

Note: When an Apple iPhone is presented which contains more than one pass that the VTAP reader is configured to read, Apple Wallet will control which valid pass will be read, rather than the VTAP reader. So VTAP reader settings cannot guarantee the same pass will be read with each tap.

Multiple Google Smart Tap passes

Multiple Collector ID requests are not currently supported on Android. So, although the VTAP reader will allow you to configure multiple Collector IDs, Android phones can only use one.

Google do, however, have the concept of a 'multiple redemption issuer' (see Smart Tap communication flow | Google for Developers for more detail). This is something you can implement in the passes rather than the reader.

There is a one to one mapping between a Collector ID and an Issuer ID. A single issuer may have a number of keys recorded with Google, each identified with a key version. When any pass is stored on an Android device, in Google Wallet, it is associated with an Issuer ID, that identifies which keys stored by Google are valid for a reader to redeem or receive the pass (a Redemption Issuer ID).

Google Smart Tap multiple pass reading concept

Google Smart Tap multiple pass reading concept

The VTAP reader is configured with just one Smart Tap Collector ID, which associates it with a Google pass issuer account. A pass can be associated with any number of redemption issuers. That pass can then be received by any reader which can prove it belongs to one of the redemption issuers, based on the Collector ID and holding a private key which matches a public key held by Google for that issuer.

To allow the VTAP reader to read another class of pass you must associate that class of pass with the same Redemption Issuer ID. This class of pass will then also be read with the single Collector ID, key and key version already configured on your VTAP reader, as it is associated with the same Redemption Issuer.

This process relies on collaboration and data sharing between mobile pass issuers:

  • As the first pass issuer you will create a 'new business' through your Google Pay & Wallet Console dashboard.

    Create a new business in the Google Pay & Wallet Console Dashboard

    This creates an issuer ID and enables you to upload related public keys, resulting in a corresponding collector ID. Add that collector ID and associated private keys to your readers.

    Issuer ID and Collector ID shown on the Google Wallet API page of the Google Pay & Wallet Console

    You then create classes for different passes you want to issue, adding your issuer ID to those passes as redemption issuer. Your readers can read these passes.

  • Then share your issuer ID with the other pass issuer.

    They follow the same process, but when creating passes add both their own issuer ID and your issuer ID to their passes. After adding the corresponding collector ID and private keys to their readers, they will now be able to read passes from both issuers.

  • Finally, if you also need your readers to read the passes from both issuers, the other pass issuer will have to let you know their issuer ID.

    Just add this extra issuer ID, alongside your issuer ID, to your pass classes. Existing passes of that class will be updated (almost instantly). Now all passes issued under either issuer ID can be read by any of the readers.

This multiple pass concept affects the end user experience. If a phone user has the Google Wallet app opened to a particular pass, then only that one pass will be presented for reading with a tap. However, when an Android phone is presented which contains more than one pass that the VTAP reader is configured to read, and the Google Wallet app is only open to the Home page or the phone screen is simply unlocked, the behaviour is different. In this case the Google Wallet app will present the phone user with all passes that have the valid redemption issuer ID, so that the user can select which to pass they want to offer to the VTAP reader.

When to use multiple passes

There are a number of scenarios where reading multiple pass types with one VTAP reader might be helpful, for instance:

  • Multiple concessions operating in the same physical store using shared PoS infrastructure and VTAP readers to read promotional passes - in this case each concession would logically have a different Merchant/Collector ID to issue passes although they may all use one infrastructure provider;

  • When transitioning from the use of one pass class to another you may want to accept both classes concurrently for a period of time.

Further support

We realise it can be potentially complex to implement multiple pass reading for both Apple VAS and Google Smart Tap passes. If you need more than is included here please contact vtap-support@dotorigin.com