Skip to main content

Installation

MPP SDK iOS provides functionality for Apple Pay In-App Provisioning support.

Requirements

Implementing Apple Pay In-App Provisioning requires the following pre-requisites to be met:

  • Signed agreement with Apple.
  • Special Apple Pay In-App Provisioning entitlement distributed to the Team ID by Apple - Enabling app for Apple Pay In-App Provisioning.
  • App Store app Adam ID whitelisted by Apple.
  • Device iOS version must be 11.0 or above.
  • Device must be able to connect to the Internet.
  • Apple Pay might not be supported on Jailbroken devices.

Xcode

It is recommended to use Xcode to develop and build the project.

Adding Framework and Configuration to Xcode Project

info

Nexus Repository credentials have changed when upgrading from Legacy version. Contact MeaWallet for new credentials.

  1. Download mpp-<environment>-<version>.zip.

    Use provided Nexus Repository credentials to sign in:

    • Test: https://nexus.ext.meawallet.com/repository/mpp-ios-group/ios/mpp-test/<version>/mpp-test-<version>.zip
    • Prod: https://nexus.ext.meawallet.com/repository/mpp-ios-group/ios/mpp-prod/<version>/mpp-prod-<version>.zip
  2. Unzip the archive. Archive contains iOS XCFramework - MeaPushProvisioning.xcframework.

  3. Add MeaPushProvisioning.xcframework to Frameworks, Libraries and Embedded Content section of General settings in iOS project target. Set Embed & Sign.

  4. Download mea_config.<issuer>.zip.

  5. Unzip the archive. Archive contains configuration file mea_config.

  6. Add mea_config to iOS App Resources folder and App Target. File must be included in the final app bundle. Framework automatically loads configuration from app bundle during runtime.

M1 Support

MPP SDK is supported on Apple M1 and latest Xcode version. In Xcode project Build Settings for iOS Simulator target add arm64 to Excluded Architectures to avoid the following error:

MppTestApp-iphonesimulator/MeaPushProvisioning.framework/MeaPushProvisioning,
missing required architecture arm64 in file /Library/Developer/Xcode/DerivedData/MppTestApp/Build/Products/MppTestApp-iphonesimulator/MeaPushProvisioning.framework/MeaPushProvisioning (2 slices)
Undefined symbols for architecture arm64
...
ld: symbol(s) not found for architecture arm64

Xcode Excluded arm64

Enabling App for Apple Pay In-App Provisioning

Requesting Apple Pay In-App Provisioning Entitlement

Issuers need to apply for Apple Pay In-App Provisioning entitlement to develop and test the complete push provisioning flow.

Getting Started with Apple Pay In-App Provisioning documentation:

Only production Team ID and Adam ID can receive the entitlement and can be whitelisted. To request the entitlement and whitelist for your App(s), please send the following information by email to apple-pay-provisioning@apple.com:

  • Issuer Name and Country Code
  • App Name
  • Team ID (e.g. 1ABCD2FGHI)
  • Adam ID (e.g. 123456789)

Find Team ID on Apple Developer Account Membership website.
Find Adam ID (App Apple ID) on App Store Connect App Information website.

Entitlement Configuration

Open your App ID in Apple Developer - Certificates, Identifiers & Profiles, and verify if Additional Capabilities section shows In-App Provisioning capability selected.

Apple Developer Additional Capabilities

Once Apple Pay In-App Provisioning entitlement is granted, the entitlement should be included in provisioning profile, verify in Apple Developer - Profile, In-App Provisioning appears in Enabled Capabilities of the profile. Specific provisioning profile shoud be downloaded and used to build and sign the app in Xcode.

Apple Developer Provisioning Profiles

Use Xcode to manually add the In-App Provisioning entitlement to the entitlements property list file. If the entitlements file does not exist, create a new file App.entitlements and add to Xcode project App Resources.

App.entitlements
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.payment-pass-provisioning</key>
<true/>
<key>com.apple.developer.pass-type-identifiers</key>
<array>
<string>$(TeamIdentifierPrefix)*</string>
</array>
</dict>
</plist>

PNO Pass Metadata Configuration

PassKit framework can be fully used only if the card profile sent by payment scheme token service (MDES, VTS) are configured with a correct ​Associated Application Identifie​r (​App ID​) value for associatedApplicationIdentifiers. This property allows the issuer application to see and access active payment passes.

info

App ID​ is constructed by combining the ​Team ID​ with the​ ​App Bundle ID​, for example, 1ABCD2FGHI.com.bank.app.

The following key-value should be configured for the correct implementation:

  • contactName
  • bank_app
  • associatedApplicationIdentifiers
  • associatedStoreIdentifiers
  • appLaunchURL