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リモート決済を実装する

概要

Mastercard Digital Secure Remote Payment(DSRP)を使用して、eコマースなどのリモート受け入れ向けの支払いデータを生成します。

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

始める前に、次を完了してください トークン化。参照してください カードをトークン化する.

SDK 統合

前提条件を確認

デジタルカードが 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 を提供するために 金額 と currencyCode

  • withMCRemotePaymentParameters を提供するために countryCode, transactionType, cryptogramDataType、および unpredictableNumber

次のサンプル値をプレースホルダーとして使用します。

PaymentInputData DSRP 決済には次のフィールドがあります:

フィールド
型
形式
要件
説明

金額

long

数値、小数単位

必須

取引金額を小数単位で設定します(小数点なし)。例: 119.00 USD は 11900.

currencyCode

char (整数)

3桁の ISO 4217 数値コード

必須

取引通貨コードを設定します。例: USD は 840.

countryCode

char (整数)

3桁の ISO 3166-1 数値コード

必須

加盟店の国コードを設定します。例: 米国は 840.

transactionType

列挙型

TransactionType.PURCHASE

必須

金融取引タイプを設定します。DSRP リモート決済では、次を使用します TransactionType.PURCHASE.

cryptogramDataType

列挙型

CryptogramDataType.UCAF または CryptogramDataType.DE55

必須

SDK が返す暗号化文字列の形式を設定します。

unpredictableNumber

long

数値

必須

加盟店または決済ゲートウェイによって生成されたランダム番号を指定します。

リモート決済の暗号化文字列を生成します

デジタルウォレットアプリケーションで、次を呼び出します PaymentBusinessService.generateApplicationCryptogram() と PaymentType.DSRP リモート受け入れ(たとえば eコマース)用の支払いデータを生成するために

次を実装する必要があります RemotePaymentServiceListener.

実装する RemotePaymentServiceListener

リモート決済リスナーは、DSRP 暗号化文字列生成中のイベントを処理します。

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

  • onAuthenticationRequired

    SDK は CDCVM 検証が必要であることを示します。参照してください CDCVM認証を実行.

  • onDataReadyForPayment

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

    データを取得した後、ペイメントサービスを無効化してください。無効化を省略すると、次の生成が次のエラーで失敗する可能性があります REMOTE_PAYMENT_WRONG_STATE.

  • onError

    SDK はリモート決済の生成中に失敗に遭遇しました。

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

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

呼び出す際にリスナーインスタンスを渡します 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 には以下が含まれます:

  • 主口座番号

  • フィールド区切り文字(hex D)

  • 有効期限(YYMM)

  • サービスコード

  • 任意データ(決済ネットワークで定義)

  • オプションの hex によるパディング F を1バイト単位に揃えるために

エラーを処理する

~の場合 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

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

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

最終更新

役に立ちましたか?