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
Nexus Repository credentials have changed when upgrading from Legacy version. Contact MeaWallet for new credentials.
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
- Test:
Unzip the archive. Archive contains iOS XCFramework -
MeaPushProvisioning.xcframework
.Add
MeaPushProvisioning.xcframework
toFrameworks, Libraries and Embedded Content
section ofGeneral
settings in iOS project target. SetEmbed & Sign
.Download
mea_config.<issuer>.zip
.Unzip the archive. Archive contains configuration file
mea_config
.Add
mea_config
to iOS AppResources
folder and AppTarget
. 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
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.
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.
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.
<?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 Identifier (App ID) value for associatedApplicationIdentifiers
. This property allows the issuer application to see and access active payment passes.
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