DGFT Veritrans4G開発ガイド

お問い合わせ
  • TOP
  • MDK(SDK)導入ガイド
  • 開発環境へのMDK(SDK)導入
  • クレジットカード決済

MDKトークン 開発ガイド

MDKトークン導入の前に

本ガイドの内容

本ガイドは、店舗様のECサイトが株式会社DGフィナンシャルテクノロジーの提供するVeriTrans4GのMDKトークンを利用して決済を行うために必要な情報について記載しています。

対象者

本ガイドは、MDKトークンを利用する店舗様ECサイトの開発者を対象としております。
MDKトークンを連携できる決済サービスについては、「2-4 対象サービス」を参照して下さい。

表1-2-1 ドキュメント一覧
タイトル 概要 企画者 開発者 運用者
MDKトークン
開発ガイド
本ガイド
MDKトークンの概要およびトークンを取得するためのAPIが記載されています。
VeriTrans4G開発ガイド VeriTrans4G導入にあたって、MDK(Merchant Development Kit)の導入方法について記載されています。
クレジットカード決済
3Dセキュア(3DS2.0)
決済のためのインターフェース詳細が記載されています。MDKトークンを連携するAPIはこちらをご覧ください。

制限事項

消費者様がご利用いただける環境(ブラウザ)は以下の条件を満たす必要があります。

  • JavaScriptが使用可能
  • Cross-Origin Resource Sharingに対応している
  • SHA-2証明書 及びTLS1.2以上での通信に対応している

※フィーチャー・フォンはCross-Origin Resource Sharingに対応していないため、トークンのご利用はできません。

MDKトークン概要

概要

  • MDKトークンサーバー(以下、トークンサーバー)は、カード情報非保持・非通過のシステムを実現するために必要な「トークン」を発行します。
  • トークンサーバーに対してクレジットカード情報を送信することで、決済に利用するためのトークンを取得できます。
  • トークンを取得する際は、JavaScriptを用いてクレジットカード情報を消費者ブラウザから直接トークンサーバーに送信します。決済要求時には、クレジットカード番号の代わりにトークンを送ることで、ECサイト側のシステムではクレジットカード情報を通過させることなく決済が可能です。
  • トークンを利用可能な決済サービスは「2-4 トークンで利用できる決済サービス」を参照して下さい。

決済処理の流れ

トークンを利用した決済処理概略は以下の通りです。

決済処理の流れ

※②以降の処理は各決済サービスの開発ガイドを参照して下さい。

注意点

  • トークンサーバーから取得したトークンは一度しかご利用いただけません(ワンタイムトークン)。
  • 取得したトークンには有効期限があり、有効期限を過ぎるとそのトークンはご利用いただけなくなります。
    詳しくは、「3.2.1 応答電文」の応答電文の"token_expire_date"の項目を参照して下さい。
  • トークンを取得する際には、マーチャントIDに紐づくトークンAPIキーをご使用下さい。
    トークン取得時と決済時でマーチャントIDが異なる場合、クレジットカード情報の識別ができません。
  • 本人認証(3-D Secure)のサービスオプションタイプを"mpi-none(認証のみ)"とした場合は、後続のクレジットカードの与信用に別のトークンが必要になります。
    • トークンの取得処理を2回実行し、取得した2つのトークンの値を加盟店様サーバに連携し、1つを3Dセキュア認証、もう 1つをカード与信の電文に設定するという実装が必要となります。

対象サービス

トークンを用いた各決済サービスの詳細は、各決済サービスの開発ガイドを参照して下さい。

表2-4-1 決済サービス一覧
決済サービス名 説明
クレジットカード決済 クレジットカードによる決済が利用できるサービスです。
各種ブランド、カード会社等発行のクレジットカードでのお支払いが可能です。
クレジットカード決済
(本人認証有り)
本人認証(3-D Secure)機能付きのクレジットカード決済が利用できるサービスです。
クレジットカード決済
(会員ID決済)
決済と同時に会員とカード情報を登録して、次回から会員を指定することで、カード情報の入力を必要とせず決済できるサービスです。
消費者自身でカード情報管理(追加・削除)を行うことも可能です。
決済時に会員IDを指定することでカード情報入力画面を省略して、すでに登録済のクレジットカードで決済することも可能です(クイックチェックアウト)。

