# Kiểm thử / Sandbox (/vi/in-store/getting-started/testing)



<Callout title="Cần thiết bị vật lý" type="warn">
  Không thể kiểm thử Tap to Pay trên trình giả lập. SDK thực hiện [các bước kiểm tra tính toàn vẹn của
  thiết bị](../security/device_security#device-attestation) và sẽ không khởi tạo được trên trình giả lập, thiết bị đã root
  hoặc thiết bị đã mở khóa bootloader; xem [Thiết bị được hỗ trợ](./supported_devices) để biết đầy đủ các
  yêu cầu phần cứng. Chế độ sandbox vẫn cần một thiết bị vật lý có hỗ trợ NFC; chỉ việc chuyển tiền là được
  mô phỏng.
</Callout>

<div className="fd-steps [&_h3]:fd-step">
  ### Bật chế độ sandbox [#enable-sandbox-mode]

  Để bắt đầu kiểm thử tích hợp mà không xử lý thanh toán thật, bạn phải khởi tạo SDK với môi trường sandbox.
  Điều này đảm bảo mọi giao dịch đều được chuyển đến môi trường sandbox và không có tiền thật nào được chuyển đi.

  <CodeBlockTabs defaultValue="kotlin" groupId="accept-language">
    <CodeBlockTabsList>
      <CodeBlockTabsTrigger value="kotlin">
        Android (Kotlin)
      </CodeBlockTabsTrigger>

      <CodeBlockTabsTrigger value="typescript">
        React Native (TypeScript)
      </CodeBlockTabsTrigger>
    </CodeBlockTabsList>

    <CodeBlockTab value="kotlin">
      ```kotlin
      // Sandbox is the default (isProduction = false)
      Accept.initialize(context = applicationContext)
      ```
    </CodeBlockTab>

    <CodeBlockTab value="typescript">
      ```typescript
      // Sandbox is the default
      Accept.initialize();
      ```
    </CodeBlockTab>
  </CodeBlockTabs>

  ### Kiểm thử nhập PIN [#test-pin-entry]

  Để kiểm thử luồng nhập PIN trong môi trường sandbox, hãy bắt đầu một giao dịch với số tiền lớn.
  Các số tiền vượt hạn mức xác minh chủ thẻ cho giao dịch không tiếp xúc sẽ yêu cầu PIN, vì vậy màn hình nhập PIN
  trực tiếp trên màn hình cảm ứng (on-glass) sẽ xuất hiện.

  <Callout title="Định dạng số tiền" type="info">
    Lưu ý rằng SDK thường nhận số tiền theo đơn vị nhỏ nhất của loại tiền tệ (số nguyên).
    Để kiểm thử `10.05`, bạn truyền `1005` làm số tiền.
  </Callout>

  ### Mô phỏng các kết quả thẻ cụ thể [#simulate-specific-card-outcomes]

  Môi trường sandbox dành riêng một tập hợp số tiền luôn kích hoạt một mã phản hồi cụ thể.
  Hãy dùng chúng để kiểm thử các luồng lỗi mà không cần một thẻ thật bị từ chối. Truyền số tiền theo đơn vị
  nhỏ nhất của loại tiền tệ như thường lệ (ví dụ `1.01` trở thành `101`).

  | Số tiền | Mã phản hồi | Tình huống               |
  | :------ | :---------- | :----------------------- |
  | `1.01`  | `00`        | Được chấp thuận          |
  | `1.07`  | `06`        | Xác thực thẻ bị từ chối  |
  | `6.05`  | `54`        | Thẻ hết hạn              |
  | `6.06`  | `55`        | Sai PIN                  |
  | `8.06`  | `75`        | Vượt quá số lần nhập PIN |
</div>
