Apple Pay: create an Apple Pay merchant session.
POST
/api/payment-tokenization/apple-pay/session
deprecated
No permission required.
Called by the storefront's `onvalidatemerchant` callback. Proxies the supplied Apple validation URL to Apple over the platform Identity certificate and returns the merchant session payload the browser relays to `ApplePaySession.completeMerchantValidation()`. The validation URL is SSRF-guarded to Apple hosts, and the requested domain must already be verified for the merchant.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a CreateWalletPaymentSessionInput. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
providerType
required |
WalletProviderType | Defines the supported wallet provider types used for payment tokenization. one of: Unknown, ApplePay, GooglePay, NetworkToken, Paze |
merchantId
required |
string (uuid) | Identifier of the merchant the shopper is checking out with. The server reads this merchant's `DigitalWallets[]` to resolve which `WalletProviderRegistration` row to use; the resolution may land on a platform-level row (merchant inherits) or a merchant-level row (merchant brought its own integrator), depending entirely on what the merchant has bound. |
validationUrl
required |
string | Provider-supplied validation URL (Apple Pay JS supplies it via `onvalidatemerchant`; the controller MUST NOT substitute it). Conditional: When BeAValidHttpsUrl(ValidationUrl) is true. nullable |
initiativeContext
required |
string | Fully-qualified initiating domain. For Apple Pay this is the `initiativeContext`; must be one of the merchant's verified domains. nullablemax length 256 |
This request body has no documented fields.
Responses
200 OK
Body: WalletPaymentSessionOutput
Each item has these fields.
| Field | Type | Description |
|---|---|---|
providerType
required |
all of WalletProviderType | nullable |
sessionPayload
required |
string | nullable |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.