Installation
Requirements
INFO
Apple Pay In-App Provisioning entitlement
com.apple.developer.payment-pass-provisioning
only works with distribution provisioning profiles, which means that even after you obtain it, the only way to test the end-to-end push provisioning flow is by first distributing the app via TestFlight or the App Store.
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
-
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.
Double check that you added mea_config
to specific target:
M1 Support
Only if you have an issue with it!
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 [email protected]:
Issuer Name
andCountry 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 should 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/target_name>.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>
OR just
<?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/>
</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.
INFO
App ID
is constructed by combining theTeam 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
References
Updated about 1 year ago