Preparing for Development

Pre-requisites

IOS MINIMUM VERSION

In order to support all required Card Schemes, the minimum supported iOS version for
Payment Device SDK for iOS has been updated to 17.4.

APPLE SANDBOX ACCOUNT

To develop an application utilizing Apple's Tap to Pay technology, the device must be signed
into a developer sandbox account.

These can easily be created from App Store Connect under “Users And Access > Sandbox”

ENTITLEMENTS

Apple Tap to Pay requires additional entitlements, which must be requested by the Apple
Developer Account Holder. These entitlements are divided into two types:

  1. Developer Entitlements: Enables application development on devices registered
    under the Apple Developer account.
  2. Publishing Entitlements: Used when the application is ready for release on the
    Apple App Store.

The form for requesting entitlements can be found here.

To access the request form, you must have an organization-level Apple Developer account
and be logged in as the Account Holder. Additionally, you will need to verify that NMI is your approved Payment Service Provider (PSP) and confirm the regions where you plan to deploy your application.

In order to receive Publishing Entitlements from Apple your app must comply with Apple’s
user experience requirements for Tap To Pay applications which can be found in Appendix B Apple User Experience Requirements.

When you’re ready to apply for Publishing Entitlements simply reply to the email which
supplied the development entitlements and quote the Case ID assigned when submitting your request for entitlements. Apple will be in touch with information on how to submit your application for review.

For full details please refer to the Appendix B: Apple User Experience Requirements.

RESTRICTIONS

Tap To Mobile is an always online feature and can not function without an internet
connection at the point of interaction.

Offline transactions are not supported as they are restricted by payment industry's security
standards for Tap To Mobile transactions.

GEOFENCING RESTRICTIONS

Tap to Mobile employs geofencing as a fraud prevention measure. To ensure compliance

during development, the API key used for testing must be associated with a merchant

account registered in the same location where you are developing your application.

Additionally, transaction processing is currently restricted to the following countries:

  • United States (US)
  • United Kingdom (UK)
  • All EEA countries (including Romania, Ukraine, and Poland)
  • Canada
  • China
  • Indonesia
  • Brazil
  • South Africa
  • India
  • Vietnam
  • Philippines
  • Mexico
  • Argentina
  • Israel

If you require support for additional countries, please contact your account manager.

Project Setup

DEVELOPMENT ENTITLEMENTS

The development entitlement allows you to build and test your Tap to Pay on iPhone
implementation. Once you’ve received your developer entitlements you’ll need to add the following capabilities to your application’s Identifier:

  • App Attest
  • NFC Tag Reading
  • Tap To Pay on iPhone

Tap To Pay on iPhone will appear once your development entitlements have been approved
by Apple at which point it’ll appear under “Additional Capabilities” when configuring your application’s Identifier.

Once the application’s Identifier is configured you must create a new provisioning profile
linked to it and link to it in your xCode project.

Within your application’s xCode project you will then need to update your entitlements file
with the following:

KeyTypeValue
App Attest EnvironmentStringdevelopment
com.apple.developer.proximity-reader.payment.acceptanceBooleanYES
Near Field Communication Tag Reader Session FormatsArray1 Item
Item 0 (Near Field Communication Tag Reader Session Formats)StringTag-Specific Data Protocol (TAG)

If your project doesn’t contain an entitlements file you can create one by:

  1. Choose File > New > File, select Property List from the Resource section, and click
    Next.
  2. Enter your_project.entitlements as the filename. Replace your_project
    with the name of your project, then click Create.
  3. In the project editor, choose Build Settings.
  4. Click All and Combined in the scope bar.
  5. Use the search box to find the Code Signing Entitlements setting.
  6. Enter the full path to the .entitlements file from step 3 as the setting’s value.

As part of your development time, you should factor in adhering to Apple’s User Experience
requirements which can be found in Appendix B of this document. You’ll need to prove you’re following these in order to receive your Publishing Entitlements.

LINKING DEPENDENCIES

In addition to the Payment Device SDKs usual dependencies, you will also need to link
against the following to work:

  • libChipDNAMobileAPI.a
  • CloudCommerce.xcframework

This means in your project you should be linked against the following:

  • libChipDNAMobileAPI.a
  • CloudCommerce.xcframework
  • libSqlCipher-4.6.1.a
  • CoreLocation
  • CoreData
  • ExternalAccessory
  • MessageUI
  • SystemConfiguration
  • Security
  • AVFoundation
  • MediaPlayer
  • CoreAudio
  • AudioToolbox
  • CoreBluetooth

When adding the CloudCommerce.xcframework do so from your application target under
the general section in “Frameworks Libraries and Embedded Content” and ensure that the Embed drop down is set to “Embed and Sign.”

Please look at the Payment Device SDK for iOS - API for Release Documentation supplied
within the release bundle for a more detailed breakdown of required dependencies for running the Payment Device SDK.

ADDITIONAL PERMISSION REQUIREMENTS

During configuration the Payment Device SDK will perform a suite of security checks,
including requiring the integrating application to be granted location permissions. The recommended level of permission is CLAuthorizationStatus.authorizedWhenInUse.

Apple has extensive documentation on the iOS CLLocationManager available here.

UPDATING INFO.PLIST

PRODUCT_TEAM_IDENTIFIER

To properly attest the security of the application when using Tap To Mobile the team
identifier must be added to the application info.plist.

Permission usage descriptions

When requesting location permissions, iOS will look for the following within the applications
info.plist:

  • Privacy - NFC Scan Usage Description
  • Privacy - Location When In Use Usage Description
  • Privacy - Location Always and When In Use Usage Description

Example

KeyTypeValue
PRODUCT_TEAM_IDENTIFIERString<your team identifier>
Privacy - NFC Scan Usage DescriptionStringThis application needs to read NFC card & tags in order to accept payments.
Privacy - Location When In Use Usage DescriptionStringThis application needs to check that you are operating the app from a permitted location.
Privacy - Location Always and When In Use Usage DescriptionStringWe'd like to access your location to store it with each transaction.