> 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/classic-push-provisioning/ja/ysuksu/tsp-nopusshupurobijoningu.md).

# TSP 経由のプッシュプロビジョニング

Mastercard Token Connect（MDES Token Connect）は、Mastercardが提供するサービスです。イシュアはこれを使用してカードをトークンリクエスタにプッシュします。

参加するには、トークンリクエスタはMastercardのプログラムに準拠し、オンボーディングの詳細をTSPに提供する必要があります。これにより、TSPは特定のトークンリクエスタにカードをどのようにプッシュできるかを判断できます。

通常、これらのサービスはイシュアが次を行えるAPIを公開します：

* プログラムに登録されているトークンリクエスタおよびそれらの利用可能なインターフェイスの詳細（アプリケーション、ウェブサイト、またはその両方）についてTSPに照会する。
* エンドユーザーがトークンリクエスタのインターフェイス（ウェブサイトなど）を選択した後、イシュアのアプリケーションがカードをプッシュするために使用する、カード情報でフォーマットされた適切なURIをTSPに照会する。

最後のステップであるカードのトークンリクエスタへのプッシュは、引き続きイシュアアプリケーションの責任です。

これらのAPIを使用するには、イシュアは決済ネットワークでプロジェクトを開設する必要があります。さもなければ、決済ネットワークはAPIアクセスを許可しません。

ThalesのPush ProvisioningソリューションにはMDES Token ConnectのAPIが組み込まれています。これにより、イシュアはSDKを通じてイシュアアプリケーションから直接それらにアクセスできます。

> <i class="fa-info-circle">:info-circle:</i>
>
> #### 注記 <a href="#note" id="note"></a>
>
> MDES Token Connectプログラムに登録されたトークンリクエスタのみがアクセス可能です。利用可能性は地域によって異なります。お手元の地域で利用可能な一覧については、VisaおよびMastercardの担当者にご確認ください。

以下のセクションで詳細を説明します：

1. Thales SDKを使用して、特定のカードに対して有効なトークンリクエスタの一覧を要求します。
2. 返された一覧からトークンリクエスタを選択し、Thales SDKを使用してカードをプッシュするために使用されるフォーマット済みURIを要求します。
3. 選択したトークンリクエスタにカードをプッシュします。

> <i class="fa-info-circle">:info-circle:</i>
>
> #### 注記 <a href="#note-1" id="note-1"></a>
>
> イシュアアプリケーションは常に選択されたトークンリクエスタのインターフェイスにカードをプッシュします。

### 1. 有効なトークンリクエスタの取得 <a href="#id-1-getting-the-eligible-token-requestors" id="id-1-getting-the-eligible-token-requestors"></a>

イシュアアプリケーションはPush Provisioning SDKを使用して、イシュアのカードおよび関連する決済スキームと互換性のあるトークンリクエスタの一覧を取得します。

このフローは次の図に示されています：

<figure><img src="/files/d428474a4971ed9dddc557bcd0083a6c58e88fec" alt=""><figcaption><p>カードに対して有効なトークンリクエスタを取得する。</p></figcaption></figure>

