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.
| Flow | Certificate Management | Integration Effort | Description |
|---|---|---|---|
| Hosted Apple Pay | Facilero | Minimal | Create a payment intent, redirect to HPP — Apple Pay button appears automatically |
| Encrypted Payloads | Facilero | Medium | Apple Pay on your own checkout page — request session by account, submit encrypted token via S2S API |
| Decrypted Payloads | Merchant | High | Manage 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
| Step | Endpoint | Description |
|---|---|---|
| 1 | POST /api/v1/apple-pay/merchant-session-by-account | Request session, show sheet |
| 2 | POST /api/v1/payments/apm | Submit 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"
}
}
