DSRP リモート決済を実装する
概要
リモート受け入れ(例:eコマース)の支払いデータを生成するために、Mastercard Digital Secure Remote Payment(DSRP)を使用します。
このフローでは、あなたの デジタルウォレットアプリケーション が支払いデータを生成します。あなたはそのデータを認可のためにマーチャントシステムまたは決済ゲートウェイに渡します。
開始する前に、次を完了してください トークナイゼーション。参照: カードをトークン化する.
NFC Wallet SDKは、次のためのDSRPリモート決済をサポートします: Mastercard 次の条件を満たすデジタルカードで、 MCBP 2.x プロファイル のみ。
別のプロファイルや決済ネットワークでのDSRPリモート決済が必要な場合は、Thalesのデリバリーチームに連絡してください。
SDK 統合
前提条件を確認する
DigitalizedCardDetails.paymentTypeSupported() を使用してデジタルカードがDSRPリモート決済をサポートしていることを確認します。 DigitalizedCardDetails.paymentTypeSupported()。このAPIはサポートされる支払いタイプの一覧を返します。次を確認してください: PaymentType.DSRP が存在すること。
public boolean isDsrpSupported(DigitalizedCardDetails card) {
final PaymentType[] supported = card.paymentTypeSupported();
for (PaymentType p : supported) {
if (p == PaymentType.DSRP) {
return true;
}
}
return false;
}DSRP支払いの入力データを作成する
作成 PaymentInputData。これはDSRPリモート支払いのペイロードを生成するために使用されるトランザクションパラメータを含みます。
使用する PaymentInputData.PaymentInputBuilder 次を使用:
withRemotePaymentParametersを提供するためにamount(金額)とcurrencyCode(通貨コード)withMCRemotePaymentParametersを提供するためにcountryCode(国コード),transactionType(取引種別),cryptogramDataType(クリプトグラムデータ形式)、およびunpredictableNumber(予測不可能番号)
次のサンプル値をプレースホルダとして使用してください。
PaymentInputData DSRP支払いのためのは次のフィールドを持ちます:
amount(金額)
long
数値、マイナー単位
必須
トランザクション金額をマイナー単位で設定してください(小数点区切りなし)。例:119.00 USD は 11900.
currencyCode(通貨コード)
char (整数)
3桁のISO 4217 数値コード
必須
トランザクションの通貨コードを設定します。例:USD は 840.
countryCode(国コード)
char (整数)
3桁のISO 3166-1 数値コード
必須
加盟店の国コードを設定します。例:アメリカ合衆国 は 840.
transactionType(取引種別)
列挙型(Enum)
TransactionType.PURCHASE
必須
金融取引の種類を設定します。DSRPリモート決済では、を使用してください: TransactionType.PURCHASE.
cryptogramDataType(クリプトグラムデータ形式)
列挙型(Enum)
CryptogramDataType.UCAF または CryptogramDataType.DE55
必須
SDKが返すクリプトグラム形式を設定します。
unpredictableNumber(予測不可能番号)
long
数値(Numeric)
必須
加盟店または決済ゲートウェイによって生成されたランダムな番号を提供してください。
リモート決済クリプトグラムを生成する
デジタルウォレットアプリケーション内で、次を呼び出してください: PaymentBusinessService.generateApplicationCryptogram() とともに PaymentType.DSRP リモート受け入れ(例:eコマース)のための支払いデータを生成するために。
あなたはを実装する必要があります: RemotePaymentServiceListener.
実装する RemotePaymentServiceListener
RemotePaymentServiceListenerリモート決済リスナーはDSRPクリプトグラム生成中のイベントを処理します。
リスナーには3つのコールバックがあります:
onAuthenticationRequiredSDKはCDCVM検証が必要であることを示します。参照: CDCVM 検証を実行する.
onDataReadyForPaymentリモート決済の出力データが準備できたら、次を使用して取得します:
PaymentService.getRemotePaymentData().データを取得したら支払いサービスを無効化(deactivate)してください。無効化をスキップすると、次回の生成が次のエラーで失敗する可能性があります:
REMOTE_PAYMENT_WRONG_STATE.onErrorSDKはリモート決済生成中に失敗が発生しました。
再試行する前に状態をリセットするために支払いサービスを無効化してください。
次のコードスニペットはリスナーの基本的な実装を示します:
generateApplicationCryptogram(...) を呼び出す際に、あなたのリスナーインスタンスを渡してください。 generateApplicationCryptogram(...).
DSRP支払いデータを取得する
取得する RemotePaymentOutputData 次のときに: RemotePaymentServiceListener.onDataReadyForPayment() がトリガーされたとき。
RemotePaymentOutputData は次のフィールドを含みます。
cryptogramData(クリプトグラムデータ)
フォーマット済みレスポンスを含むバイト配列。これはマーチャントがDE-55に配置するためのUCAFまたはTLVデータのいずれかです。
dpan
任意のパディングが取り除かれたDPAN(存在する場合)。 F パディングが取り除かれます(存在する場合)。
dpanSequenceNumber
使用されたカードのDPANシーケンス番号(PSN)。
track2EquivalentData
ISO/IEC 7813に従ったTrack 2等価データ。開始センチネル、終了センチネル、およびLRCは除きます。
PAR
支払い口座参照(PAR)。支払いネットワークが提供する場合に含まれます。
dPanexpirationDate
DPANの有効期限日。
cryptogramDataType(クリプトグラムデータ形式)
返されるクリプトグラム形式(UCAF または DE55).
track2EquivalentData には次が含まれます:
主口座番号(Primary Account Number)
フィールド区切り(16進数
D)有効期限(
YYMM)サービスコード
任意データ(支払いネットワークによって定義される)
バイト境界に合わせるための任意の16進パディング
F全バイトに揃えるため
エラーの処理
次のときに: RemotePaymentServiceListener.onError(...) がトリガーされると、SDKはを提供します: PaymentServiceErrorCode.
常にを呼び出して、再試行する前に支払いサービスの状態をリセットしてください。 PaymentBusinessService.deactivate() に onError(...) 再試行する前に支払いサービス状態をリセットするために呼び出してください。
PaymentBusinessService.generateApplicationCryptogram(...) は次を投げます: IllegalArgumentException もし paymentInputData が null またはリスナーが null.
REMOTE_PAYMENT_WRONG_STATE
リモート決済を実行しようとしたときに支払いサービスがすでにアクティベートされています。
呼び出す PaymentBusinessService.deactivate() 各生成後に呼び出してください。エンドユーザがCDCVMをキャンセルした場合にも呼び出してください。
REMOTE_PAYMENT_OUTPUT_INVALID
出力データを解析できず、利用できません。
トランザクションを再試行してください。
REMOTE_PAYMENT_NOT_SUPPORTED
デフォルトカードはリモート決済をサポートしていません。
支払前に次を確認してください: DigitalizedCardDetails.paymentTypeSupported() 有効なデジタルカードを使用して、がサポートされているか確認してください。 PaymentType.DSRP.
REMOTE_PAYMENT_INPUT_INVALID
入力データは存在しますが、いくつかのフィールドが有効ではありません。
を有効な値で再構築してください。 PaymentInputData すべての必須フィールドが設定されていることを確認してください。
NO_DEFAULT_CARD
デフォルトカードが存在しません。
クリプトグラムを生成する前にデフォルトカードを設定してください。
CARD_OUT_OF_PAYMENT_KEYS
利用可能な支払い認証情報がありません。
再試行する前に支払い認証情報を補充してください。
最終更新
役に立ちましたか?