Apple Wallet拡張機能
Apple Wallet拡張機能
Apple Wallet拡張機能を使用すると、エンドユーザーはイシュアアプリケーションに加えて、Apple Walletアプリケーションから直接カードを見つけてプロビジョニングできるようになります。
アプリケーション拡張機能を通じて、イシュアアプリケーションの外部にカスタム機能やコンテンツを公開し、エンドユーザーがApple Walletまたはシステムとやり取りしている間に利用できるようにできます。
Apple Walletアプリケーション内でカードをプロビジョニングすると、支払いカード情報を手動で入力する必要がなくなるため、アプリ内体験が向上します。
を参照してください。 Apple拡張機能の概要 iOS拡張機能に関する一般的な情報については、
ユーザー体験
Apple Wallet拡張機能のエンドツーエンドのフローには、主に2つのフェーズがあります。
Apple Walletは、イシュアアプリケーションにプロビジョニング可能なカードがあることを検出します。
エンドユーザーは認証を行い、追加するカードを選択します。その後、Apple WalletはD1 SDKを介してイシュアアプリケーションからプロビジョニングペイロードを要求します。
検出と認証
Apple Walletでイシュアアプリケーションを検出する
Apple Walletは、カードが利用可能かどうかを判断するためにイシュアアプリケーションと照会します。カードが利用可能な場合、イシュアアプリケーションはオプションの一覧に表示されます。
エンドユーザーがイシュアアプリケーションを選択する
エンドユーザーがイシュアアプリケーションを選択すると、Apple WalletはイシュアアプリケーションのUI拡張機能を起動して、エンドユーザーを認証します。
エンドユーザーを認証する
イシュアアプリケーションのUI拡張機能は、メインのイシュアアプリケーションと同じ認証情報と方法(たとえば、手動ログインや生体認証)を使用してエンドユーザーを認証します。
カードの選択とプロビジョニング
Apple Walletが利用可能なカードを取得する
Apple Walletは、非UI拡張機能を通じてイシュアアプリケーションから利用可能なカードの一覧を要求します。エンドユーザーには、追加するカードの一覧が表示されます。
カードの詳細を表示
エンドユーザーは、カードを追加する前にカードの詳細(たとえば、カードアート、商品名、下4桁の数字)を確認できます。
利用規約に同意する
エンドユーザーは、イシュアと決済ネットワークの利用規約を確認し、同意します。
プロビジョニングペイロードとトークン化
選択された各カードについて、Apple Walletはイシュアアプリケーションからプロビジョニングペイロードを要求し、その後、決済ネットワークのTSPとのトークン化フローを開始します。
拡張機能
Apple Walletとの統合には、イシュアアプリケーションから2種類の拡張機能が必要です。
非UI拡張機能 拡張機能フローの状態とカードの利用可能性を報告します。これには、カード検出とプロビジョニングペイロードの手順が含まれます。これは、D1 SDKのベースクラスを拡張して実装されます
D1IssuerProvisioningExtensionHandler.UI拡張機能 エンドユーザーを認証します。これは、イシュアアプリケーションと同じログイン認証情報を使用する別画面です。次を実装します
D1IssuerProvisioningExtensionAuthorizationProvidingプロトコル。
D1 SDKは、非UI拡張機能向けの基本実装を提供するため、完全なロジックを自分で実装する必要はありません。イシュアアプリケーションは D1Task.configure() を WalletExtensionConfig とともにアプリケーション起動時に呼び出して、カードの詳細を拡張機能と共有します。この構成はインストール後に1回だけ必要ですが、カード情報を最新の状態に保つため、アプリケーション起動のたびに呼び出すことを推奨します。
UI拡張機能で認証に成功した後、イシュアアプリケーションは D1IssuerProvisioningExtensionAuthorizationProviding.bindingHash() を呼び出して、エンコードされたハッシュ済みクライアントバインディングペイロード(cbp)を取得する必要があります。イシュアアプリケーションはこの cbp イシュア トークンを要求する際のイシュア バックエンドへの値。その後、次を呼び出す必要があります D1イシュアProvisioningExtensionAuthorizationProviding.login() これにより、SDK は UI なしの拡張フローを継続できます。
この bindingHash() 値はイシュアアプリケーションと拡張機能で異なります。拡張機能用に別のイシュア アクセストークンを生成してください。
シーケンス図
1. Apple Wallet にイシュアアプリケーションのボタンが表示されます
2. エンドユーザー認証
3. 利用可能なカードが表示されます
4. トークン化
D1 SDK を介して Apple Wallet を統合する
SDK の設定
を実行するとき iOS SDK の初期化、イシュアアプリケーションも次を呼び出す必要があります configure(ConfigParams.walletExtensionConfig(...)) および以下を指定します:
cardParamsList
単一の consumerId および単一の issuerId:
cardParamsList– カード ID、カードアート、商品タイトル、下 4 桁の一覧。カードアートと商品タイトルは Apple Wallet に表示されます。appGroupID– D1 SDK がイシュアアプリケーションとその拡張機能の間でデータを共有できるようにする共有コンテナー ID。
issuerParamsList
複数の組み合わせをサポートする場合は、このバリアントを使用します issuerId と consumerId:
issuerParamsList– の一覧cardParamsList対応するissuerIdとconsumerId.appGroupID– D1 SDK がイシュアアプリケーションとその拡張機能の間でデータを共有できるようにする共有コンテナー ID。
App Group ID
既定では、イシュアアプリケーションとその拡張機能はストレージを共有しません。両者でストレージを共有するには app groups を使用してください。詳細は Apple拡張機能の概要 をご覧ください。
appGroupID イシュアアプリケーションとその拡張機能間の共有コンテナを識別します。Xcode では 機能.

