Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

Apple Pay enables customers with iOS devices or Macs to pay using payment methods stored in their wallet-app. Merchants need to display an Apple Pay button to eligible customers, who then get presented a payment sheet for easy review of the order and payment. Merchants can configure the look and feel of both buttons and payment sheet, but should adhere to the Apple guidelines.

Availability

CountriesPayment MethodsCurrencies

Check if Apple Pay is available in your target region

  • Visa
  • Mastercard
  • American Express
All currencies that are also supported by the PAYONE platform


UI Text Box
typetip

Please make sure you only make payment methods available for Apple Pay which are part of your contract with us.

Clearingtype / Clearingsubtype

clearingtypewallettype
wltapl

Requests

These Requests and Usecases are applicable:

RequestComment
Preauthorization
Captureonly after preauthorization
Authorization
Debitonly with amount<0 to initiate a refund
Refund

Sequence Diagram

draw.io Diagram
bordertrue
diagramNameApple Pay
simpleViewerfalse
width600
linksauto
tbstyletop
diagramDisplayName
lboxtrue
diagramWidth1781
revision23

Prerequisites

Onboarding

Merchants who want to offer Apple Pay must take these preparatory steps:

UI Steps


UI Step

Apple Developer Account

First, please make sure your organization is enrolled in the Apple Developer Program.


UI Step

Server Setup

Then, please make sure to follow the guidelines for Server Setup.


UI Step

Create Merchant Identifier and Merchant Identity Certificate

Apple uses certificates for two steps in the payment process:

  1. The Merchant Identity Certificate is used to authenticate your server when starting an Apple Pay session
  2. The Payment Processing Certififcate is used to decrypt the payment object of a successful Apple Pay session

To create the Merchant ID and Merchant Identity Certificate, please follow the instructions on this Apple site.


UI Step

Create Payment Processing Certificate

For the PAYONE Platform to be able to decrypt Apple Pay objects, we need a Payment Processing Certificate.

HIER UX DOKUMENTIEREN


Apple Pay on Your Website

How Apple Pay Works

Like other payment buttons, Apple Pay aims to skip the usual checkout steps and presents a complete payment sheet to the customer.

How Apple Pay works - High Level Flow

source: Apple


Initiating The Payment Session

For info on how to display the buttons and initiating the payment session, please refer to the Apple documentation: https://developer.apple.com/documentation/apple_pay_on_the_web/displaying_apple_pay_buttons and https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/creating_an_apple_pay_session

UI Text Box
typetip

Head to https://applepaydemo.apple.com/ for a nice overview and some demo code.

Please make sure to correctly configure your payment request for your merchant account capabilities. For example, a basic request for a merchant who can use mastercard and visa in live mode could look like this:

Code Block
languagejs
{
  "countryCode": "DE",
  "currencyCode": "EUR",
  "merchantCapabilities": [
    "supports3DS"
  ],
  "supportedNetworks": [
    "visa",
    "masterCard"
  ],
  "total": {
    "label": "Demo (Card is not charged)",
    "type": "final",
    "amount": "1.99"
  }
}

Forwarding the Data to the Payone API

After the customer has completed the payment sheet and authenticated themselves by biometric means (TouchID, FaceID), you'll receive an Apple Pay Object like this:

Code Block
languagejs
titleApple Pay Object
collapsetrue
{
   "token":{
      "paymentData":{
         "version":"EC_v1",
         "data":"3+f4oOTwPa6f1UZ6tG...CE=",
         "signature":"MIAGCSqGSIb3DQ...AAAA==",
         "header":{
            "ephemeralPublicKey":"MFkwEK...Md==",
            "publicKeyHash":"l0CnXdMv...D1I=",
            "transactionId":"32b...4f3"
         }
      },
      "paymentMethod":{
         "displayName":"Visa 1234",
         "network":"Visa",
         "type":"debit"
      },
      "transactionIdentifier":"32b...4f3"
   },
   "billingContact":{
      "addressLines":[
         "1 Street",
         ""
      ],
      "administrativeArea":"",
      "country":"United Kingdom",
      "countryCode":"GB",
      "familyName":"Appleseed",
      "givenName":"John",
      "locality":"London",
      "postalCode":"AB12 3CD",
      "subAdministrativeArea":"",
      "subLocality":""
   },
   "shippingContact":{
      "addressLines":[
         "1 Street",
         ""
      ],
      "administrativeArea":"",
      "country":"United Kingdom",
      "countryCode":"GB",
      "familyName":"Appleseed",
      "givenName":"John",
      "locality":"London",
      "postalCode":"AB12 3CD",
      "subAdministrativeArea":"",
      "subLocality":"",
      "phoneNumber":"01234 567890",
      "emailAddress":"john.appleseed@apple.com"
   }
}

Many contents of this object can be mapped to existing Server API parameters.

Section


Column


Code Block
languagejs
titleApple Pay Object
"billingContact":{
      "addressLines":[
         "1 Street",
         ""
      ],
      "administrativeArea":"",
      "country":"United Kingdom",
      "countryCode":"GB",
      "familyName":"Appleseed",
      "givenName":"John",
      "locality":"London",
      "postalCode":"AB12 3CD",
      "subAdministrativeArea":"",
      "subLocality":""
   },



Column


Awesome Icon
size36pt
iconfa-arrow-right


Column


Code Block
languagejs
titlePAYONE Server API
country=GB
lastname=Appleseed
firstname=John
street=1 Street
city=London
zip=AB12 3CD



However, the actual payment part of the object is encrypted and has to be sent to the PAYONE API in special parameters.

API Requests

Overview of Special Parameters

Apple Pay specific parameter Values

API ParameterRequiredComments
clearingtype+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft

Fixed Value


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
wlt



wallettype+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft

Fixed Value


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
apl




cardtype+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft

Allowed Values


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
V
M
A



Apple Pay Token Values

add_paydata[paymentdata_token_version]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
EC_v1



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String



add_paydata[paymentdata_token_data]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
rhHAQUrR118u[...]cwDw==



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String



add_paydata[paymentdata_token_signature]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
MIAGCSqGSIb3DQEHAqCAMIACAQE[...]AAAAAAA==



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String



add_paydata[paymentdata_token_ephemeral_publickey]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
MFkwEwYHKoZIzj0[...]Y2A==



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String



add_paydata[paymentdata_token_publickey_hash]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
ilecVF58bpB8qio[...]l6eirw2Y1v1KUCsdVgQ=



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String



add_paydata[paymentdata_token_transaction_id]+


Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Sample


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
be2e745845b31dfac7778c6e29[...]b658cbcca971c0e0



Section


Layout box
cssClasspayonePermittedSymbols
floatingleft
Format


Layout box
cssClasspayonePermittedSymbolsValue
floatingleft
String







Table of Contents
outlinetrue
indent2em
absoluteUrltrue