PPSE をカスタマイズする
概要
EMV Book Bで定義されているように、PPSE(Proximity Payment System Environment)は非接触決済の入口です。各デジタルカードには、トークンプロファイルで定義される独自のPPSEがあります。そこには、対応するアプリケーションラベルと優先順位を伴う、サポートされるアプリケーション識別子(AID)の一覧が含まれます。
NFC Wallet SDKは次を提供します PPSE管理API。 これにより、デジタルウォレットアプリケーションは次のことが可能になります。
取得する PPSE (デジタルカードプロファイルで定義されたデフォルトのPPSE)。
取得する 補助PPSE (co-badgedカード向けの補助デジタルカードプロファイルで定義されたPPSE)。
新しいPPSEをカスタマイズする(カスタムPPSE).
取得またはリセットする カスタムPPSE.
NFC Wallet SDKは次を使用します カスタムPPSE 非接触トランザクション用に定義されている場合。
使用する PPSE Management API co-badgedデジタルウォレットプログラムでポリシーを適用するために。
NFC Wallet SDK 次のみを使用します PPSE または カスタムPPSE。次は使用しません 補助PPSE.
SDK 統合
この PPSE Management API には次が含まれます PPSEFCITemplate クラスと次の DigitalCard 操作:
DigitalCard.ppse:トークンプロファイルで定義されたデフォルトのPPSEを取得します。DigitalCard.auxiliaryPPSE:補助デジタルカードプロファイルで定義されたPPSE(co-badgedカード)を取得します。DigitalCard.customPPSE:カスタムPPSEを取得します。返しますnil。定義されていない場合はDigitalCard.setCustomPPSE:カスタムPPSEを設定します。nilを渡すとクリアします。
SDKは、次を呼び出すとPPSEテンプレートを自動的に検証します DigitalCard.setCustomPPSE.
参照 検証ルール.
カスタムPPSEの作成
カスタムPPSEを次のいずれかの方法で作成します PPSEFCITemplate 次のいずれかの方法で:
既存のPPSEテンプレートを使用する。
生のPPSEバイトを使用する。
一から作成する。
方法1:既存のテンプレートからPPSEを作成する
デジタルカードのPPSEを基にして、的を絞った変更を加えたい場合はこの方法を使用します。
使用する場面:
優先順位やタグなど、既存のPPSEの特定のフィールドをカスタマイズしたい。
選択的な変更を加えつつ、デフォルトのPPSE構造を保持したい。
カスタマイズ用のベーステンプレートが必要。
方法2:生のバイトからPPSEを作成する
完全なPPSE応答データがすでにBER-TLV形式で利用可能な場合はこの方法を使用します。
使用する場面:
完全なPPSE応答データが生のバイトとしてすでにあります。
方法3:ゼロからPPSEを作成する
各コンポーネントを個別に定義して、プログラムでPPSE構造を組み立てる必要がある場合はこの方法を使用します。
使用する場面:
既存のバイトデータなしでPPSEデータを作成しています。
ディレクトリエントリ、AID、ラベル、その他のPPSEコンポーネントをプログラムで定義する必要があります。
コンパイル時の検証を伴う型安全な構築を行いたい。
生のバイトより構造化オブジェクトを優先したい。
DigitalCard PPSE応答を次として公開します PPSEFCITemplate。独自のものも作成できます PPSEFCITemplate。次の例で方法を示します。
カスタムPPSEをクリアする
次を渡して nil カスタムPPSEを削除し、デフォルトのPPSE応答を復元します。
検証ルール
NFC Wallet SDKは、次を呼び出すとカスタムPPSEを検証します DigitalCard.setCustomPPSE。カスタムPPSEがEMV要件とBER-TLVエンコードに従っていることを保証します。
サイズ制限
シリアル化されたBER-TLVペイロードは256バイト以下でなければなりません。
内のカスタムタグキー
BF0Cまたは61は2バイトを超えてはなりません。
必須タグ
あなたの PPSEFCITemplate には次を含める必要があります:
DF名 — タグ
84少なくとも1つのディレクトリエントリ — タグ
61内のBF0C各ディレクトリエントリ内のアプリケーション識別子 — タグ
4F
検証に失敗すると、SDKは次をスローします DigitialCard.Error.invaldPPSE(_:) error
AIDロックの制限
を使用してAIDをロックすることは LockStatus.locked 単一ブランドのVisaカードでのみサポートされています。
を設定した場合 LockStatus.locked 未サポートのカードに対して、SDKは次をスローします DigitialCard.Error.clientError(_:) error
最終更新
役に立ちましたか?