Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

DSRP リモート決済を実装する

概要

リモート受け入れ(例:eコマース)の支払いデータを生成するために、Mastercard Digital Secure Remote Payment(DSRP)を使用します。

このフローでは、あなたの デジタルウォレットアプリケーション が支払いデータを生成します。あなたはそのデータを認可のためにマーチャントシステムまたは決済ゲートウェイに渡します。

開始する前に、次を完了してください トークナイゼーション。参照: カードをトークン化する.

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

リモート決済リスナーはDSRPクリプトグラム生成中のイベントを処理します。

リスナーには3つのコールバックがあります:

  • onAuthenticationRequired

    SDKはCDCVM検証が必要であることを示します。参照: CDCVM 検証を実行する.

  • onDataReadyForPayment

    リモート決済の出力データが準備できたら、次を使用して取得します: PaymentService.getRemotePaymentData().

    データを取得したら支払いサービスを無効化(deactivate)してください。無効化をスキップすると、次回の生成が次のエラーで失敗する可能性があります: REMOTE_PAYMENT_WRONG_STATE.

  • onError

    SDKはリモート決済生成中に失敗が発生しました。

    再試行する前に状態をリセットするために支払いサービスを無効化してください。

次のコードスニペットはリスナーの基本的な実装を示します:

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 もし paymentInputDatanull またはリスナーが 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

利用可能な支払い認証情報がありません。

再試行する前に支払い認証情報を補充してください。

最終更新

役に立ちましたか?