Primer's SDK will need to be configured with a PrimerSettings
object, no matter whether you're
using the drop-in or headless integration, auto or manual flow. This object greatly depends on your
payment methods configuration.
Parameters
properties
Use this to set you payment handling flow. Defaults to .auto
.
cases
If you use the manual flow, make sure you add the primerDidTokenizePaymentMethod(_:decisionHandler:)
delegate function of PrimerDelegate
, create a payment on your backend and call the decisionHandler
of the delegate function once you receive your backend\'s response.
properties
Forces the language code (e.g. en
). Defaults on your app's language code if available.
Forces the language code (e.g. US
). Defaults on your app's region code if available.
properties
⚠️ Required for some payment methods (e.g. PayPal).
This option sets the deeplink schema used when redirecting back from 3rd party applications to your app.
⚠️ Required when using Apple Pay in your integration.
properties
Set it to the merchant name that you want to be shown on the Apple Pay screen. Deprecated, use ClientSession instead.
Defaults to false
. Set to true
to let Apple Pay capture the customer's billing address.
If in some cases you don't want to present ApplePay option if the device is not supporting it set this to false
. The default value is true
.
Flag introduced to enable the initiation of the ApplePay flow even when no cards are present in the Wallet. To enable the feature, set this to false
. The default value true
.
properties
properties
⚠️ Required when using Klarna in your integration.
properties
properties
Set the iOS Universal Link that's used to call your app after an out-of-band (OOB) authentication. Supported in 3D Secure protocol versions 2.2.0 and after.
Properties
Set the Stripe publishable key.
One of:
The full text
that you would like to be displayed to the user before
they accept/decline the mandate.
A merchantName
that will be used as part of our predefined mandate template.
Set the uiOptions
for custom UI options of the Primer SDK.
properties
Set to false
to hide the loading screen before the Universal Checkout or the Vault Manager. Defaults to true
.
Set to false
to hide the screen after a successful payment, or tokenization on the vault flow. Defaults to true
.
Set to false
to hide the error screen when an error occurs. Defaults to true
.
Set the mechanism for dismissing Universal Checkout. Options are:
gestures
: The dialog can be dismissed by tapping outside or by swiping down.closeButton
: A close button is provided, allowing users to dismiss the dialog manually.
properties
Indicates whether client session caching is enabled.
When set to true
, responses from the server will be cached on the client side, allowing for faster subsequent
access to the same data within the cache duration. When set to false
, every request to the server will be
processed without utilizing any client-side cache, ensuring that the client always receives the most up-to-date data.
Example
Create a settings
object.
123456789101112131415161718192021222324252627282930313233343536373839404142
// 👇 Add thisimport PrimerSDK class MyViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 👇 Create your settings let settings = PrimerSettings( paymentHandling: .auto, localeData: PrimerLocaleData( languageCode: "en", regionCode: "US"), paymentMethodOptions: PrimerPaymentMethodOptions( urlScheme: "URL_SCHEME://", applePayOptions: PrimerApplePayOptions( merchantIdentifier: "MERCHANT_IDENTIFIER", merchantName: "MERCHANT_NAME", isCaptureBillingAddressEnabled: true, showApplePayForUnsupportedDevice: true, checkProvidedNetworks: true, shippingOptions: PrimerApplePayOptions.ShippingOptions( shippingContactFields: [.name, .emailAddress], requireShippingMethod: true ), billingOptions: PrimerApplePayOptions.BillingOptions( requiredBillingContactFields: [.postalAddress] ) ), klarnaOptions: PrimerKlarnaOptions( recurringPaymentDescription: "RECURRING_PAYMENT_DESCRIPTION"), stripeOptions: PrimerStripeOptions( publishableKey: "STRIPE_PUBLISHABLE_KEY")), uiOptions: PrimerUIOptions( isInitScreenEnabled: false, isSuccessScreenEnabled: false, isErrorScreenEnabled: false), debugOptions: PrimerDebugOptions(is3DSSanityCheckEnabled: false), clientSessionCachingEnabled: false) }}