DSRPリモート決済を実装する
概要
Mastercard DSRP リモート決済を使用して、リモート受付(例:eコマース)のための支払いデータを生成します。
このフローでは、デジタルウォレットアプリが支払いデータを生成します。その後、そのデータを承認のためにマーチャントシステムや決済ゲートウェイに渡します。
DSRP リモート決済を実装する前に、次を完了してください トークン化。参照してください カードをトークン化する.
NFC Wallet SDK は次のために DSRP リモート決済をサポートします Mastercard 次を持つデジタルカードで MCBP 2.x プロファイル のみ。
別のプロファイルや決済ネットワークで DSRP リモート決済が必要な場合は、Thales の導入チームに連絡してください。
SDK統合
前提条件を確認する
次を使用してデジタルカードが DSRP リモート決済をサポートしていることを確認します DigitalCard.Details.isPaymentTypeSupported() 次のパラメータで PaymentType.dsrp.
func checkCardSupportForDSRP(card: DigitalCard) async throws -> Bool {
return try await card.details.isPaymentTypeSupported(.dsrp)
}DSRP 支払いの入力データを作成する
DSRP 支払いデータを生成する前に、入力データを次で提供する必要があります RemotePaymentInputData.
RemotePaymentSession.RemotePaymentInputData は次のフィールドを持ちます:
amount
文字列
数値、少数単位
必須
小数点区切りなしの少数単位での取引金額。例えば、119.00 USD は 11900 (統合が固定長を要求する場合は左パディング)。
currencyCode
文字列
3桁の ISO 4217 数値コード
必須
取引通貨コード。例えば、USD は 840.
countryCode
文字列
3桁の ISO 3166-1 数値コード
必須
マーチャントの国コード。例えば、United States は 840.
transactionType
列挙型
.purchase
必須
金融取引の種類。DSRP 支払いでは、を使用します .purchase.
cryptogramType
列挙型
.ucaf または .de55
必須 SDK によって返されるクリプトグラムデータの形式。
unpredictableNumber
文字列
数値
必須 マーチャントまたは決済ゲートウェイによって生成されたランダム番号。
DSRP 支払いデータを生成する
デジタルウォレットアプリ内で、次を呼び出します RemotePaymentSession.generateRemotePayment().
この API はエラーをスローする可能性があります。参照: エラーを処理する.
成功すると、API は次を返します RemotePaymentOutputData 次のフィールドを持ちます:
cryptogramData
フォーマットされた応答を含むバイト配列。これはマーチャントが DE-55 を埋めるための UCAF または TLV データのいずれかです。
pan
任意の F パディングが削除された PAN(存在する場合)。
panSequenceNumber
使用されたカードの PAN シーケンス番号(PSN)。
track2EquivalentData
ISO/IEC 7813 に準拠したトラック2 データ要素(開始セントネル、終了セントネル、LRC を除く):PAN、フィールドセパレータ(D)、有効期限(YYMM)、サービスコード、任意データ、およびオプションの F パディング。
par
支払い口座参照(PAR)、決済ネットワークが提供する場合。
expirationDate
カードの有効期限日。
cryptogramDataType
返されるクリプトグラムの形式(UCAF または DE55)。
エラーを処理する
もし generateRemotePayment() がエラーをスローした場合、支払いは失敗とみなしてください。UI 状態をリセットし、エンドユーザーに次に取るべき最良の行動を案内してください。
deviceEnvironmentUnsafe
デバイスがセキュリティ要件を満たしていません。
sessionInProgress
別の決済セッションがまだ実行中です。
invalidInputData
の一つ以上のフィールドが欠落しているか形式が不正です。 RemotePaymentInputData は欠落しているか形式が不正です。
noPaymentKeys
取引に利用できる支払い鍵がありません。
cardNotSupported
デジタルカードは DSRP リモート決済をサポートしていません。
cardNotActive
デジタルカードは有効になっていません。
noDefaultCard
デフォルトカードが設定されていません。
clientError
リモート決済フローはクライアント側のエラー(例:ネットワーク問題)により失敗しました。
authenticationKeyInvalidated
デバイスのパスコードが無効化され、セキュアストレージが消去されました。
biometricNotEnrolled
生体認証が利用できないか登録されていません。
各エラーには失敗を説明するメッセージが含まれる場合があります。トラブルシューティングやサポート診断にそれを使用してください。
NFC Wallet SDK は、次が発生したときに保存された資格情報を自動的に消去します authenticationKeyInvalidated が発生したとき(例:パスコードリセットやセキュリティ変更の後)。
アプリケーションはエンドユーザーを再登録へ導くべきです。
完全な実装例
このコードサンプルを使用して、前の手順がどのように結びつくかを理解してください。
最終更新
役に立ちましたか?