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

# Ví điện tử

> Chấp nhận Apple Pay, Google Pay, Amazon Pay, Cash App Pay và RevolutPay để thanh toán nhanh chóng, bảo mật chỉ với một lần chạm. Tìm hiểu về việc thiết lập, xác minh domain và kiểm thử.

Ví điện tử cho phép khách hàng thanh toán chỉ với một lần chạm bằng các phương thức thanh toán được lưu trên thiết bị của họ. Ví điện tử mang lại tỷ lệ chuyển đổi cao hơn, bảo mật tốt hơn nhờ tokenization và trải nghiệm thanh toán được tinh gọn.

## Các ví được hỗ trợ

| Ví               | Khả dụng             | Tiền tệ | Gói đăng ký | Yêu cầu thiết lập |
| :--------------- | :------------------- | :------ | :---------: | :---------------- |
| **Apple Pay**    | Toàn cầu (trừ Ấn Độ) | Tất cả  |      Có     | Xác minh domain   |
| **Google Pay**   | Toàn cầu (trừ Ấn Độ) | Tất cả  |      Có     | Không có          |
| **Amazon Pay**   | Toàn cầu (trừ Ấn Độ) | USD     |    Không    | Không có          |
| **Cash App Pay** | Chỉ tại Hoa Kỳ       | USD     |    Không    | Không có          |
| **RevolutPay**   | Toàn cầu             | GBP     |    Không    | Không có          |

<Warning>
  **Hỗ trợ PayPal tạm dừng:** PayPal tạm thời không khả dụng cho các giao dịch mới.
</Warning>

## Apple Pay

Apple Pay cho phép khách hàng thanh toán bằng các thẻ được lưu trong Apple Wallet, với xác thực Face ID hoặc Touch ID.

<Info>
  Apple Pay được cung cấp cho các gói đăng ký ngay cả khi khoản phí đầu tiên là \*\*$0** (ví dụ: bản dùng thử miễn phí), để có thể thiết lập ủy nhiệm thanh toán khi đăng ký. Đối với các khoản thanh toán một lần, Apple Pay chỉ hiển thị khi số tiền lớn hơn $0.
</Info>

### Yêu cầu

* **Thiết bị:** iOS 17+, iPadOS 17+, Safari 17+ trên macOS
* **Giao thức:** Bắt buộc sử dụng HTTPS
* **Domain:** Phải được xác minh với Apple

### Xác minh domain

<Info>
  Chỉ cần xác minh domain đối với **checkout inline (nhúng)**. Checkout overlay, checkout hosted và payment links không yêu cầu xác minh.
</Info>

