# リーダーの登録

リーダーを場所に登録します。

決済を受け付けるには、リーダーを店舗に登録する必要があります。リーダーを店舗に登録するプロセスは、[スマートリーダー](https://docs.stripe.com/terminal/smart-readers.md)であるか、[モバイルリーダー](https://docs.stripe.com/terminal/mobile-readers.md)であるかによって異なります。

書き込み権限を持つ[ユーザー役割](https://docs.stripe.com/get-started/account/teams/roles.md)は、リーダーを登録できます。

## スマートリーダー

以下の 3 つのいずれかの方法でスマートリーダーを登録できます。

- 登録コード
- シリアル番号
- 注文番号

### 登録コード

この方法では、リーダー上でペアリングコード (登録コードとも呼ばれる) を生成する必要があります。リーダーが登録されていなければ、開封すると自動的にペアリングコードが表示されます。そうでない場合は、またはリーダーを再登録する必要がある場合は、[管理者設定](https://docs.stripe.com/terminal/payments/setup-reader/stripe-reader-s700-s710.md#settings)を使用して新しいペアリングコードを生成できます。ペアリングコードを生成したら、ダッシュボードや API に入力してリーダーを登録できます。

#### ダッシュボード

1. [Terminal Readers](https://dashboard.stripe.com/terminal/readers) ページの**リーダー**タブで、**リーダーを登録する**をクリックします。
2. リーダーでペアリングコードを入力して、**次へ**をクリックします。
3. リーダーの名前を入力します。
4. 店舗を割り当てるか、新しい店舗を作成します。
5. 詳細を確認して、**登録**をクリックします。

#### API

[Reader API](https://docs.stripe.com/api/terminal/readers/create.md) を使用して、ペアリングコードでリーダーを登録します。

```curl
curl https://api.stripe.com/v1/terminal/readers \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d registration_code={{READER_REGISTRATION_CODE}} \
  --data-urlencode "label=Alice's reader" \
  -d "location={{TERMINALLOCATION_ID}}"
```

### シリアル番号

シリアル番号を使用してリーダーを登録できます。この方法は、登録のために誰かが物理的にリーダーを持っている必要がないため、リーダーを箱から出してすぐに使用できます。この方法では、ペアリングコードを生成するためにリーダーを物理的に持っていなくても、リーダーを再登録できます。

> シリアル番号による登録では、関連性のない別の Stripe アカウントに登録されているリーダーを移すことはできません。リーダーをこのアカウントに登録するには、リーダーで登録コードを生成し、リーダーの再登録に対応している[登録コード](https://docs.stripe.com/terminal/fleet/register-readers.md#registration-code)フローを使用してください。

シリアル番号は以下の方法で確認できます：

- [ハードウェアの注文](https://dashboard.stripe.com/terminal/hardware_orders)タブのハードウェアの注文から
- リーダー自体 (リーダーの箱と背面)
- リーダーがすでに登録されている場合は、ダッシュボードのリーダーの詳細ページまたは [Reader API](https://docs.stripe.com/api/terminal/readers.md) から

#### 利用資格

- プラットフォームが[プラットフォームコントロール](https://docs.stripe.com/connect/platform-controls-for-stripe-dashboard-accounts.md)を保持していない[連結アカウント](https://docs.stripe.com/connect.md)から直接注文が行われた場合、リーダーをプラットフォームアカウントに登録することはできません。
- プラットフォームが注文を行った場合、連結アカウントが自分のアカウントに直接リーダーを自己登録することはできません。プラットフォームは、[Stripe アカウントヘッダー](https://docs.stripe.com/connect/authentication.md#stripe-account-header)または[ダッシュボードを代理で表示する](https://docs.stripe.com/connect/dashboard/managing-individual-accounts.md#view-the-dashboard-as-a-connected-account)を使用して、その連結アカウントに代わってリーダーを登録する必要があります。

> この方法では一度に最大 10 件のリーダーを登録できます。

#### ダッシュボード

シリアル番号を見つけたら、ダッシュボードの登録フローを使用してリーダーを登録できます。

1. [Terminal Readers](https://dashboard.stripe.com/terminal/readers) ページで、**リーダーを登録する**をクリックします。
2. シリアル番号を入力して、**次へ**をクリックします。複数のデバイスを一度に登録するには、複数のシリアル番号をカンマで区切って入力します。
3. 任意でリーダーの名前を選択します。
4. すでに店舗を作成している場合は、リーダーの新しい店舗を選択します。まだ作成していない場合は、**+ 新規追加**をクリックして店舗を作成します。
5. **登録する**をクリックしてリーダーの登録を完了します。

### 注文番号

> この方法は、アカウント (またはサブアカウントの 1 つ) によって注文されたリーダーにのみ機能します。リーダーがそのアカウントの注文に関連付けられていない場合、この方法は機能しません。

#### ダッシュボード

ダッシュボードでは、以下の 2 つのいずれかの方法で注文番号を使用してリーダーを登録できます。

- 注文自体から
- 登録フロー中に注文番号を入力する

#### 注文から

1. [ハードウェアの注文](https://dashboard.stripe.com/terminal/hardware_orders)ページで、ステータスが `shipped` または `delivered` の注文を見つけます。行の最後にあるオーバーフローメニュー (⋯) をクリックし、次に**登録する**をクリックします。
   - 注文にシリアル番号が割り当てられていない場合は、 **登録** をクリックすると、事前登録フローが開きます。[注文時のリーダーの事前登録](https://docs.stripe.com/terminal/fleet/register-readers.md#pre-register-readers-when-ordering)の詳細を表示。
   - 注文にシリアル番号が割り当てられている場合は、 **登録** をクリックすると、 **リーダーの登録** ページが開きます。以下のステップに進みます。
2. **リーダーを登録する**ページで、ハードウェアの注文から登録するリーダーを 1 つ以上選択して、**登録する**をクリックします。
3. 任意でリーダーの名前を選択します。複数のリーダーを選択した場合、名前はプレフィックスとして機能し、Stripe はリーダーに順番に名前を付けます (たとえば、「テストリーダー」と入力した場合、リーダーには「テストリーダー 1」、「テストリーダー 2」のように名前が付けられます)。
4. すでに店舗を作成している場合は、リーダーの新しい店舗を選択します。そうでない場合は、**+ 新規追加**をクリックして店舗を作成します。
5. **登録する**をクリックしてリーダーの登録を完了します。

#### 注文時にリーダーを事前登録する

Terminal ハードウェアを注文する際、リーダーのロケーションを事前に選択できます。Stripe は、注文の処理とシリアル番号の割り当てを行う際に、各リーダーをそのロケーションに自動的に登録します。

##### 制限事項

- 各注文では、リーダーを 1 つのロケーションにのみ事前登録できます。1 回の注文のリーダーを複数のロケーションに振り分けるには、注文にシリアル番号が割り当てられた後に、リーダーのシリアル番号を使用します。
- 事前登録はアカウント間ではサポートされていません。プラットフォームアカウントでは、連結アカウントのロケーションにリーダーを事前登録することはできません。

#### 登録フロー

1. [Terminal Readers](https://dashboard.stripe.com/terminal/readers) ページで、**リーダーを登録する**をクリックします。
2. 注文番号を入力して、**次へ**をクリックします。注文に登録可能なリーダーがある場合は、**登録**をクリックして続行します。
3. **リーダーを登録する**ページで、ハードウェアの注文から登録するリーダーを 1 つ以上選択して、**登録する**をクリックします。
4. 任意でリーダーの名前を選択します。複数のリーダーを選択した場合、名前はプレフィックスとして機能し、Stripe はリーダーに順番に名前を付けます (たとえば、「テストリーダー」と入力した場合、リーダーには「テストリーダー 1」、「テストリーダー 2」のように名前が付けられます)。
5. すでに店舗を作成している場合は、リーダーの新しい店舗を選択します。まだ作成していない場合は、**+ 新規追加**をクリックして店舗を作成します。
6. **登録する**をクリックしてリーダーの登録を完了します。

## モバイルリーダー

#### iOS

モバイルリーダー ([Stripe Reader M2](https://docs.stripe.com/terminal/readers/stripe-m2.md)、[BBPOS Chipper 2X BT](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)、[BBPOS WisePad 3](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)) は、`BluetoothConnectionConfiguration` で `locationId` を指定することにより、リーダーへの接続中に店舗に登録できます。また、検出されたリーダーから `reader.locationId` を渡すことにより、最後に使用された店舗にリーダーを登録することもできます。

#### Swift

```swift
// Call `connectReader` with the selected reader and a connection config
// to register to a location as set by your app.
var connectionConfig: BluetoothConnectionConfiguration
do {
    connectionConfig = try BluetoothConnectionConfigurationBuilder(delegate: yourMobileReaderDelegate, locationId: ""{{LOCATION_ID}}"")
    .build()
} catch {
    // Handle the error building the connection configuration
    return
}
Terminal.shared.connectReader(selectedReader, connectionConfig: connectionConfig) { reader, error in
    if let reader = reader {
        print("Successfully connected to reader: \(reader)")
    } else if let error = error {
        print("connectReader failed: \(error)")
    }
}
```

#### Android

モバイルリーダー ([Stripe Reader M2](https://docs.stripe.com/terminal/readers/stripe-m2.md)、[BBPOS Chipper 2X BT](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)、[BBPOS WisePad 3](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)) は、`BluetoothConnectionConfiguration` で `locationId` を指定することにより、リーダーへの接続中に店舗に登録できます。また、検出されたリーダーから `reader.locationId` を渡すことにより、最後に使用された店舗にリーダーを登録することもできます。

#### Kotlin

```kotlin
// Implement your MobileReaderListener
val mobileReaderListener = yourMobileReaderListener
val autoReconnectOnUnexpectedDisconnect = true

val connectionConfig = BluetoothConnectionConfiguration(
    ""{{LOCATION_ID}}"",
    autoReconnectOnUnexpectedDisconnect,
    mobileReaderListener
)

Terminal.getInstance().connectReader(
    selectedReader,
    connectionConfig,
    object : ReaderCallback {
        override fun onSuccess(reader: Reader) {
            // Placeholder for handling successful operation
        }

        override fun onFailure(e: TerminalException) {
            // Placeholder for handling exception
        }
    }
)
```

#### React Native

`connectReader` コールで `locationId` を指定して、モバイルリーダー ([Stripe Reader M2](https://docs.stripe.com/terminal/readers/stripe-m2.md)、[BBPOS Chipper 2X BT](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)、[BBPOS WisePad 3](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=bluetooth#connect-reader)) を店舗に登録します。または、検出されたリーダーから `reader.locationId` を渡すことで、最後に使用された店舗にリーダーを登録することも可能です。

```js
const handleConnectBluetoothReader = async (id) => {
  const { reader, error } = await connectReader({
    discoveryMethod: 'bluetoothScan',
    reader: selectedReader,
    locationId: {{LOCATION_ID}},
  });

  if (error) {
    console.log('connectReader error', error);
    return;
  }

  console.log('Reader connected successfully', reader);
};
```
