> 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/click-to-pay/ja/implement-click-to-pay-issuers/update-click-to-pay-profiles/update-profiles-by-d1-sdk.md).

# D1 SDKによるプロファイルの更新

## 概要

このページでは、イシュアアプリケーションが D1 SDK を使用して Click to Pay のプロファイルデータを更新する方法を説明します。

イシュアアプリケーションは次を呼び出せます `updateConsumer` エンドユーザープロファイルデータを更新するには、または `updateCard` 1枚のカードのカードレベルデータを更新します。

エンドユーザーにイシュアアプリケーション内で Click to Pay データを直接確認・更新してもらい、D1 が Click to Pay ディレクトリとのバックエンド更新をオーケストレーションする場合に、この SDK フローを使用します。

{% hint style="info" %}
**クイックリンク**

* [Click to Pay プロファイルを更新](/click-to-pay/ja/implement-click-to-pay-issuers/update-click-to-pay-profiles.md)
* [D1 SDK によるプロファイル取得](/click-to-pay/ja/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md)
* [D1 SDK によるカード登録](/click-to-pay/ja/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.md)
* [D1 SDK によるオプトアウト](/click-to-pay/ja/implement-click-to-pay-issuers/opt-out-cards-from-click-to-pay/opt-out-by-d1-sdk.md)
  {% endhint %}

## 適切な SDK API を選択する

### `updateConsumer`

使用する `updateConsumer` Click to Pay に保存されたコンシューマーデータを変更する必要があるとき。

1つの値だけが変更された場合でも、すべてのコンシューマーフィールドを指定してください。

請求先住所も指定した場合、D1 はコンシューマープロファイルにリンクされたすべてのカードの請求先住所を更新します。

### `updateCard`

使用する `updateCard` 1枚の登録済みカードだけを変更する必要があるとき。

この API は、選択したカードの請求先住所を更新し、Visa の場合のみカード所有者名も更新します。

{% hint style="warning" %}
カードの更新またはカードの差し替えにこれらの SDK API を使用しないでください。

代わりに D1 の更新または差し替えフローを使用してください。
{% endhint %}

## フロー

SDK 更新フローは次の手順で進みます:

1. イシュアアプリケーションが D1 SDK を初期化し、エンドユーザーをログインさせます。
2. イシュアアプリケーションが現在の Click to Pay プロファイルを取得します。
3. エンドユーザーがイシュアアプリケーション内で必要なデータを更新します。
4. イシュアアプリケーションが次を呼び出します `updateConsumer` または `updateCard`.
5. D1 は認証済みのエンドユーザーコンテキストを使用して、リクエストを D1 バックエンドに送信します。
6. D1 バックエンドが関連する Click to Pay ディレクトリを更新します。
7. D1 が操作ステータスをイシュアアプリケーションに返します。

## シーケンス図

SDK フローはバックエンド更新フローと同じ機能的動作を持ちますが、イシュアアプリケーションから直接開始されます。

詳細なシーケンス図については、次を参照してください [Click to Pay プロファイルを更新](/click-to-pay/ja/implement-click-to-pay-issuers/update-click-to-pay-profiles.md).

### 重要なポイント

* どちらの操作も非同期です。
* 即時結果には、次のステータスが含まれます `SUCCESSFUL` または `PENDING`、および `operationID`.
* 使用する [D1 SDK によるプロファイル取得](/click-to-pay/ja/implement-click-to-pay-issuers/retrieve-click-to-pay-profiles/retrieve-profiles-by-d1-sdk.md) 現在の Click to Pay データを使用してイシュアアプリケーションのユーザーインターフェースを事前入力するためのものです。
* 使用する `updateConsumer` Click to Pay データを特に更新したい場合にのみ。
* イシュアのバックエンドがエンドユーザープロファイルを D1 に保存している場合は、 [コンシューマー情報を更新](/click-to-pay/ja/integrate-the-d1-api/d1-api-reference/inbound-api-to-d1/consumer-api.md) Click to Pay を含むすべてのチャネルを同期したままにしたい場合。
* Mastercard では、請求先住所を指定する場合、住所オブジェクト全体を指定してください。

## Click to Pay のプッシュ通知を処理する

