> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/push-provisioning/ja/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md).

# カードのデジタル化状態を取得する

## カードのデジタル化状態を取得する

このガイドを使用して、デバイス上の特定のウォレットでカードがすでにデジタル化されているかどうかを判断します。イシュアアプリケーションはこの状態を使用して、表示するかどうかを判断します **ウォレットに追加** または **カードを有効化**、または両方を非表示にします。

通常、このAPIは次のタイミングで呼び出します:

* イシュアアプリケーションの起動時、または
* エンドユーザーがカード詳細画面を開いたとき。

プッシュ・プロビジョニング全体のフローについては、 [デジタルウォレットへのプッシュを実装する](/push-provisioning/ja/implement-push-provisioning/implement-push-to-digital-wallets.md).

### 概要

イシュアアプリケーションはD1 SDKを使用して、モバイルデバイス上のカードのトークン化状態を確認します。返された状態に基づいて、イシュアアプリケーションはUIを更新します:

* `DIGITIZED` – このデバイスのウォレットではカードはすでにトークン化されています。非表示にする **ウォレットに追加** と **カードを有効化**.
* `NOT_DIGITIZED` – カードはトークン化されていません。表示する **ウォレットに追加**.
* `PENDING_IDV` – デジタルカードは作成されていますが、ID\&V待ちです。表示する **カードを有効化** アプリ内認証がサポートされている場合。

{% hint style="warning" %}
**注意**

