> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Apple Pay integration

> Compare four Apple Pay integration options and their different requirements for runtime environment, frontend work, and token handling.

This page compares four Apple Pay integration options and their different requirements for runtime environment, frontend work, and token handling. Waffo supports Apple Pay through hosted Checkout and Merchant-built payment experiences.

## Follow the recommended decision order

For most Merchants, start with one of the first three Waffo-hosted Apple Pay options. You can reuse the Apple Pay capabilities in Waffo Checkout instead of applying for an Apple Developer account, managing Apple Pay certificates, or implementing token decryption. Then select the presentation that fits your product:

1. **You can open a standalone payment page**: Redirect to Waffo Checkout. This option works for websites, mobile web pages, and apps, and provides the most direct default integration path.
2. **You need to keep the customer in your Merchant app**: Load Waffo Checkout in an App WebView.
3. **You need to keep the customer on the current web or H5 page**: Use the iframe managed by the Waffo frontend SDK, and complete domain verification and registration in advance.
4. **You must fully control the Apple Pay UI and token**: Integrate directly only when the Merchant has an Apple Developer account, Merchant ID, Apple Pay certificates, and the required PCI DSS compliance status, and your team can manage server-side decryption and ongoing compliance.

> [!TIP]
>
> Unless your product experience or compliance boundary requires the Merchant to process the Apple Pay token, use Waffo-hosted Checkout. Direct integration has the highest cost and requires the Merchant to maintain Apple accounts and certificates, PCI DSS compliance, cryptographic implementation, and long-term operations.

## Compare integration options

Here, terminal means the runtime that hosts Waffo Checkout or the Merchant's Apple Pay UI. App WebView is an app integration: the outer container is the Merchant's native or hybrid iOS app, while a WebView loads Waffo Checkout. An Android app can reuse the WebView Checkout pattern for other payment methods, but Apple Pay does not apply to an Android terminal.

| Option | Applicable scope | Supported terminals | Presentation | Integration cost | Merchant prerequisites |
| - | - | - | - | - | - |
| Redirect to Waffo Checkout | Use Waffo-hosted Checkout with the lowest integration cost; Apple Pay visibility depends on device and browser support | Desktop web, mobile web, or an iOS app that can open an external browser or top-level payment page | Waffo Checkout in the browser's top-level page | Lowest: create the order and implement the page redirect | No additional Apple Pay prerequisites |
| Load Waffo Checkout in an App WebView | Keep the payment flow in the app while Waffo handles the Apple Pay token | A native or hybrid iOS app | Waffo Checkout in an App WebView | Low: add WebView and external-navigation handling | No additional Apple Pay prerequisites |
| Load Waffo Apple Pay Checkout in an iframe | Embed Waffo Checkout in the current web page and support the required SDK integration, domain verification, and iframe adaptation | Desktop web or mobile web | An iframe managed by the Waffo frontend SDK | Medium: integrate the SDK and complete domain verification and iframe adaptation | Use `@waffo/payment-sdk`, contact Waffo technical support for domain verification and registration, and meet the iframe attribute and layout requirements |
| Integrate directly with Apple Pay | Require full control of the Apple Pay UI and token and already have the Apple account setup and required PCI DSS compliance status | A web terminal that supports Apple Pay JS or an iOS app that uses PassKit | A Merchant UI built with Apple Pay JS or PassKit | Highest: build the Apple Pay frontend, manage certificates, verify and decrypt the token on the server, and submit it in Waffo's format | A valid Apple Developer account, Merchant ID, Apple Pay certificates, domain verification for web integrations, and the required PCI DSS compliance status and ongoing controls |

## Option 1: Redirect to Waffo Checkout

Call [`/api/v1/order/create`](/docs/api-reference/order-create/create-new-order), parse [`orderAction`](/docs/api-reference/order-create/create-new-order#response-data) from the response, and open [`orderAction.webUrl`](/docs/api-reference/order-create/create-new-order#response-data) in the browser's top-level page.

Waffo Checkout displays Apple Pay in this option. You don't integrate Apple Pay JS on your page or handle an Apple Pay token. Use the Webhook or the [`/api/v1/order/inquiry`](/docs/api-reference/order-inquiry/order-inquiry) result as the source of truth for payment status.

Choose this option first when you do not need to keep the customer on the current page or inside your app. It has the fewest page-container and frontend dependencies and keeps redirects and payment-result handling consistent.

## Option 2: Load Waffo Checkout in an App WebView

Open [`orderAction.webUrl`](/docs/api-reference/order-create/create-new-order#response-data) in your App WebView. Send [`userTerminal=APP`](/docs/api-reference/order-create/create-new-order#body-user-info) when creating the order so Waffo returns a link suitable for an app.

Make sure the WebView can handle external pages or wallet navigation, and preserve the complete query string when your app passes a URL to or from the WebView.

## Option 3: Load Waffo Apple Pay Checkout in an iframe

> [!WARNING]
>
> An iframe integration must use the Waffo frontend SDK `@waffo/payment-sdk`. Before integration, contact Waffo technical support to complete Apple Pay domain verification and registration. Do not load [`orderAction.webUrl`](/docs/api-reference/order-create/create-new-order#response-data) in a plain `<iframe>`.

The frontend SDK renders and manages the Checkout iframe on your page. Your integration must also meet the Checkout iframe requirements for `allow="payment"`, Referrer Policy, and responsive layout. See [Frontend SDK usage](/docs/en/developer-docs/integration/elements/usage.md#embedded-checkout-renderiframe) and [iframe embedding considerations](/docs/en/developer-docs/integration/checkout/steps.md#iframe-embedding-considerations).

Do not launch iframe Apple Pay before domain verification and registration are complete. The Apple Pay button may not appear, or payment authorization may not proceed.

## Option 4: Integrate directly with Apple Pay

Choose this option only when the Waffo-hosted options cannot meet your UI, interaction, or responsibility-boundary requirements and the Merchant already has the Apple Developer account and certificate setup, the required PCI DSS compliance status, server-side decryption, and ongoing compliance capabilities. For the complete prerequisites, decryption steps, and pass-through format, see [Direct Apple Pay integration](/docs/en/developer-docs/integration/apple-pay/merchant-direct-integration.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.