次を参照してください。 [Click to Pay のプッシュ通知を処理する](/click-to-pay/ja/implement-click-to-pay-issuers/enroll-cards-in-click-to-pay/enroll-cards-by-d1-sdk.md#handle-click-to-pay-push-notifications) 実装の詳細については、D1 SDK 統合 – D1 SDK による登録のドキュメントを参照してください。

## の SDK API `updateConsumer`

使用する `updateConsumer` イシュアアプリケーションが Click to Pay でエンドユーザープロファイルデータを更新するとき。

この API は、関連するすべての Click to Pay ディレクトリでエンドユーザープロファイルを更新します。請求先住所を指定した場合、D1 は登録済みの各カードの請求先住所も更新します。

{% tabs %}
{% tab title="Android - Kotlin" %}

```kotlin
fun updateConsumerClick2Pay(d1Task: D1Task) {
    // ユーザー入力から受け取ったコンシューマー情報。
    val consumerInfo = ConsumerInfo(
        "Bella",
        "ミドルネーム",
        "Lin",
        "en-US",
        "+65",
        "99998888",
        "email@thalesgroup.com"
    )
    val billingAddress = BillingAddress("CZ")

    val callback: D1Task.Callback<Status?> =
        object : D1Task.Callback<Status?> {
            override fun onSuccess(data: Status?) {
                // コンシューマーの Click to Pay 更新に成功
                val status: Status? = data
                val operationID = data?.operationID
            }

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

{% endtab %}

{% tab title="iOS" %}

```swift
func updateConsumerClick2Pay(d1Task: D1Task) {
    do {
        // ユーザー入力から受け取ったコンシューマー情報。
        let consumerInfo = ConsumerInfo(firstName: "Bella",
                                        middleName: nil,
                                        lastName: "Lin",
                                        language: "en-US",
                                        phoneNumberCountryCode: "+65",
                                        phoneNumber: "99998888",
                                        email: "email@thalesgroup.com")
        let billingAddress = BillingAddress(countryCode: "CZ")
        let status = try await d1Task.clickToPayService().updateConsumer(consumerInfo: consumerInfo,
                                                                         billingAddress: billingAddress)
        switch status {
        case .pending(operationID: let operationID):
            // 保留中のシナリオを処理
            print(operationID)
        case .successful(operationID: let operationID):
            // 成功シナリオを処理
            print(operationID)
        }
    } catch let error {
        // エラーを処理します。
    }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
コンシューマーデータ一式を常に送信してください。

変更されたフィールドだけを送信しないでください。
{% endhint %}

## の SDK API `updateCard`

使用する `updateCard` イシュアアプリケーションが Click to Pay で 1 枚の登録済みカードを更新するとき。

この API はカードレベルのデータのみを更新します。請求先住所、またはカードが Visa に属する場合のカード所有者名に使用してください。

{% tabs %}
{% tab title="Android - Kotlin" %}

```kotlin
fun updateCardClickToPay(d1Task: D1Task, cardID: String, billingAddress: BillingAddress) {

    val callback: D1Task.Callback<Status?> =
        object : D1Task.Callback<Status?> {
            override fun onSuccess(data: Status?) {
                // カードの Click to Pay 更新に成功
                val status: Status? = data
                val operationID = data?.operationID
            }

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

{% endtab %}

{% tab title="iOS" %}

```swift
do {
    let cardID = ""
    let name = "Bella Lin"
    let billingAddress = BillingAddress(countryCode: "CZ")
    let status = try await d1Task.clickToPayService().updateCard(cardID,
                                                                 name: name,
                                                                 billingAddress: billingAddress)
    switch status {
    case .pending(operationID: let operationID):
        // 保留中のシナリオを処理
        print(operationID)
    case .successful(operationID: let operationID):
        // 成功シナリオを処理
        print(operationID)
    }
} catch let error {
    // エラーを処理します。
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
使用する `updateCard` 1枚のカードに関連付けられたデータに対してのみ。

エンドユーザープロファイルが変更された場合は、 `updateConsumer` 代わりに次を使用してください。
{% endhint %}


---

# 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/click-to-pay/ja/implement-click-to-pay-issuers/update-click-to-pay-profiles/update-profiles-by-d1-sdk.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.
