marcopolo Online payment
Sign up

Apple Pay

Apple Pay

Intro

Apple Pay is Apple's mobile payment method.

Once customers add their debit/credit card, payment and shipping information to their digital Apple Pay wallet, they can purchase services and goods via iOS & Web apps. The wallet's tokenisation mechanism and the implementation of Face ID/Touch ID guarantee a safe and swift payment flow.

Our platform offers both an iOS SDK and payment data decryption mechanism, allowing you to easily add Apple Pay to your mobile app.

Our platform supports the following brands:

Overview

Payment group:
Payment product id:
302
Key benefits
  • Potential higher conversion rates for in-app payments.
  • Frictionless payment experience
  • Low PCI requirements (no sensitive or personal data shared) thanks to tokenization and Device PAN (DPAN) technology
  • Allows any standard maintenance operation depending on your acquirer
  • Huge potential in terms of usage due to global distribution of iOS devices and third-party browser support.

Payment experience

The image above shows the steps of Apple Pay flow.
  1. In supported countries, your customers can add cards to Apple Wallet on their device. They can store payment details, and their shipping and billing addresses in the app.

  2. In an app that supports Apple Pay, the Buy with Apple Pay button appears when the customer is ready to check out.

  3. Your customers can view and change their card details. The total amount appears. They confirm the payment with Face ID or Touch ID.

  4. After confirmation, the payment follows the standard purchase flow. We process the transaction.

Onboarding

  1. Sign a contract with one of the supported acquirers. We will be happy to help you during the onboarding process.
  2. Activate Apple Pay in the Merchant Portal via Business > Payment methods.
  3. Depending on the integration mode, further requirements apply. Refer to the “Integration” chapter for detailed information.

Countries & currencies

Supported countries

