Apple Pay S2S

Apple Pay lets customers pay using cards stored in their Apple Wallet, authenticated with Face ID, Touch ID, or passcode. Facilero supports three integration paths depending on how much control you need over the checkout experience.

FlowCertificate ManagementIntegration EffortDescription
Hosted Apple PayFacileroMinimalCreate a payment intent, redirect to HPP — Apple Pay button appears automatically
Encrypted PayloadsFacileroMediumApple Pay on your own checkout page — request session by account, submit encrypted token via S2S API
Decrypted PayloadsMerchantHighManage your own Apple developer account, decrypt the token, send one S2S request

1. Hosted Apple Pay

The simplest integration. The Facilero Hosted Payment Page displays a native Apple Pay button and handles session management, token collection, and payment submission automatically. No Apple Pay-specific code is required on your side.

Prerequisites

Apple Pay must be enabled for your merchant account (contact your Account Manager).

Follow the standard HPP Flow — create a payment intent, redirect the customer, and receive the result via webhook.


2. Encrypted Payloads

Use this flow when you want Apple Pay on your own checkout page without managing Apple certificates. Facilero manages the Apple Pay certificates, validates the payment session, and decrypts the token server-side.

You implement Apple Pay using the Apple Pay JS API and submit the encrypted token via the S2S API.

Prerequisites

Before using the encrypted flow, ensure:

  • Apple Pay is enabled for your merchant account
  • Your payment page domain is registered for Apple Pay
  • The domain verification file is hosted at
    {your-domain}/.well-known/apple-developer-merchantid-domain-association

Process Flow

StepEndpointDescription
1POST /api/v1/apple-pay/merchant-session-by-accountRequest session, show sheet
2POST /api/v1/payments/apmSubmit encrypted token

Step 1: Apple Pay Session

POST /api/v1/apple-pay/merchant-session-by-account


#### Example Request

```json
{
  "validationUrl": "https://apple-pay-gateway.apple.com/paymentservices/startSession",
  "origin": "https://your-checkout-page.com",
  "accountId": 825952981806376569
}

Example Response

{
  "epochTimestamp": 1775219419078,
  "expiresAt": 1775223019078,
  "merchantSessionIdentifier": "...",
  "nonce": "620bc038",
  "merchantIdentifier": "...",
  "domainName": "your-checkout-page.com",
  "displayName": "Your Store Name"
}

Step 2: Submit Payment

POST /api/v1/payments/apm

Example Request

{
  "amount": "10.00",
  "currency": "EUR",
  "requestId": "826070952327953629",
  "accountId": "825952981806376569",
  "apmPayload": {
    "paymentMethod": "APPLE_PAY",
    "paymentType": "MOBILE_WALLET",
    "token": {
      "paymentData": {
        "data": "<encrypted-payment-data>"
      }
    }
  }
}

Example Response

{
  "transactionStatus": "SUCCEED",
  "apmResponseData": {
    "actionType": "NONE"
  }
}

Apple Pay S2S payments return actionType: NONE — no redirect required.


3. Decrypted Payloads

Use this flow when you manage your own Apple developer account and certificates. You decrypt the Apple Pay token and send both encrypted and decrypted data to the API.

Prerequisites

  • Apple developer account
  • Merchant Identity Certificate
  • Payment Processing Certificate

Example Request

{
  "amount": "0.10",
  "currency": "EUR",
  "apmPayload": {
    "paymentMethod": "APPLE_PAY",
    "paymentType": "MOBILE_WALLET",
    "token": {},
    "decrypted": {
      "applicationPrimaryAccountNumber": "<card-pan>"
    }
  }
}

Example Response

{
  "transactionStatus": "SUCCEED",
  "apmResponseData": {
    "actionType": "NONE"
  }
}