Apple Pay のエンタイトルメント
アプリ内 Apple Pay のプロビジョニングと同様に、次のエンタイトルメントを追加する必要があります com.apple.developer.payment-pass-provisioning を UI 拡張ターゲットと非 UI 拡張ターゲットの両方に追加してください。オンボーディングの詳細については、Apple Wallet のプロビジョニングドキュメントまたは ウォレット向けプッシュプロビジョニングのオンボーディング.
UI拡張機能
UI 拡張機能を作成する

Xcode に次の種類の新しいターゲットを追加します Intents UI Extension.
新しいターゲットでは、イシュアアプリケーションと同じ App Group ID とエンタイトルメント値を有効にします。App Group ID が異なる場合、 ログイン APIは次を返します walletExtensionAppGroupIDが見つかりません エラーを返します。
拡張機能を更新 Info.plist:
設定
NSExtensionPointIdentifierにcom.apple.PassKit.発行者プロビジョニング.認可.設定
NSExtensionPrincipalClass〜に準拠するクラスにD1IssuerProvisioningExtensionAuthorizationProviding.
エンタイトルメントと拡張機能の設定の例:
UI拡張機能用のSDKを統合する
D1 SDK は提供します D1IssuerProvisioningExtensionAuthorizationProviding Apple のものを拡張するプロトコル、 PKIssuerProvisioningExtensionAuthorizationProviding および追加し bindingHash() と login() API。
UI 拡張では、次に準拠するビューコントローラを実装します D1IssuerProvisioningExtensionAuthorizationProviding、エンドユーザーを認証し、次を呼び出します bindingHash() を取得するために cbp、この情報を使ってイシュアのバックエンドからイシュアトークンを要求し、 cbp、その後次を呼び出します ログイン. あなたの SDKログイン トークン生成のためのドキュメント。
単一のissuerIdでログイン
複数のイシュアIDでログイン
非UI拡張機能
UIなしの拡張機能を作成

Xcode に次の種類の新しいターゲットを追加します Intents Extension. クリア UI拡張機能を含める UI拡張機能が以前に作成されていたため。
新しいターゲットでは、発行元アプリケーションと同じ App Group ID とエンタイトルメント値を有効にします。App Group ID が異なる場合、D1 SDK の操作は次を返します walletExtensionAppGroupIDが見つかりません エラーを返します。
拡張機能を更新 Info.plist:
設定
NSExtensionPointIdentifierにcom.apple.PassKit.issuer-provisioning.設定
NSExtensionPrincipalClass拡張するクラスへD1IssuerProvisioningExtensionHandler.
エンタイトルメントと拡張機能の設定の例:
UI以外の拡張機能用のSDKを統合する
D1 SDK は基底クラスを提供します D1IssuerProvisioningExtensionHandler、Appleのものを拡張する PKIssuerProvisioningExtensionHandler そして、必要な API を実装します。ほとんどの場合、このクラスを継承するだけで十分です。
エラー処理
必要に応じてオーバーライドします errorEncountered(_:) UI なしの拡張で、拡張フロー中に受信したエラーをログに記録したり追跡したりします。
典型的なエラーケースには次が含まれます:
この
appGroupID無効です、または見つかりません。D1バックエンドがエラーを返します。
Appleの機能要件
Appleの機能要件に合わせるため、D1 SDK D1IssuerProvisioningExtensionHandler およびイシュアアプリケーションは、次の手法を採用します:
カードアートとカード所有者名を表示します。
AppleがAPIを呼び出してから100ミリ秒以内に、カードが利用可能かどうか(有効性)を判定します。
カードアートとアプリアイコンは角を直角にして提供します。
UI拡張機能での認証に、手動ログインと生体認証ログインの両方をサポートします。
FAQ
最終更新
役に立ちましたか?