* カードがまだ次の状態として表示される場合 `NOT_DIGITIZED` デジタル化後は、イシュアアプリケーションがTSPポータルで正しく設定されていることを確認してください。
* Samsung Payでは、一部のイシュアはポータルに複数のイシュア名を登録する必要があります。APIで使用するイシュア名がポータルに登録された名前と一致していることを確認してください。完全一致のみが返されます。次を参照してください。 [Samsung FAQ](https://developer.samsung.com/pay/native/sdk-faq.html) トラブルシューティングのヒント
  {% endhint %}

### フロー

<figure><img src="/files/5ff6b98773b532dc3b5a97e66551a68f4cbc5601" alt=""><figcaption></figcaption></figure>

#### シーケンス図

**前提条件**

* コンシューマーアカウントとカードがD1に登録されている
* SDKが正しく初期化されている
* イシュアアプリがD1 SDKのログインAPIを呼び出している

<figure><img src="/files/d90c6db7750ede89dd8e33ab59a25167f1463b80" alt="High-level sequence for getting the card digitization state"><figcaption><p>ウォレットからカードのデジタル化状態を取得するための高レベルなシーケンス。</p></figcaption></figure>

### プラットフォーム統合

{% tabs %}
{% tab title="Android" %}
Android 2.4.0以降では、D1 SDKは次を公開します: `D1PushWallet.getCardDigitizationState()` 特定のウォレット（Google PayまたはSamsung Pay）のカードのトークン化状態を確認するためのAPI。

考えられる状態は次のとおりです:

* `DIGITIZED`\
  カードはすでにトークン化されています。メッセージや操作は不要です。
* `NOT_DIGITIZED`\
  次の **Google/Samsung Payに追加** ボタンを表示します。Google Payの [ブランドガイドライン](https://developers.google.com/pay/issuers/apis/push-provisioning/android/branding-guidelines?hl=en) 詳細については、次を参照してください。次のステップは、 [デジタルウォレットにプッシュ](/push-provisioning/ja/implement-push-provisioning/implement-push-to-digital-wallets/push-to-the-digital-wallet.md).
* `PENDING_IDV`\
  次の **カードを有効化** ボタンを表示します。イシュアアプリケーション認証がサポートされている場合です。認証に成功したら、 `activateDigitalCard()` を呼び出してデジタルカードを有効化します。

完全なAPIシグネチャについては、D1 SDKリファレンスを参照してください。

```kotlin
fun checkCardDigitizationState_v2_4_0(d1Task: D1Task, cardID: String) {
    val d1PushWallet = d1Task.d1PushWallet
    val wallet = OEMPayType.GOOGLE_PAY // it can be SAMSUNG_PAY

    val callback: D1Task.Callback<CardDigitizationState> = object : D1Task.Callback<CardDigitizationState> {

        override fun onSuccess(state: CardDigitizationState) {
            // 状態値に基づいてUIを更新します。

            // 「Google/Samsung Payに追加」ボタンを非表示にします。
            // 「カードを有効化」ボタンを非表示にします。
            when (state) {
                NOT_DIGITIZED -> {
                    // 「Google/Samsung Payに追加」ボタンを表示します。
                }
                PENDING_IDV -> {
                    // 1. 「カードを有効化」ボタンを表示します。
                    // 2. エンドユーザーを認証します。
                    // 3. 有効化を実行します: d1PushWallet.activateDigitalCard(cardID, wallet, callback)
                }
                DIGITIZED -> {
                    // 「Google/Samsung Payに追加」ボタンを非表示にします。
                }
                else -> {
                    // 何もしません。
                }
            }
        }

        override fun onError(exception: D1Exception) {
            // D1 SDK統合 – エラー管理のセクションを参照してください。
        }
    }
    d1PushWallet.getCardDigitizationState(cardID, wallet, callback)
}
```

{% endtab %}

{% tab title="iOS" %}
iOSでは、D1 SDKは次を返します: `CardDigitizationResult` オブジェクトには次が含まれます:

* 次の `CardDigitizationState`、および
* オプションの [`PKPass`](https://developer.apple.com/documentation/passkit/pkpass) オブジェクト（`localPKPass` と `remotePKPass`）を、次のようなデバイス固有の情報を表示するために使用できます: `deviceName`.

考えられる状態は次のとおりです:

* `digitized`\
  カードはすでにトークン化されています。非表示にする **Apple Walletに追加**.
* `notDigitized`\
  次の [`PKAddPassButton`](https://developer.apple.com/documentation/passkit/pkaddpassbutton)。この状態は、少なくとも1つのデバイス（たとえばiPhoneまたはペアリング済みのApple Watch）がまだトークン化されていない場合に返されます。
* `pendingIDVLocal` / `pendingIDVRemote`\
  トークン化は、スマートフォン（`pendingIDVLocal`）またはウォッチ（`pendingIDVRemote`）のいずれかでID\&V待ちです。適切な **スマートフォン/ウォッチで有効化** ボタンを表示し、イシュアアプリケーションでエンドユーザーを認証してから、次を呼び出します: `activateDigitalCard()`.

```swift
import PassKit

let digitizeCardButton: PKAddPassButton = /* 既存のUI内の「ウォレットに追加」ボタン */
let activateCardButton: UIButton = /* 既存のUI内の「有効化」ボタン */
let cardID = "" // イシュアアプリケーションによって取得されます。たとえばバックエンドから

d1Task.cardDigitizationState(cardID) { result, error in
    if let error = error {
        // エラーを処理します
    } else if let result = result {
        // 状態に基づいてUIを更新します
        switch result.state {
        case .pendingIDVLocal:
            activateCardButton.isHidden = false
            activateCardButton.setTitle("スマートフォン \(result.localPKPass?.deviceName ?? "") で有効化", for: .normal)
            digitizeCardButton.isHidden = true
            // エンドユーザーの認証後、次を呼び出します: d1Task.activateDigitalCard(cardID)

        case .pendingIDVRemote:
            activateCardButton.isHidden = false
            activateCardButton.setTitle("ウォッチ \(result.remotePKPass?.deviceName ?? "") で有効化", for: .normal)
            digitizeCardButton.isHidden = true
            // エンドユーザーの認証後、次を呼び出します: d1Task.activateDigitalCard(cardID)

        case .notDigitized:
            activateCardButton.isHidden = true
            digitizeCardButton.isHidden = false

        case .digitized:
            activateCardButton.isHidden = true
            digitizeCardButton.isHidden = true
        }
    }
}
```

{% endtab %}
{% endtabs %}

D1 SDKへの完全なアクセスについては、次を確認してください [APIリファレンス](/push-provisioning/ja/integrate-the-d1-sdk/api-reference.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/push-provisioning/ja/implement-push-provisioning/implement-push-to-digital-wallets/get-the-card-digitization-state.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