<Steps>
  <Step title="Open Wallet domains">
    Trong dashboard, đi đến **Settings → Payment Methods** và trên dòng **Apple Pay**, nhấp vào **Manage domains**.

    <Frame caption="Open Wallet domains from the Apple Pay row">
      <img src="https://mintcdn.com/dodopayments/TklciB6vqCMDIBgH/images/apple-pay-domains/manage-domains.png?fit=max&auto=format&n=TklciB6vqCMDIBgH&q=85&s=a96c60ee0eef744336df955f5148c573" alt="Nút Manage domains trên dòng Apple Pay trong phần cài đặt Payment Methods" style={{ maxHeight: '500px', width: 'auto' }} width="2940" height="1670" data-path="images/apple-pay-domains/manage-domains.png" />
    </Frame>
  </Step>

  <Step title="Download the domain association file">
    Từ bảng điều khiển Wallet domains, tải xuống association file.

    <Frame caption="Download the Apple Pay domain association file">
      <img src="https://mintcdn.com/dodopayments/TklciB6vqCMDIBgH/images/apple-pay-domains/wallet-domains-panel.png?fit=max&auto=format&n=TklciB6vqCMDIBgH&q=85&s=fb37db780807c0e92ffaa57d2140b91d" alt="Bảng Wallet domains với nút Download file" style={{ maxHeight: '500px', width: 'auto' }} width="2940" height="1668" data-path="images/apple-pay-domains/wallet-domains-panel.png" />
    </Frame>
  </Step>

  <Step title="Register your domain">
    Nhấp vào **Register domain** và nhập domain nơi bạn nhúng checkout (ví dụ: `shop.example.com`), sau đó nhấp **Continue**.

    <Frame caption="Register the domain where you embed checkout">
      <img src="https://mintcdn.com/dodopayments/TklciB6vqCMDIBgH/images/apple-pay-domains/register-domain.png?fit=max&auto=format&n=TklciB6vqCMDIBgH&q=85&s=9c2bf22e51c8ff188a4e11b36b24c136" alt="Biểu mẫu đăng ký domain với một domain đã được nhập" style={{ maxHeight: '500px', width: 'auto' }} width="2940" height="1672" data-path="images/apple-pay-domains/register-domain.png" />
    </Frame>
  </Step>

  <Step title="Host the file on your domain">
    Tải lên server của bạn tại:

    ```
    https://shop.example.com/.well-known/apple-developer-merchantid-domain-association
    ```

    File phải được cung cấp qua HTTPS, có thể truy cập mà không cần redirect và được cung cấp với `Content-Type: application/octet-stream` hoặc `text/plain`.
  </Step>

  <Step title="Verify the domain">
    Nhấp vào **Verify domain**. Dodo Payments kiểm tra file được lưu trữ và gửi domain của bạn đến Apple.

    <Frame caption="Verify the hosted association file">
      <img src="https://mintcdn.com/dodopayments/TklciB6vqCMDIBgH/images/apple-pay-domains/verify-domain.png?fit=max&auto=format&n=TklciB6vqCMDIBgH&q=85&s=e9fcfe5b68320a0a22c644fb935c840b" alt="Màn hình Verify your domain với đường dẫn host của association file và nút Verify domain" style={{ maxHeight: '500px', width: 'auto' }} width="2940" height="1674" data-path="images/apple-pay-domains/verify-domain.png" />
    </Frame>
  </Step>

  <Step title="Confirm it's active">
    Khi trạng thái hiển thị **Active**, Apple Pay đã hoạt động cho domain đó. Sử dụng công tắc **Enabled** để bật hoặc tắt theo từng domain.

    <Frame caption="Verified domains show an Active status">
      <img src="https://mintcdn.com/dodopayments/TklciB6vqCMDIBgH/images/apple-pay-domains/domains-active.png?fit=max&auto=format&n=TklciB6vqCMDIBgH&q=85&s=51a2bf473b1faf3db5776bbfa7140854" alt="Danh sách Wallet domains hiển thị các domain có trạng thái Apple Pay Active và các công tắc Enabled" style={{ maxHeight: '500px', width: 'auto' }} width="2940" height="1670" data-path="images/apple-pay-domains/domains-active.png" />
    </Frame>
  </Step>

  <Step title="Test the integration">
    1. Mở checkout trên thiết bị Apple
    2. Xác nhận nút Apple Pay xuất hiện
    3. Hoàn tất giao dịch kiểm thử
  </Step>
</Steps>