※会員ID決済機能はワンクリック継続課金サービス(オプションサービス)の機能となります。ご利用いただくためには、別途お申し込みが必要となります。

インターフェース詳細

本章では、MDKトークンを取得する際に使用する電文について説明します。
決済に関する電文の説明は各決済サービスの開発ガイドを参照ください。

要求電文

要求電文の仕様は以下の通りです。

プロトコル HTTP1.1
メソッド POST
リクエストヘッダ Accept application/json
Content-Type application/json
ポート番号 443
文字コード UTF-8
URL 3.1.1アクセスURL」を参照
パラメータ 3.1.2要求電文項目」を参照

アクセスURL

アクセスURL
トークンサーバー接続用 https://api3.veritrans.co.jp/4gtoken

<接続要件>

このURLにアクセスするためには、ユーザーが利用するブラウザが次の2点を満たしている必要があります。

  • TLS1.2以上での通信に対応している
  • Cross-Origin Resource Sharingに対応している

<推奨ブラウザ>

  • Microsoft Edge
  • Chrome
  • Firefox
  • Safari

※各ブラウザの最新安定版を推奨

※推奨はしておりませんが、Microsoft Internet Explorer 11でも動作確認済みです。

<対応OS>

  • Windows7 以上
  • Android5以上
  • iOS5以上
  • OS X v10.9 以上

要求電文項目

MDKトークンを取得する際の要求電文に指定できる項目の一覧を以下に示します。

「設定」欄の内容は以下の通りです。

  • 必須項目:○
  • 任意項目:△
要求電文:消費者ブラウザ → トークンサーバー
フィールド名 項目名 書式・制限 説明 設定
card_number カード番号 半角数字19桁以内 数字のみで指定
card_expire カード有効期限 半角数字記号5桁 MM/YY (月 + "/" + 年)の形式
(例 "08/")
security_code セキュリティコード 半角数字3桁 or 4桁 セキュリティコード 注1
cardholder_name カード保有者名 半角英数字記号
2-45桁
カード保有者名 注2
token_api_key トークンAPIキー 半角英数記号36桁以内 店舗様毎で発行されたトークン取得に使う鍵
lang 言語 右記参照 応答電文の"message"の言語を指定
"en": 英語
"ja": 日本語
※指定なしの場合Accept-Languageの値を使用

注1)「セキュリティコードの必須チェック機能(4-3参照)」を有効化している場合は、セキュリティコードが未設定の場合にエラーとなり、以下の結果を返戻します。

HTTP ステータス 400
code missing_security_code

注2)カード保有者名は3-D Secure 2.0を利用する場合にのみ必要となるフィールドです。

要求電文のサンプル

{
    "card_number":"4111111111111111",
    "card_expire":"01/20",
    "security_code":"123",
    "cardholder_name":"TARO YAMADA",
    "token_api_key":"test-token-api-key",
    "lang":"en"
}

応答電文

応答電文の仕様は以下の通りです。

レスポンスヘッダ Content-Type application/json
文字コード UTF-8
パラメータ 3.2.1 応答電文項目」を参照

応答電文項目

トークンサーバーからの応答電文の項目の一覧を以下に示します。

「設定」欄の内容は以下の通りです。

  • 必ず返戻:○
  • 処理成功時のみ返戻:△
応答電文:トークンサーバー → 消費者ブラウザ
フィールド名 項目名 書式・制限 説明 設定
token トークン 半角英数記号36桁 決済時にクレジットカード情報の識別に用いるトークンの値
token_expire_date トークン有効期限 半角数字14桁 YYYYMMDDhhmmssの形式
(発行後15分)
req_card_number 要求カード番号 半角数字記号19桁以内 要求電文に設定した値
上6桁下2桁のみ数字表示され、
その他は "*"(アスタリスク)に変換されます。
(例 "411111********11")
status ステータス 右記参照 "success":成功
"failure":失敗
code 結果コード 半角英字記号 処理結果を詳細に表すコード
message 結果メッセージ 文字列 処理結果を英語又は日本語で表示

※決済サーバー側でクレジットカード情報の取得が失敗した際に、トークンの有効期限切れが原因かどうかECサイト側でご確認いただけるように、"token_expire_date"の値を保管するようにして下さい。

