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 数値
必須
加盟店の国コード。たとえば、米国は 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 に準拠した Track 2 データ要素(開始シンボル、終了シンボル、LRC を除く)。PAN、フィールド区切り文字(
D)、有効期限(YYMM)、サービスコード、任意データ、およびオプションのパディング。 パディングを除去した PAN(存在する場合)。 par
決済ネットワークから提供される場合の、決済アカウント参照(PAR)。
expirationDate
カードの有効期限。
cryptogramDataType
返される暗号化データの形式(UCAF または DE55)。
cryptogramDataType
エラーを処理する
もし generateRemotePayment() がエラーをスローした場合は、支払い失敗として扱います。UI 状態をリセットし、エンドユーザーを次に取るべき最善のアクションへ誘導してください。
deviceEnvironmentUnsafe
デバイスがセキュリティ要件を満たしていません。
sessionInProgress
別の支払いセッションがまだ実行中です。
invalidInputData
次のいずれかのフィールドが RemotePaymentInputData 不足しているか、形式が正しくありません。
noPaymentKeys
この取引で使用できる支払いキーがありません。
cardNotSupported
デジタルカードは DSRP リモート決済をサポートしていません。
cardNotActive
デジタルカードが有効ではありません。
noDefaultCard
デフォルトカードが設定されていません。
clientError
クライアント側のエラー(たとえば、ネットワークの問題)により、リモート決済フローが失敗しました。
authenticationKeyInvalidated
デバイスのパスコードが無効になり、セキュアストレージが消去されました。
biometricNotEnrolled
生体認証が利用できないか、登録されていません。
NFC Wallet SDK は、 authenticationKeyInvalidated が発生すると、保存された認証情報を自動的に消去します(たとえば、パスコードのリセットやセキュリティ変更後)。
アプリケーションでは、エンドユーザーに再登録の手順を案内する必要があります。
完全な実装例
このコードサンプルを使って、前の手順がどのように組み合わさるかを理解してください。
最終更新
役に立ちましたか?