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

# Apple Pay

> Learn about HaiPay Apple Pay integration, including device requirements, collection API, Front-End Component, and token retrieval.

<Warning>
  **Before reading this API documentation, be sure to review the [API Description Guide](/docs/en/guide/api_description_guide)**
</Warning>

<Tip>
  Use [Payment Link](/docs/en/V20260628/api/version2/payment-link) or [Front-End Component](/docs/en/V20260628/api/version2/frontend-payment-element) to quickly integrate Apple Pay.
</Tip>

<Danger title="Region Restrictions">
  Some regions may not support Apple Pay. Please check the [unsupported regions list](/docs/en/V20260628/api/version2/restricted-regions) to confirm your target market availability.
</Danger>

## Device and Browser Requirements

<Tip title="Check Your Device and Browser Settings">
  If you cannot see the Apple Pay button on the payment page, your device or browser may not meet the following requirements.

  * You must have at least one card in your wallet.
  * You must use a compatible [Apple Pay device](https://support.apple.com/en-us/102896).
  * You must use **HTTPS** and [Supported Browsers](#supported-browsers) for testing.
  * Allow Safari to access your wallet: **Settings** > **Advanced** > **Allow websites to check for Apple Pay and Apple Card**
  * Do not use Safari private window.
  * Confirm you are in a supported Apple Pay region.
  * Confirm your device supports [biometric authentication](https://support.apple.com/en-us/102626#:~:text=iPhone%20or%20.iPad,on%20all%20devices.).
</Tip>

<Tip title="Supported Browsers">
  <a id="supported-browsers" />

  **Desktop Browsers**

  * Safari 10.1+
  * Chrome 38+

  **Mobile Browsers**

  * iOS Safari 9+ and other browsers/web views using the system WebKit engine
  * Android Chrome 38+

  **Other Notes**

  For browsers not explicitly listed above, we limit support as follows:

  * Browser must support **TLS 1.2**
  * Requires a modern browser supporting JavaScript **Promises**
  * We respond to error reports but do not actively test other browsers
</Tip>

## Transaction Limits

| Transaction Type | Limit (USD) |
| :--------------- | ----------- |
| Collection       | 0.99-1000   |

## Collection API

### Collection Apply

**Description:**

* Create a collection order

**URL:**

USD: `/usd/collect/apply`
Description: Use the appId corresponding to USD. After successful payment, the user's USD balance increases.

**Parameters:**

| Parameter       | Required | Type   | Description                                                                                                                                 |
| :-------------- | :------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------ |
| appId           | Yes      | Long   | Business ID (obtained from the dashboard; use the one corresponding to the currency in the URL)                                             |
| orderId         | Yes      | String | Merchant order number (must be unique, max 48 characters)                                                                                   |
| name            | No       | String | User name; real name recommended. Format: firstName and lastName separated by space. Example: John Doe                                      |
| phone           | Yes      | String | Real phone number (format reference: [phone format](/docs/en/guide/frequently_asked_question#phone_format))                                 |
| email           | No       | String | Real email address                                                                                                                          |
| amount          | Yes      | String | Transaction amount (2 decimal places; no punctuation such as ",")                                                                           |
| payType         | Yes      | String | **EWALLET**                                                                                                                                 |
| inBankCode      | Yes      | String | **APPLE\_PAY**                                                                                                                              |
| clientIp        | No       | String | Client IP address                                                                                                                           |
| callBackUrl     | Yes      | String | Redirect URL after successful payment                                                                                                       |
| callBackFailUrl | Yes      | String | Redirect URL after failed payment                                                                                                           |
| notifyUrl       | No       | String | Callback URL                                                                                                                                |
| subject         | Yes      | String | Payment remark                                                                                                                              |
| body            | No       | String | Remark details                                                                                                                              |
| partnerUserId   | Yes      | String | Unique user identifier (e.g. userId) for risk control. Must be real and valid. Format: digits, letters, or common symbols -\~!@#\$%&\*()\_. |
| sign            | Yes      | String | Signature                                                                                                                                   |

**Request Example**

```json theme={null}
{
  "appId": 1054,
  "orderId": "M233323000059",
  "amount": "300",
  "phone": "09230219312",
  "email": "23423@qq.com",
  "name": "test",
  "inBankCode": "APPLE_PAY",
  "payType": "EWALLET",
  "partnerUserId": "149597870",
  "sign": "af0gAHkUOyYHu9owQp8NJ4mPEeUW4vuJcjdxqLIzrVw8AvpLSjD1DXupReSG/CyuSkFRyiIvCp5u703AuGGmfgD2gKDH3Ywau41bAbG2jnHJ8mtjiSJ5iWUzanyd4Kr7d1+rETbzUl7/BkW3t0X8UUFdqpxwG8DPUjAwUKfplWDHV7koG51Ozexd80DCsmW6eWdouAZ1uNXGLYmV3ftE3BmfNRtuv1C5bfTJWrTEIOxbF6g2uYOFZTlIgrQgd7/2PsAYwQQXNz8Q8CYl4OxqCv4pXJxaLWPbR5tqZu9og5kn32C9aHW/NlU1y39vzz+4ef81yPAqUV9oHlSMSPrMmw=="
}
```

**Response Example**

```json theme={null}
{
  "status": "1",
  "error": "00000000",
  "msg": "",
  "data": {
    "orderId": "M233323000059",
    "orderNo": "6023071013539074",
    "payUrl": "",
    "clientToken": "",
    "sign": "YEoA8Y2JzQFGVzwJSqmemm1Kfv/bfyIfCqv2dp7RNzT5B72AQvdD+nt2nR4sL1HWscvmNHyVt5ovAi7MMhy3ziih/sMph+wPx4YjH3W1h5DyBvSlWvaKfKrK5ViomZ0pPYWydwRHnnRnicxToHK9S6qtSy7Q73O0hdz4hJ9p41Th3ycBl2Q9SeqSZYSY1ohcPDhdyRf2y0prb8rHgpBKzxZ5BKX/1bsE9OmsSEHAEYT8OGgko6aNe8XPAhr4G48cpWTftvnGQuzh0O65nuZRI/PF+Axt2zJCVbFHDDSREI9NlAT82ebDqhlVdxQzKE67D1nxgjb3dPmDUYHOBpmwxQ=="
  }
}
```

Response data parameters

| Parameter   | Type   | Description                                                                                                                           |
| :---------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------ |
| orderId     | String | Merchant order number (must be unique)                                                                                                |
| orderNo     | String | Platform order number                                                                                                                 |
| payUrl      | String | Payment URL                                                                                                                           |
| clientToken | String | Client token for use in the Front-End Component (see [Front-End Component](/docs/en/V20260628/api/version2/frontend-payment-element)) |
| sign        | String | Signature                                                                                                                             |

### Collection Query

**Description:**

* Query a collection order

**URL:**

USD: `/usd/collect/query`

**Parameters:**

| Parameter | Required | Type   | Description                                                                                     |
| :-------- | :------- | :----- | :---------------------------------------------------------------------------------------------- |
| appId     | Yes      | Long   | Business ID (obtained from the dashboard; use the one corresponding to the currency in the URL) |
| orderId   | Yes      | String | Merchant order number                                                                           |
| orderNo   | No       | String | Platform order number (faster response)                                                         |
| sign      | Yes      | String | Signature                                                                                       |

**Request Example**

```json theme={null}
{
  "appId": 1054,
  "orderId": "M22222000028",
  "sign": "EmyJGm3ELzG4FsOd0Krs9ncbSjo4oTGuXWML+7djYla3+VAwd9wS17z38p/7U2ZAjroO04XrE7YXcB1o76Dtyipj3h3bJzs7FYma1QNkMUdt9hh7m8U6hMsMQX7vIWHtXNwz4pbTSC75+kQWXaCew7KoE6LXECdJU8AISgNgeki2TK9R0pCfshr0Z2SZBPeuT6OvIH5LdmqgdZhuqnffGU2qnXk4KMkO848e6/WALLBR+LE1wyKHfPnYVcuKSMVYxkvKyyIL5JIPEgW0o5bh4RCbaUn3NZtyYwrU1uQ3ZDFRThm9j6XAQP+LBlmq3nOePqBtp/VDVarRaV+7FbQg3A=="
}
```

**Response Example**

```json theme={null}
{
  "status": "1",
  "error": "00000000",
  "msg": "",
  "data": {
    "orderId": "M22222000028",
    "orderNo": "6023042811314347",
    "amount": "50.00",
    "actualAmount": "0.00",
    "fee": "0.00",
    "status": 1,
    "sign": "fP433ygWVDLVGxYkVnIJj7riGq0U3vyVX+MbBAImxfGLZkZcEAHVEoVYuULZSmXAAXKRSyd67WlDNm+24pougM54ofAoH4HMtCL2tfCoBReFyz3z02AGKkrKE2xWhSpWoqfQoBvzwuN5iGMMu0s9Q1YvqiwJ8WDVIENnmiIyD8qDJN7caHTW2US14/faG+69AvnuIgJ/nu7/jogOlgEYdZdVYU7gcRDE+d47KjlFGswQkJ/h/uzV7cWtUqrtOO7ZnZ3/z33Xx8awokX36QoYcPSWAU0h+Ij9O9402HNhm1eTbYcLU0uI/z8xCAtyAI/tTyiFijpiNlxUKQj+zKsILw=="
  }
}
```

Response data parameters

| Parameter    | Type    | Description                                                                                                   |
| :----------- | :------ | :------------------------------------------------------------------------------------------------------------ |
| orderId      | String  | Merchant order number (must be unique)                                                                        |
| orderNo      | String  | Platform order number                                                                                         |
| amount       | String  | Transaction amount                                                                                            |
| actualAmount | String  | Actual amount received                                                                                        |
| fee          | String  | Fee                                                                                                           |
| status       | Integer | Status (0: not started, 1: paying, 2: success (final), 3: failed (final), -1: exception pending confirmation) |
| payTime      | String  | Payment success time (available when status=2), local time, format: yyyy-MM-dd HH:mm:ss                       |
| errorMsg     | String  | Payment failure reason (available when status=3)                                                              |
| sign         | String  | Signature                                                                                                     |

## Payment Methods

| Currency | Payment Type (payType) | Payment Code (inBankCode) | Limit     | Status    | Description |
| :------- | :--------------------- | :------------------------ | :-------- | :-------- | :---------- |
| USD      | EWALLET                | APPLE\_PAY                | 0.99-1000 | Available | Apple Pay   |

## Related Topics

* [Front-End Component](/docs/en/V20260628/api/version2/frontend-payment-element)
* [Payment Link](/docs/en/V20260628/api/version2/payment-link)
* [Google Pay](/docs/en/V20260628/api/version2/GooglePay)