※結果コード・結果メッセージの一覧は「MDKトークン 結果コード一覧」を参照下さい。

応答電文のサンプル

  • トークン取得成功時
    {
        "token":"3a024e60-5951-4521-81e8-db0003752af8",
        "token_expire_date":"20161012182641",
        "req_card_number":"411111********11",
        "status":"success",
        "code":"success",
        "message":"Token has been successfully created."
    }
  • トークン取得失敗時(カード番号のフォーマットエラー)
    {
        "status": "failure",
        "code": "invalid_card_number",
        "message": "Card number is invalid."
    }
  • トークン取得失敗時(マーチャント認証エラー)
    {
        "status": "failure",
        "code": "unauthorized_merchant",
        "message": " Merchant authorization error occurred."
    }

その他補足事項

テストの実施方法

各決済サービスの取引時に、トークンサーバーから取得したMDKトークンを要求電文項目に設定し、取引が行えることを確認して下さい。
各決済のテスト仕様につきましては『導入テストガイド』を参照して下さい。

※ご利用可能なテストカード情報についても同ガイドを参照して下さい。

テストマーチャントIDを用いてダミー取引を実施する際は、テストマーチャントIDに紐づくトークンAPIキーをご使用下さい。

サンプルコードについて

MDKトークンを取得するためのJavaScriptコードサンプルを提供しておりますので、ご活用下さい。

function submitToken(e) {
    var data = {};
    data.token_api_key = document.getElementById('token_api_key').innerText;
    if (document.getElementById('cc-number')) {
        data.card_number = document.getElementById('cc-number').value;
    }
    if (document.getElementById('cc-exp')) {
        data.card_expire = document.getElementById('cc-exp').value;
    }
    if (document.getElementById('cc-csc')) {
        data.security_code = document.getElementById('cc-csc').value;
    }
    if (document.getElementById('cc-name')) {
        data.cardholder_name = document.getElementById('cc-name').value;
    }
    data.lang = "ja";

    var url = document.getElementById('token_api_url').innerText;

    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    xhr.setRequestHeader('Accept', 'application/json');
    xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
    xhr.addEventListener('loadend', function () {
        if (xhr.status === 0) {
            alert("トークンサーバーとの接続に失敗しました");
            return;
        }
        var response = JSON.parse(xhr.response);
        if (xhr.status == 200) {
            document.getElementById('cc-number').value = "";
            document.getElementById('cc-exp').value = "";
            document.getElementById('cc-csc').value = "";
            document.getElementById('cc-name').value = "";
            document.getElementById('token').value = response.token;
            document.forms[0].submit();
        }
        else {
            alert(response.message);
        }
    });
    xhr.send(JSON.stringify(data));
}
  • このサンプルコードは、トークンサーバーとの通信処理実装の一例であり、加盟店様のサイトで確実に動作することを保証するものではございません。加盟店様のサイトの仕様に合わせてカスタマイズして頂き、必ず十分なテストを行って頂きますようお願いします。
  • このサンプルコードは、別途提供中のMDKサンプルプログラムのアーカイブに含まれます。上記コード中の未定義の変数等は、MDKサンプルプログラムをダウンロードしてご確認ください。

セキュリティコードの必須チェック機能

本機能が有効化されている場合、加盟店様のECサイトやアプリケーションをご利用のお客様がセキュリティコードを入力しなかった場合に、トークンサーバーからエラーを返戻します。加盟店様の実装での必須チェックも必要ですが、加盟店様システムでのチェックと併せて本機能をご利用いただくことで、セキュリティコードが指定されていない不正な要求をトークンサーバーがエラーにしますので、より安全に決済をご利用いただけます。

本機能は、マーチャントID毎に弊社側で有効化/無効化の切替えを行います。
有効化/無効化の初期設定は、マーチャントIDの発行時期によって異なりますので、以下の内容をご確認いただきご不明な際は弊社までお問い合わせください。

  • 2018年3月31日以前に発行されたマーチャントIDをご利用の場合、初期設定では本機能は無効化されています。有効化をご希望の加盟店様は、弊社までご連絡下さい。
  • 2018年4月1日以降に、新規に発行されるマーチャントIDにつきましては、初期設定として本機能を有効化した状態で発行いたしますので、無効化を希望される新規の加盟店様は、弊社までご相談ください。