> 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を更新します:

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

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

* それでもカードが `未デジタル化` デジタル化後も表示される場合は、イシュアアプリケーションが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/24cb6484b1325a63d62ccf86e5c2ed8758850fa0" 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です。

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

* `デジタル化済み`\
  カードはすでにトークン化されています。メッセージや操作は不要です。
* `未デジタル化`\
  表示する **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).
* `保留中のID&V`\
  表示する **カードを有効化** イシュアアプリケーション認証がサポートされている場合は、ボタンを表示します。認証に成功したら、を呼び出します `activateDigitalCard()` してデジタルカードを有効化します。

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

```kotlin
fun checkCardDigitizationState_v2_4_0(d1Task: D1Task, cardID: String) {
    val d1PushWallet = d1Task.d1PushWallet
    val wallet = OEMPayType.GOOGLE_PAY // 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 Integration – Error Management セクションを参照してください。
        }
    }
    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`.

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

* `デジタル化済み`\
  カードはすでにトークン化されています。非表示にする **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.