### Cấu hình

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['apple_pay', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

## Google Pay

Google Pay cho phép khách hàng thanh toán bằng các thẻ được lưu trong tài khoản Google của họ, với tính năng bảo vệ chống gian lận tích hợp sẵn.

### Yêu cầu

* **Trình duyệt:** Chrome (desktop/mobile), Safari, Firefox
* **Thiết bị:** Thiết bị Android có ứng dụng Google Pay
* **Cài đặt:** Bật "Allow sites to check if you have payment methods" trong Chrome

### Cấu hình

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['google_pay', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

<Info>
  Không cần xác minh domain cho Google Pay — tính năng này tự động hoạt động khi tài khoản của bạn đã live.
</Info>

## Amazon Pay

Amazon Pay cho phép khách hàng sử dụng thông tin đăng nhập và các phương thức thanh toán đã lưu trong tài khoản Amazon để có trải nghiệm checkout quen thuộc.

### Hạn chế

* **Tiền tệ:** Chỉ USD
* **Gói đăng ký:** Không được hỗ trợ
* **Khu vực:** Không khả dụng tại Ấn Độ

### Cấu hình

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['amazon_pay', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

## Cash App Pay

Cash App Pay cho phép thanh toán từ Cash App, phổ biến với người tiêu dùng Hoa Kỳ khi thực hiện thanh toán ngang hàng.

### Hạn chế

* **Khu vực:** Chỉ tại Hoa Kỳ
* **Tiền tệ:** Chỉ USD
* **Gói đăng ký:** Không được hỗ trợ

### Cấu hình

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['cashapp', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

## RevolutPay

RevolutPay cho phép người dùng Revolut trên toàn cầu thanh toán nhanh chóng và liền mạch bằng số dư tài khoản Revolut hiện có hoặc các thẻ đã liên kết.

### Hạn chế

* **Tiền tệ:** Chỉ GBP
* **Gói đăng ký:** Không được hỗ trợ

### Cấu hình

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['revolut_pay', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

## Kiểm thử

### Kiểm thử Apple Pay

<Steps>
  <Step title="Use test mode">
    Bật chế độ kiểm thử trong dashboard Dodo Payments của bạn.
  </Step>

  <Step title="Add a card to Apple Wallet">
    Thêm một thẻ thật vào Apple Wallet. Trong chế độ kiểm thử, thẻ sẽ không bị tính phí.
  </Step>

  <Step title="Complete test purchase">
    Mở checkout trên thiết bị Apple và hoàn tất quy trình Apple Pay.
  </Step>
</Steps>

<Warning>
  Apple Pay yêu cầu HTTPS. Tính năng này sẽ không xuất hiện trên `localhost` nếu chưa thiết lập SSL đúng cách.
</Warning>

### Kiểm thử Google Pay

<Steps>
  <Step title="Join the test card group">
    [Tham gia nhóm thẻ kiểm thử Google Pay](https://groups.google.com/g/googlepay-test-mode-stub-data) để tự động thêm thẻ kiểm thử vào ví của bạn.
  </Step>

  <Step title="Enable test mode">
    Sử dụng API keys kiểm thử Dodo Payments của bạn.
  </Step>

  <Step title="Complete test purchase">
    Chọn một trong các thẻ kiểm thử trong Google Pay để hoàn tất giao dịch.
  </Step>
</Steps>

### Amazon Pay & Cash App Pay

Sử dụng API keys kiểm thử của bạn và thực hiện quy trình checkout tiêu chuẩn. Các giao dịch kiểm thử sẽ được mô phỏng mà không phát sinh khoản phí thực tế.

## Hỗ trợ SDK

### Web SDK

Tất cả ví điện tử đều được hỗ trợ đầy đủ trong:

* Overlay Checkout
* Inline Checkout
* Tích hợp Direct API

### Mobile SDK

<Warning>
  **Hạn chế của React Native:** Apple Pay, Google Pay, Cash App Pay và UPI **hiện chưa được hỗ trợ** trong React Native SDK. Sử dụng checkout overlay dựa trên web cho các ứng dụng di động cần những phương thức này.
</Warning>

Để hỗ trợ mobile native, hãy cân nhắc:

* Mở checkout trong WebView
* Sử dụng [Overlay Checkout](/developer-resources/overlay-checkout) trong ngữ cảnh web
* Triển khai riêng các SDK Apple Pay / Google Pay native theo nền tảng

## Thực tiễn tốt nhất

<AccordionGroup>
  <Accordion title="Prioritize wallets on mobile">
    Người dùng mobile mong đợi Apple Pay và Google Pay. Hiển thị nổi bật các tùy chọn này trên checkout mobile.
  </Accordion>

  <Accordion title="Complete domain verification early">
    Apple Pay yêu cầu xác minh domain. Đừng chờ đến ngày ra mắt — hãy bắt đầu quy trình trong giai đoạn phát triển.
  </Accordion>

  <Accordion title="Always include card fallbacks">
    Không phải khách hàng nào cũng có ví điện tử. Luôn bao gồm `credit` và `debit` trong các phương thức được cho phép.
  </Accordion>

  <Accordion title="Test on real devices">
    Trình mô phỏng không tái hiện đầy đủ hành vi của ví. Hãy kiểm thử trên các thiết bị iOS và Android thực tế trước khi ra mắt.
  </Accordion>

  <Accordion title="Handle wallet unavailability gracefully">
    Nếu một ví không khả dụng (thiết bị không phù hợp, không có thẻ được lưu), hãy đảm bảo các tùy chọn thanh toán khác vẫn hiển thị.
  </Accordion>
</AccordionGroup>

## Khắc phục sự cố

<AccordionGroup>
  <Accordion title="Apple Pay button not appearing">
    **Kiểm tra:**

    1. Domain đã được xác minh với Dodo Payments chưa?
    2. Có đang sử dụng HTTPS không?
    3. Thiết bị có phải là iOS 17+ / Safari 17+ / iPadOS 17+ không?
    4. Khách hàng có thẻ trong Apple Wallet không?
    5. `apple_pay` đã được bao gồm trong `allowed_payment_method_types` chưa?

    **Giải pháp:** Hoàn tất xác minh domain và đảm bảo HTTPS. Kiểm thử trên thiết bị Apple thực tế.
  </Accordion>

  <Accordion title="Google Pay button not appearing">
    **Kiểm tra:**

    1. Có đang sử dụng Chrome hoặc trình duyệt tương thích không?
    2. Khách hàng có thẻ trong Google Pay không?
    3. Cài đặt Chrome "Allow sites to check payment methods" đã được bật chưa?
    4. `google_pay` đã được bao gồm trong `allowed_payment_method_types` chưa?

    **Giải pháp:** Xác minh tính tương thích của trình duyệt và thiết lập Google Pay của khách hàng.
  </Accordion>

  <Accordion title="Wallet payment failed">
    **Nguyên nhân thường gặp:**

    * Thẻ trong ví đã hết hạn hoặc không hợp lệ
    * Ngân hàng từ chối giao dịch
    * Sự cố kết nối mạng

    **Giải pháp:** Khách hàng nên xác minh thẻ trong ví hoặc thử một phương thức thanh toán khác.
  </Accordion>

  <Accordion title="Wrong device type">
    Ví điện tử chỉ xuất hiện trên các thiết bị tương thích:

    * Apple Pay: Chỉ thiết bị Apple
    * Google Pay: Trình duyệt Chrome hoặc thiết bị Android

    **Giải pháp:** Đây là hành vi dự kiến. Đảm bảo các phương án thanh toán dự phòng bằng thẻ vẫn khả dụng.
  </Accordion>
</AccordionGroup>

## Các trang liên quan

<CardGroup cols={2}>
  <Card title="Payment Methods Overview" icon="credit-card" href="/features/payment-methods">
    Xem tất cả các phương thức thanh toán được hỗ trợ.
  </Card>

  <Card title="Overlay Checkout" icon="window-restore" href="/developer-resources/overlay-checkout">
    Triển khai checkout với hỗ trợ ví điện tử.
  </Card>

  <Card title="Testing Process" icon="flask" href="/miscellaneous/testing-process">
    Hướng dẫn kiểm thử đầy đủ cho tất cả các phương thức thanh toán.
  </Card>

  <Card title="React Native Integration" icon="mobile" href="/developer-resources/react-native-integration">
    Tài liệu về Mobile SDK và các hạn chế.
  </Card>
</CardGroup>
