> 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/secure-card-display/ja/implement-secure-card-display/display-card-metadata.md).

# カードメタデータを表示する

## 概要

このセクションでは、イシュアアプリケーションで機微情報を含まないカードデータを表示する方法を説明します。

## ユーザーエクスペリエンス

<div align="left"><figure><img src="/files/efc406529bc1e33d4368424ed2b0dab0dcd78468" alt="" width="336"><figcaption></figcaption></figure></div>

## シーケンス図

#### 前提条件:

* エンドユーザーとカードは D1 バックエンドに登録されています。
* D1 SDK が正しく初期化されています。
* イシュアアプリケーションは D1 SDK のログイン API を呼び出します。

<figure><img src="/files/e5cf0b8870382b39689eb75992cf88b0b83253cf" alt=""><figcaption></figcaption></figure>

に基づいて、 `cardID` 値に基づいて、イシュアアプリケーションは、PAN の下 4 桁、有効期限、カード画像の背景など、カードの基本情報をエンドユーザーに表示できます。

D1 SDK は公開の `getCardMetaData()` カード情報を取得するための API です。 `CardMetadata.cardAssetArray()` iOS 用の API と `CardMetadata.getAssetList()` Android 用の API ではカードアセットを取得します。最初の呼び出し時、D1 SDK は D1 バックエンドからカードアセットを取得し、ローカルにキャッシュします。以降の呼び出しでは、D1 SDK はローカルキャッシュからカードアセットを返します。

D1 が発行したカードについては、CardMetadata.getStateReason() および CardMetadata.getOngoingOperation() API を使用して、「State Reason」や「Ongoing Operation」などの追加カード情報を取得できます。

{% hint style="info" %}
カード一覧は、次の `getCardList()` 操作で取得できます。
{% endhint %}

{% tabs %}
{% tab title="Android >= 4.4.0" %}

```kotlin
fun getCardMetaData(d1Task: D1Task, cardID: String, activity: FragmentActivity) {
    activity.lifecycleScope.launch {
        try {
            val cardMetadata = d1Task.secureCardDisplayService.getCardMetadata(cardID).await()

            // PAN の下 4 桁
            val last4Pan = cardMetadata.last4Pan

            // CardAsset は カードデザイン の表示に使用されます
            val cardAssets = cardMetadata.getAssetList().await()
            // アプリケーションのロジックを続行します
        } catch (exception: D1Exception) {
            // D1 SDK Integration – Error Management セクションを参照してください
        }
    }
}
```

{% endtab %}

{% tab title="Android < 4.4.0" %}

```kotlin
fun getCardMetaData(d1Task: D1Task) {
    var cardID = "" // バックエンドから受信した Card ID。
    val callback = object : D1Task.Callback<CardMetadata> {
      override fun onSuccess(cardMetadata: CardMetadata) {
        // PAN の下 4 桁。
        val last4Pan = cardMetadata.last4Pan

        // CardAsset は カードデザイン の表示に使用されます。
        cardMetadata.getAssetList(object : D1Task.Callback<List<CardAsset>> {
          override fun onSuccess(cardAssets: List<CardAsset>) {
          // アプリケーションのロジックを続行します。
          }
  
          override fun onError(e: D1Exception) {
          // エラーを処理します。たとえば、ログに記録したり、表示したりします。
          }
        })
    }
      override fun onError(exception: D1Exception) {
        // D1 SDK Integration – Error Management セクションを参照してください。
      }
    }

    d1Task.getCardMetadata(cardID, callback)
}
```

{% endtab %}

{% tab title="iOS >= 4.4.0" %}

```swift
let cardID = "" // たとえばサーバーから取得
do {
    let service = try d1Task.secureCardDisplayService()
    let cardMetadata = try await service.cardMetadata(cardID)
    // 以降のフローを続行します。たとえば UI を更新します
    print("スキーム: \(cardMetadata.cardScheme.rawValue)")
    print("状態: \(cardMetadata.cardState.rawValue)")
    print("有効期限: \(cardMetadata.cardExpiry)")
    print("下4桁: **** **** **** \(cardMetadata.cardLast4)")
    // たとえば最初のカードデザインを表示します
    let assets = try await cardMetadata.cardAssetArray()
    if let cardAssetContent = assets.first?.contentArray.first,
       let cardImageData = Data(base64Encoded: cardAssetContent.encodedData, options: .ignoreUnknownCharacters) {
        let image = UIImage.init(data: cardImageData)
    }
} catch let d1Error as D1Error {
    // D1 SDK Integration – Error Management セクションを参照してください
} catch let error {
    // その他のエラーを処理します
}
```

{% endtab %}

{% tab title="iOS < 4.4.0" %}

```swift
let cardID = "" // たとえばサーバーから取得します。
d1Task.cardMetadata(cardID) { cardMetadata, error in
    if let error = error {
        // D1 SDK Integration – Error Management セクションを参照してください。
    } else if let cardMetadata = cardMetadata {
        // 以降のフローを続行します。たとえば UI を更新します。
        print("スキーム: \(cardMetadata.cardScheme.rawValue)")
        print("状態: \(cardMetadata.cardState.rawValue)")
        print("有効期限: \(cardMetadata.cardExpiry)")
        print("下4桁: **** **** **** \(cardMetadata.cardLast4)")

        print("理由: \(cardMetadata.reason.rawValue)")
        print("進行中の操作: \(cardMetadata.ongoingOperation.rawValue)")

        // たとえば最初のカードデザインを表示します。
        cardMetadata.cardAssetArray { assets, error in
            if let cardAssetContent = assets?.first?.contentArray.first,
               let cardImageData = Data(base64Encoded: cardAssetContent.encodedData, options: .ignoreUnknownCharacters) {
                let image = UIImage.init(data: cardImageData)
            }
        }
    }
}
```

{% endtab %}
{% endtabs %}


---

# 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/secure-card-display/ja/implement-secure-card-display/display-card-metadata.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.