Supported currencies

  • Albanian lek (ALL)
  • Algerian dinar (DZD)
  • Angolan kwanza (AOA)
  • Argentine peso (ARS)
  • Armenian dram (AMD)
  • Aruban florin (AWG)
  • Australian dollar (AUD)
  • Azerbaijani manat (AZN)
  • Bahamian dollar (BSD)
  • Bahraini dinar (BHD)
  • Bangladeshi taka (BDT)
  • Barbados dollar (BBD)
  • Belarusian ruble (BYN)
  • Belize dollar (BZD)
  • Bermudian dollar (BMD)
  • Bhutanese ngultrum (BTN)
  • Boliviano (BOB)
  • Bosnia and Herzegovina convertible mark (BAM)
  • Botswana pula (BWP)
  • Brazilian real (BRL)
  • Brunei dollar (BND)
  • Bulgarian lev (BGN)
  • Burundian franc (BIF)
  • Cambodian riel (KHR)
  • Canadian dollar (CAD)
  • Cape Verde escudo (CVE)
  • Cayman Islands dollar (KYD)
  • CFA franc BCEAO (XOF)
  • CFA franc BEAC (XAF)
  • CFP franc (franc Pacifique) (XPF)
  • Chilean peso (CLP)
  • Chinese yuan (CNY)
  • Colombian peso (COP)
  • Comoro franc (KMF)
  • Congolese franc (CDF)
  • Costa Rican colon (CRC)
  • Croatian kuna (HRK)
  • Czech koruna (CZK)
  • Danish krone (DKK)
  • Djiboutian franc (DJF)
  • Dominican peso (DOP)
  • East Caribbean dollar (XCD)
  • Egyptian pound (EGP)
  • Eritrean nakfa (ERN)
  • Ethiopian birr (ETB)
  • Euro (EUR)
  • Falkland Islands pound (FKP)
  • Fiji dollar (FJD)
  • Gambian dalasi (GMD)
  • Georgian lari (GEL)
  • Ghanaian cedi (GHS)
  • Gibraltar pound (GIP)
  • Guatemalan quetzal (GTQ)
  • Guinean franc (GNF)
  • Guyanese dollar (GYD)
  • Haitian gourde (HTG)
  • Honduran lempira (HNL)
  • Hong Kong dollar (HKD)
  • Hungarian forint (HUF)
  • Icelandic króna (ISK)
  • Indian rupee (INR)
  • Indonesian rupiah (IDR)
  • Iraqi dinar (IQD)
  • Israeli new shekel (ILS)
  • Jamaican dollar (JMD)
  • Japanese yen (JPY)
  • Jordanian dinar (JOD)
  • Kazakhstani tenge (KZT)
  • Kenyan shilling (KES)
  • Kuwaiti dinar (KWD)
  • Kyrgyzstani som (KGS)
  • Lao kip (LAK)
  • Lebanese pound (LBP)
  • Lesotho loti (LSL)
  • Liberian dollar (LRD)
  • Libyan dinar (LYD)
  • Macanese pataca (MOP)
  • Macedonian denar (MKD)
  • Malagasy ariary (MGA)
  • Malawian kwacha (MWK)
  • Malaysian ringgit (MYR)
  • Maldivian rufiyaa (MVR)
  • Mauritanian ouguiya (MRO)
  • Mauritian rupee (MUR)
  • Mexican peso (MXN)
  • Moldovan leu (MDL)
  • Mongolian tugrik (MNT)
  • Moroccan dirham (MAD)
  • Mozambican metical (MZN)
  • Myanmar kyat (MMK)
  • Namibian dollar (NAD)
  • Nepalese rupee (NPR)
  • Netherlands Antillean guilder (ANG)
  • New Taiwan dollar (TWD)
  • New Zealand dollar (NZD)
  • Nicaraguan córdoba (NIO)
  • Nigerian naira (NGN)
  • Norwegian krone (NOK)
  • Omani rial (OMR)
  • Pakistani rupee (PKR)
  • Panamanian balboa (PAB)
  • Papua New Guinean kina (PGK)
  • Paraguayan guaraní (PYG)
  • Peruvian nuevo sol (PEN)
  • Philippine peso (PHP)
  • Polish zloty (PLN)
  • Pound sterling (GBP)
  • Qatari riyal (QAR)
  • Romanian new leu (RON)
  • Russian ruble (RUB)
  • Rwandan franc (RWF)
  • Saint Helena pound (SHP)
  • Salvadoran Colon (SVC)
  • Samoan tala (WST)
  • São Tomé and Príncipe dobra (STD)
  • Saudi riyal (SAR)
  • Serbian dinar (RSD)
  • Seychelles rupee (SCR)
  • Sierra Leonean leone (SLL)
  • Singapore dollar (SGD)
  • Solomon Islands dollar (SBD)
  • Somali shilling (SOS)
  • South African rand (ZAR)
  • South Korean won (KRW)
  • Sri Lankan rupee (LKR)
  • Surinamese dollar (SRD)
  • Swazi lilangeni (SZL)
  • Swedish krona/kronor (SEK)
  • Swiss franc (CHF)
  • Tajikistani somoni (TJS)
  • Tanzanian shilling (TZS)
  • Thai baht (THB)
  • Tongan paʻanga (TOP)
  • Trinidad and Tobago dollar (TTD)
  • Tunisian dinar (TND)
  • Turkish lira (TRY)
  • Turkmenistani manat (TMT)
  • Ugandan shilling (UGX)
  • Ukrainian hryvnia (UAH)
  • United Arab Emirates dirham (AED)
  • United States dollar (USD)
  • Uruguayan peso (UYU)
  • Uzbekistan som (UZS)
  • Vanuatu vatu (VUV)
  • Venezuelan bolívar (VEF)
  • Vietnamese dong (VND)
  • Yemeni rial (YER)
  • Zambian kwacha (ZMW)
  • Zimbabwe dollar (ZWD)

Integration

We offer this payment methods for the following integration modes. Learn in our dedicated guides about the individual differences

Find a high level overview in the "Process flows" chapter.

Depending on the integration method, differences apply:

Hosted Checkout Page

Add the following properties to a standard CreateHostedCheckout request:

{
   "order":{
      "amountOfMoney":{
         "currencyCode":"AUD",
         "amount":1000
      }
   },
   "hostedCheckoutSpecificInput":{
      "locale":"en_GB",
      "returnUrl":"https://yourReturnUrl.com"
   },
   "mobilePaymentMethodSpecificInput":{
      "authorizationMode":"FINAL_AUTHORIZATION",
      "paymentProductId":302
   }
}
Properties Remarks