* 手順1および2：イシュアは、Push Provisioning SDKが期待する [フォーマット](/classic-push-provisioning/ja/gaido/dtanoto.md) に従って暗号化されたカード情報を構築します。
* 手順3：イシュアアプリケーションは、カード情報と共にSDKの `getEligibleTokenRequestors` ([Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/TSHProxy.html#getEligibleTokenRequestors\(java.lang.String,java.lang.String,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)getEligibleTokenRequestorWithCard:publicKeyIdentifier:completion:)) を呼び出します。
* 手順4：ThalesのバックエンドがTSP（VTSまたはMDES）に対して有効なトークンリクエスタを要求します。
* 手順5：一覧がイシュアのモバイルアプリケーションに返されます。
* 手順6：イシュアのモバイルアプリケーションは各トークンリクエスタの詳細を取得し、エンドユーザーに表示して選択できるようにします。

> <i class="fa-info-circle">:info-circle:</i>
>
> #### 注記 <a href="#note-2" id="note-2"></a>
>
> * 図の手順6はエンドユーザーとの可能なやり取りを示しています。
> * 全体的なUXは本書の対象外です。
> * イシュアはエンドユーザーに表示されるトークンリクエスタを自由にフィルタリングできます。
> * 利用可能なトークンリクエスタは数十に及ぶ可能性があるため、アプリケーションは項目の表示管理を行う必要があります。

次のコードスニペットは有効なトークンリクエスタの一覧を要求する方法を示しています：

{% tabs %}
{% tab title="Swift" %}

```swift
let scheme = "MASTERCARD"
let payload = "PKCS7 encrypted PAN"

let card = FundingCard(schemeString: scheme,
                        encryptedPayload: payload)

let publicKeyId = "id"

TPCSDK.getEligibleTokenRequestor(card: card,
                                  publicKeyIdentifier: publicKeyId) { (tokenRequestorList, error) in
    if let error = error {
        // TPCErrorを処理する
    } else {
        let tokenRequestor = tokenRequestorList?.first
        let pushMethod = tokenRequestor?.pushMethods?.first
        let pushHandler = pushMethod?.pushHandler // プッシュプロビジョニング用
    }
}
```

{% endtab %}

{% tab title="Objective-C" %}

```objective-c
NSString *scheme = @"MASTERCARD";
NSString * payload = @"PKCS7 encrypted PAN";

FundingCard * card = [[FundingCard alloc] initWithSchemeString:scheme
                                              encryptedPayload:payload
                                      primaryAccountIdentifier:nil];

NSString * publicKeyId = @"id";

[TPCSDK getEligibleTokenRequestorWithCard:card
                      publicKeyIdentifier:publicKeyId
                                completion:^(NSArray<TokenRequestor *> * _Nullable tokenRequestorList, NSError * _Nullable error) {
    if (error != nil) {
        // TPCErrorを処理する
    } else {
        TokenRequestor *tokenRequestor = tokenRequestorList[0];
        PushMethod *pushMethod = [tokenRequestor pushMethods][0];
        NSString *pushHandler = pushMethod.pushHandler;
    }
}];
```

{% endtab %}

{% tab title="Android" %}

```java
Config config = new Config();
config.setActivity(activity);
config.setIssuerId(ISSUERID);
config.setOemPayType(OEMPayType.NONE); // 正しいPushProvisioningオブジェクトを取得するために必要です
config.setUrl(envUrl);

TPCManager.getInstance().config(config, listener);
TPCManager.getInstance().getTSHProxy().getEligibleTokenRequestors(cardScheme, 
                                                                  encryptedPayload, 
                                                                  publicKeyId, 
                                                                  new TPCSDKListener<TokenRequestor[]>() {
    @Override
    public void onStart() {

    }

    @Override
    public void onSuccess(TPCResult<TokenRequestor[]> tpcResult) {
        TokenRequestor[] tokenRequestors = tpcResult.getResult();
        String pushHandler = tokenRequestors[0].getPushMethods()[0].getPushHandler(); // プッシュプロビジョニング用
    }

    @Override
    public void onError(TPCSDKException exception) {
        listener.onError(exception);
    }
});
```

{% endtab %}
{% endtabs %}

#### アセットの取得 <a href="#get-asset" id="get-asset"></a>

TPC SDKを使用して、イシュアアプリケーションは `getEligibleTokenRequestor` API から返される文字列を使用してトークンリクエスタのロゴ画像を取得できます。

Visaスキームの場合、トークンリクエスタのロゴ画像はモバイルアプリケーションが直接フェッチする必要があるURLとして返されます。

Mastercardスキームの場合、ロゴ画像は `logoId`として返されます。ロゴを取得するには、 `getAsset` API から返される文字列を使用してトークンリクエスタのロゴ画像を取得できます。

<figure><img src="/files/5f6fe2b9dac56de9bd88211b3d626119b3bde44d" alt=""><figcaption><p>を呼び出します。</p></figcaption></figure>

**トークンリクエスタのロゴを取得する（Mastercardのみ）。**

> <i class="fa-info-circle">:info-circle:</i>
>
> #### 注記 <a href="#note-3" id="note-3"></a>
>
> トークンリクエスタのロゴの取得

これはMastercardスキームでのみ利用可能です。

アプリケーションがトークンリクエスタの一覧を取得した後、トークンリクエスタのロゴ画像を取得するよう要求できます。

{% tabs %}
{% tab title="Swift" %}

```swift
次のコードスニペットはTPC SDKを介してトークンリクエスタのロゴ画像を取得する例を示します：
    func getTokenRequestorWithAssetId(id: String) {
      TPCSDK.getTokenRequestorAsset(assetId: id) {
    }
  }
```

{% endtab %}

{% tab title="Objective-C" %}

```objective-c

(tokenRequestorAsset, error) in
  - (void) getTokenRequestorWithAssetId: (NSString *) id {
                                 [TPCSDK getTokenRequestorAssetWithAssetId:id
  }];
}
```

{% endtab %}

{% tab title="Android" %}

```java


completion:^(NSArray<TokenRequestorAsset *> * _Nullable tokenRequestorAsset, NSError * _Nullable error) {
    try {
 	   TPCManager.getInstance().getTSHProxy().getAsset(assetId,
        @Override
        public void onStart() {
            new TPCSDKListener<MediaData[]>() {
        }

        @Override
        // 何もしない                
		    		public void onSuccess(TPCResult<MediaData[]> result) {
            MediaData[] mediaData = result.getResult(); 
        }

        @Override
        public void onError(TPCSDKException exception) {
            Log.d("TAG", "get Asset request success");
        }
      });
Log.e("TAG", "get Asset request failed");
    } catch (TPCSDKException exception) {
}
```

{% endtab %}
{% endtabs %}

### Log.e("TAG", "TSHProxy Exception " +exception.getMessage()); <a href="#id-2-selecting-the-token-requestor" id="id-2-selecting-the-token-requestor"></a>

2\. トークンリクエスタの選択 `getEligibleTokenRequestors` ([Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/TSHProxy.html#getEligibleTokenRequestors\(java.lang.String,java.lang.String,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)getEligibleTokenRequestorWithCard:publicKeyIdentifier:completion:)によって返される各要素は、カードをプッシュできる可能性のあるトークンリクエスタです。

A `TokenRequestor` オブジェクトは次のプロパティを公開します：

* `id`：トークンリクエスタID（TRID）。トークンリクエスタごとに一意であり、スキームによって生成されます。
* `name`：表示するトークンリクエスタの名前。
* `logo`：トークンリクエスタに関連付けられた表示用アイコン。
  * Mastercardの場合、これは `logoId` および `getAsset` APIを通じてアクセスできます。
* `pushMethods`：このオブジェクトは、当該トークンリクエスタに連絡するために使用できるメソッドの配列です。配列の各要素は2つのプロパティを持ちます：
  * `platformType`：トークンリクエスタのアプリケーションが利用可能なプラットフォームを示します： `ANDROID`, `IOS`、または `WEB`.
  * `pushHandler`：トークンリクエスタへのプッシュ要求を管理する方法に関する情報を含みます。各 `platformType`について、TSPからカード情報でフォーマットされたURIを要求するために使用される `pushHandler` が存在します。

トークンリクエスタは複数のインターフェイスを通じてアクセス可能な場合があるため、 `pushMethods`:

* に注意してください。 `アプリケーションインターフェイス（` platformType=ANDROID `または`)
* platformType=IOS `のとき）`)

ウェブサイトインターフェイス（

> <i class="fa-exclamation-circle">:exclamation-circle:</i>
>
> #### platformType=WEB <a href="#warning" id="warning"></a>
>
> のとき）
>
> * アプリケーションインターフェイスの場合、イシュアアプリケーションはトークンリクエスタアプリケーションと対話します。 `ANDROID`, [警告](https://developer.android.com/reference/android/content/ActivityNotFoundException) トークンリクエスタアプリケーションがインストールされていない場合、イシュアアプリケーションは次のケースを処理する必要があります： [Androidの](https://developer.android.com/reference/android/content/Context#startActivity\(android.content.Intent\)) ActivityNotFoundException
> * アプリケーションインターフェイスの場合、イシュアアプリケーションはトークンリクエスタアプリケーションと対話します。 `IOS`は、 [startActivity](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl) API から返される文字列を使用してトークンリクエスタのロゴ画像を取得できます。
>
> メソッドを呼び出すときに処理する必要があります。

iOSでは、イシュアアプリケーションはcanOpenURLを使用してURLが利用可能かを確認する必要があります。

> <i class="fa-info-circle">:info-circle:</i>
>
> #### トークンリクエスタアプリケーションがインストールされているかどうかを検証することはThales SDKの範囲外です。トークンリクエスタはオンボーディング時にTSPにURIを提供する必要があります。 <a href="#recommendation" id="recommendation"></a>
>
> ウェブサイトインターフェイスでは、イシュアアプリケーションはトークンリクエスタのウェブサイトとやり取りする必要があります。 `のとき）`推奨

### よりスムーズな体験のために、 <a href="#id-3-pushing-the-card" id="id-3-pushing-the-card"></a>

をサポートしてください。外部アプリケーションにリダイレクトするのではなく、イシュアアプリケーション内のWebViewでフローを処理します。

3\. カードのプッシュ

<figure><img src="/files/86614215597e2d8d122b0fc65620000539a26511" alt=""><figcaption><p>選択したトークンリクエスタにカードをプッシュするには、正しくフォーマットされたカード情報でトークンリクエスタを起動するURIが必要です。TSPからこのURIを照会してください。</p></figcaption></figure>

* このフローは次の図に示されています：
* TSPからプッシュURIを要求する。 `pushHandler` 手順1：エンドユーザーがトークンリクエスタを選択します。 `TokenRequestor` 手順2：イシュアアプリケーションはオブジェクトの `プロパティを取得し、SDKの` ([Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/PushProvisioning.html#addCard\(com.thalesgroup.tpcsdk.model.CardInfo,java.lang.String,boolean,com.thalesgroup.tpcsdk.model.CallbackObject,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)schemePushProvisionWithCard:publicKeyIdentifier:authorizationCode:termsAndConditionsAccepted:callbackUrl:callbackType:pushHandler:completion:)addCard
* ）APIを呼び出します。
* 手順3：SDKはバックエンドと対話してプッシュプロビジョニングを要求します。
* 手順4：Thalesのバックエンドは要求が認可されているかどうかを検証します。
* 手順5：Thalesのバックエンドはペイロードを要求し、TSPを通じてプッシュURLを生成します。
* 手順6：SDKはプッシュURLをイシュアアプリケーションに返します。

> <i class="fa-info-circle">:info-circle:</i>
>
> #### 注記 <a href="#note-4" id="note-4"></a>
>
> 手順7：イシュアアプリケーションはトークンリクエスタを起動するためにプッシュURLを呼び出します。 `platformType`. `pushHandler` URIは、インターフェイスがアプリケーションかウェブサイトかによって変更されます。

図に示されている他のパラメータについて：

* authorizationCode `はリクエスト送信の権限を付与するために必要です。これは` フォーマットとアルゴリズム [に準拠している必要があります。](/classic-push-provisioning/ja/gaido/dtanoto/kdojwt.md).
* コールバックURLは、フローの終了時にトークンリクエスタがイシュアアプリケーションを呼び出すことを可能にします。これはディープリンクメカニズムを使用して設定する必要があります。

> <i class="fa-info-circle">:info-circle:</i>
>
> **ディープリンクURLの設定**
>
> * [Android](https://developer.android.com/training/app-links/deep-linking)
> * [iOS](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app)

次のサンプルコードはSDKを通じてTSPからURIを取得する方法を示します：

{% tabs %}
{% tab title="Swift" %}

```swift
let scheme = "MASTERCARD"
let payload = "3080xxx"

let card = FundingCard(schemeString: scheme,
                    encryptedPayload: payload)

let publicKeyId = "id"
let code = "code"
let callbackUrl = "tpcsdk://com.thalesgroup.tpc.demo/tokenRequestorsPage"
let base64EncodedCallbackUrl = callbackUrl.data(using: .utf8)!.base64EncodedString()
let callbackType = "IOS"

// この値はTPCSDK.getEligibleTokenRequestorから取得できます
// Click to Payの場合、MasterCardのtokenRequestor.id属性値は50123197928です。
let pushHandler = "handler"

TPCSDK.schemePushProvision(card: card,
                            publicKeyIdentifier: publicKeyId,
                            authorizationCode: code,
                            termsAndConditionsAccepted: true,
                            callbackUrl: base64EncodedCallbackUrl,
                            callbackType: callbackType,
                            pushHandler: pushHandler) { (pushUrl, error) in
    if let error = error {
        // TPCエラーを処理する
    } else if let pushUrl = pushUrl {
        // トークンリクエスタアプリを起動する
        let url = URL(string: pushUrl)!
        if UIApplication.shared.canOpenURL(provisionURL) {
          UIApplication.shared.open(url, options: [:], completionHandler: nil)
        } else {
          // アプリケーションがインストールされていないことを示すエラーを表示する
        }
    }
}
```

{% endtab %}

{% tab title="Objective-C" %}

```objective-c

NSString *scheme = @"MASTERCARD";
NSString * payload = @"PKCS7 encrypted PAN";

FundingCard * card = [[FundingCard alloc] initWithSchemeString:scheme
                                              encryptedPayload:payload
                                      primaryAccountIdentifier:nil];

NSString * publicKeyId = @"id";
NSString * code = @"code";
NSString * callbackUrl = @"tpcsdk://com.thalesgroup.tpc.demo/tokenRequestorsPage";
NSString * base64EncodedCallbackUrl = [[NSString alloc] initWithData:[[callbackUrl dataUsingEncoding:NSUTF8StringEncoding] base64EncodedDataWithOptions:NSDataBase64EncodingEndLineWithLineFeed] encoding:NSUTF8StringEncoding];
NSString * callbackType = @"IOS";

// この値はTPCSDK.getEligibleTokenRequestorから取得できます
// Click to Payの場合、MasterCardのtokenRequestor.id属性値は50123197928です。
NSString * pushHandler = @"handler";

[TPCSDK schemePushProvisionWithCard:card
                publicKeyIdentifier:publicKeyId
                  authorizationCode:code
          termsAndConditionsAccepted:TRUE
                        callbackUrl:base64EncodedCallbackUrl
                        callbackType:callbackType
                        pushHandler:pushHandler
                          completion:^(NSString * _Nullable pushUrl, NSError * _Nullable error) {
    if (error != nil) {
        // TPCErrorを処理する
    } else {
        // トークンリクエスタアプリを起動する
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:pushUrl] options:@{} completionHandler:nil];
    }
}];
```

{% endtab %}

{% tab title="Android" %}

```java


CardInfo cardInfo = new CardInfo();
cardInfo.setScheme("MASTERCARD");
cardInfo.setEncryptedPayload(encryptedPayload);
cardInfo.setAuthorizationCode(authorizationCode);

CallbackObject callback = new CallbackObject();
String callbackUrl = "tpcsdk://com.thalesgroup.tpc.demo/tokenRequestorsPage";
String callbackUrlInBase64 = Base64.encodeToString(callbackUrl.getBytes(), Base64.NO_WRAP | Base64.URL_SAFE);
callback.setUrl(callbackUrlInBase64);
callback.setType("ANDROID");

String publicKeyId = "id";
boolean tcsAccepted = true;

// この値はTPCSDK.getEligibleTokenRequestorから取得できます
// Click to Payの場合、MasterCardのtokenRequestor.id属性値は50123197928です。
String pushHandler = "handler";

TPCManager.getInstance().getTSHProxy().addCard(cardInfo, 
                                               publicKeyId, 
                                               tcsAccepted, 
                                               callback, 
                                               pushHandler, 
                                               new TPCSDKListener<String>() {
    @Override
    public void onStart() {

    }

    @Override
    public void onSuccess(TPCResult<String> result) {
        String pushUrl = result.getResult();

        // トークンリクエスタアプリケーションを起動する
        completion:^(NSArray<TokenRequestorAsset *> * _Nullable tokenRequestorAsset, NSError * _Nullable error) {
          getActivity().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(pushUrl)));
        } catch (ActivityNotFoundException e) {
          // アクションを処理する利用可能なActivityがありません
        }
    }

    @Override
    public void onError(TPCSDKException exception) {
        // プッシュプロビジョニングにエラーがないか確認してください
    }
});
```

{% endtab %}
{% endtabs %}

次の図は、イシュアアプリケーションがカードをトークンリクエスタアプリケーションにプッシュする一般的なフローを示しています。

<figure><img src="/files/282205bb758acdb1d56395ea1a965634655c30ef" alt=""><figcaption><p>トークンリクエスタとの一般的なプッシュプロビジョニングフロー。</p></figcaption></figure>

フローの最初の部分はイシュアアプリケーションのみが関与します。

手順3では、イシュアアプリケーションがAPI（ `getEligibleTokenRequestors` ）によって返された一覧を使用してエンドユーザーに表示するインターフェイスを構築します。[Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/TSHProxy.html#getEligibleTokenRequestors\(java.lang.String,java.lang.String,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)getEligibleTokenRequestorWithCard:publicKeyIdentifier:completion:)エンドユーザーが手順4でカードをプッシュしたいことを確認したとき（または手順3の選択直後）、イシュアアプリケーションはSDKを使用して、カードをプッシュするために使用されるURIをTSPに照会できるように

）を呼び出します。 `プロパティを取得し、SDKの` ([Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/PushProvisioning.html#addCard\(com.thalesgroup.tpcsdk.model.CardInfo,java.lang.String,boolean,com.thalesgroup.tpcsdk.model.CallbackObject,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)schemePushProvisionWithCard:publicKeyIdentifier:authorizationCode:termsAndConditionsAccepted:callbackUrl:callbackType:pushHandler:completion:)トークンリクエスタを起動してカードをプッシュします。

<figure><img src="/files/3b2b5380ffca4ea70be047c3eef01599e8a385b8" alt=""><figcaption><p>手順4からURIが返されると、イシュアアプリケーションはそのURIを使用してカードをトークンリクエスタにプッシュします。</p></figcaption></figure>

トークンリクエスタは手順5で制御を引き取り、トークン化フローを案内するための複数のポップアップが表示されます。

この時点で、トークンリクエスタアプリケーションが完全に制御します。手順6および7に示されるように、カードのデジタル化を要求するためにTSPとやり取りします。

デジタル化が完了すると、エンドユーザーは手順7に示されるように先に進めます。トークンリクエスタが提供したコールバックURLを使用する場合、制御はイシュアアプリケーションに戻ることがあります。

（翻訳完了） `プロパティを取得し、SDKの` ([Android](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/android/latest/com/thalesgroup/tpcsdk/provisioning/PushProvisioning.html#addCard\(com.thalesgroup.tpcsdk.model.CardInfo,java.lang.String,boolean,com.thalesgroup.tpcsdk.model.CallbackObject,java.lang.String,com.thalesgroup.tpcsdk.manager.listener.TPCSDKListener\))/[iOS](https://thalesgroup.github.io/d1sdk-docs/tpc-sdk/ios/latest/Classes/TPCSDK.html#/c:@M@TPCSDKSwift@objc\(cs\)TPCSDK\(cm\)schemePushProvisionWithCard:publicKeyIdentifier:authorizationCode:termsAndConditionsAccepted:callbackUrl:callbackType:pushHandler:completion:)addCard

<br>


---

# 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:

```
GET https://docs.payments.thalescloud.io/classic-push-provisioning/ja/ysuksu/tsp-nopusshupurobijoningu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