order.amountOfMoney
     amount
     currencyCode

amount: The gross amount you want to charge for this order.
currencyCode: The ISO 4217 currency code for this amount.

hostedCheckoutSpecificInput
    locale
    returnUrl

locale: The language version of our Hosted Checkout Page and the Apple Pay payment sheet.

returnUrl: The URL we redirect your customers to after the payment has been finalised.

mobilePaymentMethodSpecificInput
     authorizationMode
     paymentProductId

authorizationMode: Set to either "FINAL_AUTHORIZATION"/"SALE" depending on whether you want to process payments in authorisation/direct sale mode.

paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter. It instructs our platform to send your customers directly to the Apple Pay payment sheet. If omitted, our platform sends your customers to the Hosted Checkout Page instead, allowing them to choose this or any other payment method that is active in your account.

Find detailed information about this object and its properties in our CreateHostedCheckoutAPI.

Server-to-server (Apple Pay on the web)

This integration method requires your server to interact with both the Apple Pay JS API and our ANZ Worldline Payment Solutions API. We provide code samples for each of these interactions as described in the "Process flows" chapter.

Step 1: Merchant validation

Your server sends a merchant validation request to the Apple Pay JS API:

session.onvalidatemerchant = async (event: ApplePayJS.ApplePayValidateMerchantEvent) => {
// Call Merchant Backend to get payment product session 
const response = await getPaymentProductSession();

Step 2: CreatePaymentProductSession

Add the following properties to a standard CreatePaymentProductSession request:

{
  "paymentProductSession302SpecificInput": {
    "domainName": "example.com",
    "displayName": "My Example Shop"
  }
}

Store the result on your server:

const paymentSession = await response.json();

Step 3: Complete merchant validation

Pass the CreatePaymentProductSession result to the Apple Pay JS API:

session.completeMerchantValidation(JSON.parse(paymentSession.paymentProductSession302SpecificOutput.session)); 

Step 4: CreatePayment request

Pass the encrypted payment data in property encryptedPaymentData via a standard CreatePayment request to our ANZ Worldline Payment Solutions API:

{
  "mobilePaymentMethodSpecificInput": {
    "paymentProductId": 302,
    "authorizationMode": "FINAL_AUTHORIZATION",
    "encryptedPaymentData": ApplePayPaymentToken.token.paymentData.data,
    "ephemeralKey": ApplePayPaymentToken.token.paymentData.header.ephemeralPublicKey,
    "publicKeyHash": ApplePayPaymentToken.token.paymentData.header.publicKeyHash,
  },
  "order": {
        "amountOfMoney": {
            "amount": 3000,
            "currencyCode": "AUD",
        }
  }
}
Properties Remarks

order.amountOfMoney
     amount
     currencyCode

amount: The gross amount you want to charge for this order.
currencyCode: The ISO 4217 currency code for this amount.

mobilePaymentMethodSpecificInput
     authorizationMode
     paymentProductId
     ephemeralKey
     publicKeyHash
     encryptedPaymentData

authorizationMode: Set to either "FINAL_AUTHORIZATION"/"SALE" depending on whether you want to process payments in authorisation/direct sale mode.

paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter.

encryptedPaymentData: The encrypted payment data.

ephemeralKey: A unique key used by Apple to encrypt data.

publicKeyHash: A unique identifier to get the key used by Apple to encrypt data.

Mobile/Client Integration

This integration method requires your server to interact with the PassKit framework, the ANZ Worldline Payment Solutions API and your app on your customers' device. We provide code samples for the interaction between your server and the ANZ Worldline Payment Solutions API as described in the "Process flows" chapter.

Mind that you need to provide your own implementation for the interaction between your server and your app/PassKit framework.

Pass the encrypted payment data in property encryptedPaymentData via a standard CreatePayment request to our ANZ Worldline Payment Solutions API:

{
  "order": {
    "amountOfMoney": {
      "amount": 3000,
      "currencyCode": "AUD",
    }
  },
  "mobilePaymentMethodSpecificInput": {
    "paymentProductId": 302,
    "authorizationMode": "FINAL_AUTHORIZATION",
    "encryptedPaymentData": PKPayment.token.paymentData.data,
    "ephemeralKey": PKPayment.token.paymentData.header.ephemeralPublicKey,
    "publicKeyHash": PKPayment.token.paymentData.header.publicKeyHash,
  }
}

    Properties Remarks

    order.amountOfMoney
         amount
         currencyCode

    amount: The gross amount you want to charge for this order.
    currencyCode: The ISO 4217 currency code for this amount.

    mobilePaymentMethodSpecificInput
         authorizationMode
         paymentProductId
         ephemeralKey
         publicKeyHash
         encryptedPaymentData

    authorizationMode: Set to either "FINAL_AUTHORIZATION"/"SALE" depending on whether you want to process payments in authorisation/direct sale mode.

    paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter.

    encryptedPaymentData: The encrypted payment data.

    ephemeralKey: A unique key used by Apple to encrypt data.

    publicKeyHash: A unique identifier to get the key used by Apple to encrypt data.


    Depending on the individual request, PKPayment may contain further order information. Apply the following mapping to include them in your CreatePayment request:

    PKPayment object order.customer property

    billingContact.emailAddress or shippingContact.emailAddress
    billingContact.phoneNumber or shippingContact.phoneNumber

    contactDetails
         emailAddress
         phoneNumber

    billingContact.name
         familyName
         givenName
         namePrefix

    personalInformation.name
         surname
         firstName
         title

    billingContact.postalAddress
         street
         city
         state
         postalCode
         isoCountryCode

    billingAddress
         street
         city
         state
         zip
         countryCode

    order.customer.shippingAddress
         name
              surname
              firstName
              title
         street
         city
         state
         zip
         countryCode

    shippingAddress
         name
              surname
              firstName
              title
          street
          city
          state
          zip
          countryCode

    Find detailed information about this object and its properties in our CreatePaymentAPI.

    Process flows

    Depending on the integration mode, differences apply:

    Hosted Checkout Page

    If your customers initiate the payment on a non-iOS device, they can still use Apple Pay. Provided they have another iOS device at hand, third-party browser support will modify the flow slightly as described in the dedicated chapter.

    Make sure to register your Merchant ID as described in the dedicated chapter.

    1. Your customers finalise an order on their device in your shop and select Apple Pay.
    2. You send this CreateHostedCheckout request to our platform.
    3. You redirect your customers via the redirectUrl to our Hosted Checkout Page.
    4. Your customers click on the "Apple Pay" button on the Hosted Checkout Page. The Hosted Checkout Page opens the payment sheet.
    5. The device opens the Apple Pay app. Your customers confirm the payment in the app.
    6. We receive the transaction result.
    7. We redirect your customers to your returnURL on their device.
    8. You request the transaction result from our platform via GetHostedCheckout or receive the result via webhooks.
    9. If the transaction was successful, you can deliver the goods/services.

    Server-to-server (Apple Pay on the web)

    If your customers initiate the payment on a non-iOS device, they can still use Apple Pay. Provided they have another iOS device at hand, third-party browser support will modify the flow slightly as described in the dedicated chapter.

    Make sure to

    1. Your customers finalise an order on their device and click on the Apple Pay button on your checkout page.
    2. The client device calls the begin method on the Apple Pay JS API.
    3. The Apple Pay JS API calls the onvalidatemerchant method when the payment sheet is shown or the QR code is scanned.
    4. Your server makes a CreatePaymentProductSession request to our platform, including the paymentProductSession302SpecificOutput.domainName you have registered.
    5. Our platform returns a paymentSession.paymentProductSession302SpecificOutput.sessionwhich is passed to your frontend.
    6. The session is then passed to the Apple Pay JS completeMerchantValidation method.
    7. The Apple Pay JS API renders the payment sheet on your checkout page.
    8. Your customers confirm the payment.
    9. The Apple Pay JS API  sends calls the onpaymentauthorized method with the encrypted Apple Pay token.
    10. Your server sends the encrypted payment data in propertymobilePaymentMethodSpecificInput.encryptedPaymentdata via this CreatePayment request to our platform.
    11. Our platform decrypts the payment data and sends it to Apple Pay to process the payment and returns the transaction result.
    12. The result is passed back as the response from the request on step 10.
    13. The completePayment method on the Apple Pay JS API is called.
    14. If the transaction was successful, you can deliver the goods/services.
    15. The customer’s device displays the transaction result on your checkout page.

    Mobile/Client Integration

    Make sure to

    1. Your customers finalise an order in your app and select click on the Apple Pay button.
    2. Your app initiates a startPayment request from the PassKit framework.
    3. Your customers iOS device renders the payment sheet.
    4. Your customers confirm the payment.
    5. The PassKit triggers the paymentAuthorizationController event in your app.
    6. Your app sends the encrypted payment data to your server.
    7. Your server send the payment data in property mobilePaymentMethodSpecificInput.encryptedPaymentdata via this CreatePayment request to our platform.
    8. Our platform decrypts the payment data and sends it to your acquirer to process the payment and returns the transaction result.
    9. The result is passed back as the response from the request on step 6.
    10. Your app calls the completePayment method.
    11. If the transaction was successful, you can deliver the goods/services.

    Testing

    Refer to our Test cases for test data and detailed instructions.

    Additional information

    Register Merchant ID (Hosted Checkout Page)

    For payments via the Hosted Checkout Page, you need to register your Merchant ID. To do so, follow these steps:

    1. Login to the Merchant Portal. Go to Business > Payment methods > How to accept payments with Apple Pay > Hosted Checkout Page.
    2. Read the Apple Pay terms and conditions by clicking on the respective link. Flag "I have read and accept terms & conditions" to approve them
    3. Click on "Activate Apple Pay". You are ready to offer Apple Pay to your customers via Hosted Checkout Page integration mode.

    • If you reject the Apple Pay terms & conditions, the payment method will not be available on our Hosted Checkout Page.
    • Apple's terms and conditions can change. Keep yourself up to date by accessing them regularly.

    Domain registration for Apple Pay on the Web

    For payments via Server-to-server, you need to register your domain. To do so, follow these steps:

    1. Login to the Merchant Portal. Go to Business > Payment methods > How to accept payments with Apple Pay > Apple Pay on the Web > Add domain.
    2. Follow the instructions as stated there and click on "Save".

    Apple Pay certificates (Mobile/Client Integration)

    For payments via Mobile/Client Integration, you need to create Apple certificates. To do so, follow these steps:

    1. Login to the Merchant Portal. Go to Business > Payment methods > How to accept payments with Apple Pay > Mobile SDKs and Server-to-Server.
    2. Follow the instructions on the page to
      a) Download the certificate signing request (CSR) on that page.
      b) Create the Apple Pay certificate on the Apple developer portal using that CSR.
      c) Upload the generated certificate via the "Upload certificate" button.
    • Make sure to create separate certificates for our test / production environment.
    • Apple allows you to create a maximum of three certificates per Merchant ID. Mind that only one certificate per Merchant ID can be active. Use the three slots to manage expiring certificates.
    • Due to this limitation, we recommend using different Merchant ID for our test / production environment.
    • Apple certificates expire after two years. Make sure to timely create and upload a new one. We will notify you via e-mail as soon as a certificate is about to expire.

    Third-party browser support

    Even if a payment has been initialised on a non-iOS device, your customers can still use Apple Pay via a second iOS device.
    Our platform implements third-party browser support, detecting whether the device initialising the payment is an iOS or not. If the latter applies, the process flows is adapted as follows:

    1. Your customers finalise an order on their non-iOS device.
    2. Our platform displays a QR code on the Hosted Checkout Page.
    3. Your customers scan the displayed QR code with their mobile/tablet iOS device.
    4. The mobile/tablet iOS device opens the payment sheet. Your customers confirm the payment.
    5. We redirect your customers to your returnURL on their non-iOS device.

    Certificate sharing

    For payments via Mobile/Client Integration, you need to create Apple certificates. By default, certificates can be used only for single account.
    However, our platform allows you to share one Apple certificate with multiple accounts. Contact us to make this happen.

    Was this page helpful?

    Do you have any comments?

    Thank you for your response.