DGFT Veritrans4G開発ガイド

お問い合わせ
  • TOP
  • MDK(SDK)導入ガイド
  • 開発環境へのMDK(SDK)導入
  • Java

MDKチュートリアル(Java)

はじめに

VeriTrans4Gは、ECなどオンラインサービスからリアル店舗までマルチチャネルに対応可能な総合決済サービスを提供します。
MDKを利用することで、多彩な決済手段を導入可能となりますが、ここではMDKとサンプルプログラムを利用してクレジットカード決済の簡単な動作確認を行います。
お客様の環境へのMDKインストールにあたってはインストールガイド(URL)を参照の上実施してください。

【MDK】Merchant Development Kit
EC店舗サイトと各決済会社間の決済処理を安全に行うためのオンライン決済ソフトウェア

テストアカウントの申請

下記サイトにてMDKのテスト利用申請を行います。
URL: 無料テスト利用プログラム お申し込み

管理サイト(MAP)へのログイン

管理サイトにログインを行いMDKを利用する上で必要となる以下の情報を取得します。

URL: MAP

  • マーチャントCCID
  • マーチャント認証鍵
  • Token Api Key

上記情報は [ 管理サイト -> ダッシュボード -> API設定情報 ] から取得します。

MAP(Merchant Administration Portal)
ご契約情報および各取引を検索いただくための管理サイト

実行環境の確認

MDKの利用には、使用言語ごとに以下の環境をご準備ください

Java 1.8.0 以上 (TLS1.2以上の有効化が必要です)
Apache Ant (サンプルプログラムを実行する場合のみに必要です)
ご利用上の注意
  • チュートリアルではUNIXコマンドを用いて説明しますので、環境に合わせて読み替えてください。
  • チュートリアルおよびサンプルプログラムでは、ログ出力に Log4J を使用していますが、お客様環境では SLF4J を利用した他の実装もご利用可能です。

MDKダウンロード

テストを実行する言語のMDKを以下のダウンロードページから取得し、展開します。

MDKダウンロード
$ curl -OL https://www.veritrans.co.jp/trial/4g/Mdk4G-java-X.X.X.tar.gz
$ tar zxvf Mdk4G-java-X.X.X.tar.gz

MDKの確認

展開したMDKには以下のファイルが含まれています。

MdkJava/
├── README.txt                        MDK の導入前にお読みください
├── lib                               依存ライブラリ
│   ├── commons-codec-1.2.jar
│   ├── json-simple-1.1.1.jar
│   ├── log4j-1.2.17.jar
│   ├── slf4j-api-1.7.25.jar
│   └── slf4j-log4j12-1.7.25.jar
├── resources                         CA 証明書ストアファイル
│   └── cacerts
└── tgMdk
    ├── 3GPSMDK.properties            MDK 設定ファイル
    ├── cg-mdk-1.8.9.jar              決済要求ビジネスロジッククラス群
    ├── cg-mdk-dto-1.8.9.jar          決済要求/応答情報クラス群
    └── log4j.properties              ログ出力用設定ファイル

チュートリアルでは後続の手順でサンプルプログラム内のディレクトリにコピーし実行に必要な項目のみ設定を行います

実環境では全てのファイルを、利用するアプリケーションから参照するクラスパスに配置して下さい。
詳細は[4G MDK インストールガイド(Java)] を参照してください

MDKサンプルプログラムダウンロード

テストを実施する言語のMDKサンプルプログラム以下のダウンロードページから取得し展開します。

MDKダウンロード
$ curl -OL https://www.veritrans.co.jp/trial/4g/Mdk4G-Sample-java-X.X.X.tar.gz
$ tar zxvf Mdk4G-Sample-java-X.X.X.tar.gz

MDKサンプルプログラムの利用準備

サンプルプログラムへのMDKのコピー

MDKに含まれる本体のjarファイル及び依存ライブラリのjarファイルをサンプルプログラムの command/lib ディレクトリに配置します

$ cp -p MdkJava/tgMdk/*.jar MdkSample-Java/command/lib/
$ cp -p MdkJava/lib/*jar  MdkSample-Java/command/lib/

CA証明書ストアファイルの配置

MDKに含まれるCA証明書ストアファイルをサンプルプログラムの command/certs/ ディレクトリに配置します

$ cp -p MdkJava/resources/cacerts MdkSample-Java/command/certs/

設定ファイルの配置

MDKに含まれる設定ファイルをサンプルプログラムの command/src ディレクトリに配置します

$ cp -p MdkJava/tgMdk/3GPSMDK.properties MdkSample-Java/command/src/
$ cp -p MdkJava/tgMdk/log4j.properties MdkSample-Java/command/src/

MDKの設定

3GPSMDK.properties ファイルに以下の項目を設定します。

  • MERCHANT_CCID
  • MERCHANT_SECRET_KEY
  • SSL_TRUSTSTORE_FILE
<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/3GPSMDK.properties
...
24  ################################################################################
25  # Merchant CCID, please specified the value provided by VeriTrans.
26  MERCHANT_CCID          = <管理サイト(MAP)で確認を行ったマーチャントCCIDを指定します>
27  # Merchant Password, please specified the value provided by VeriTrans.
28  MERCHANT_SECRET_KEY       = <管理サイト(MAP)で確認を行ったマーチャント認証鍵を指定します>
29  #-------------------------------------------------------------------------------
30
31  ################################################################################
32  #-------------------------------------------------------------------------------
33  # CA Certificate filepath
34  SSL_TRUSTSTORE_FILE       = <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/certs/cacerts #(フルパスで指定してください)
...

ログ出力設定ファイル

log4j.properties の 以下の項目を設定します

  • log4j.appender.jp.veritrans.tercerog.mdk.File

任意のファイルを指定可能ですが、フルパスで設定をしてください。

<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/log4j.properties
...
3  log4j.appender.jp.veritrans.tercerog.mdk.File=<MDK Sample 展開ディレクトリ>/MdkSample-Java/mdk_java.log #(フルパスで指定してください)
...

build-command.xmlの設定

build-command.xml に以下項目を設定します

  • <property name="command.home" value=""/>
<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/build-command.xml
...
6  <property name="command.home" value="<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/"/>
...

ant allの実行

ant all を実行しサンプルプログラム利用の準備を行います

$ cd <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/
$ ant -f build-command.xml all
								

決済の実行

このチュートリアルでは以下の順序でクレジットカードの決済を行います。

  1. token
  2. authorize
  3. capture
  4. cancel
  5. search

クレジットカード情報をECサイト等に保存しないために、カード情報をトークン化しトークンを利用して Authorize(与信) 処理を実施します。

※ 通常この処理はクライアント側でJavaScript等を利用し実施しますが、 チュートリアルではcurlコマンドを利用しトークンの発行を行います。

< Token API Key >には管理サイト(MAP)で確認を行ったToken Api Keyを設定します
$ curl -X POST "https://api.veritrans.co.jp:443/4gtoken" \
-H 'Accept:application/json' \
-H 'Content-Type:application/json' \
-d \
'{
    "card_number":"4111111111111111",
    "card_expire":"01/20",
    "security_code":"123",
    "cardholder_name":"TARO YAMADA",
    "token_api_key":"< Token API Key >",
    "lang":"en"
}'
  • トークンサーバーから取得したトークンは一度しかご利用いただけません。(ワンタイムトークン)
  • 取得したトークンには有効期限(15分)があり、有効期限を過ぎるとそのトークンはご利用いただけなくなります。
  • 次の手順(Authorize(与信)の実行)が完了すると、クレジットカード情報は再利用可能な状態で当社に保管されます。

成功した場合以下のような出力が表示されます。

{
    "token": "aea5facd-8c53-497a-a0f3-8e1ad3e6a6a5",
    "token_expire_date": "20221130145717",
    "req_card_number": "411111********11",
    "status": "success",
    "code": "success",
    "message": "Token has been successfully created."
}

レスポンスとして戻った token を利用し与信、決済を実行します。

与信サンプルプログラム 「CardAuthorizeCommand.java」 に前項で取得したトークンを設定します。

<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/jp/veritrans/tercerog/sample/command/card/CardAuthorizeCommand.java
31 // トークン
32 String token = "74e1676b-c8f9-4f77-9a71-092e9ccf3820";

下記のコマンドを実行し与信を行います。

$ cd <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/
$ ant -f build-command.xml card-authorize

card-authorize:
    [java] *- Card(Authorize) -*
    [java] << REQUEST >>
    [java] [Order ID]: 1672450938999
    [java] [WithCapture]: false
    [java] [Amount]: 100
    [java] [JPO]: 10
    [java] [Token]: e3365622-7cea-40ce-a6bf-84c9ab0a0cc1
    [java] << RESPONSE >>
    [java] [Status]: success
    [java] [Message]: 処理が成功しました。
    [java] [Result Code]: A001000000000000
    [java] [Auth Code]: 000000
    [java] [Reference Number]: 012345678901

売上サンプルプログラム 「CardCaptureCommand.java」 を編集し前項で取得した 「orderID」 を設定します

<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/jp/veritrans/tercerog/sample/command/card/CardCaptureCommand.java
...
20 //---------------------------------
21 // テスト用リクエスト電文項目設定
22 //---------------------------------
23 // 取引ID(与信時に利用したものを設定してください)
24 String orderID = "1672450938999";
...

下記のコマンドを実行し、与信を実施した order_id を指定して売上を実施します

$ cd <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/
$ ant -f build-command.xml card-capture


card-capture:
    [java] *- Card(Capture) -*
    [java] << REQUEST >>
    [java] [Order ID]: 1672450938999
    [java] [Amount]: 100
    [java] << RESPONSE >>
    [java] [Status]: success
    [java] [Message]: 処理が成功しました。
    [java] [Result Code]: A001000000000000
    [java] [Auth Code]: 000000
    [java] [Reference Number]:

キャンセルサンプルプログラム 「CardCancelCommand.java」 を編集し前項で取得した 「orderID」 を設定します

<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/jp/veritrans/tercerog/sample/command/card/CardCancelCommand.java
...
20 //---------------------------------
21 // テスト用リクエスト電文項目設定
22 //---------------------------------
23 // 取引ID(キャンセル対象取引IDを設定してください)
24 String orderID = "1672450938999";
...

下記のコマンドを実行し、売上を実施した order_id を指定してキャンセルを実施します

$ cd <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/
$ ant -f build-command.xml card-cancel
card-cancel:
    [java] *- Card(Cancel) -*
    [java] << REQUEST >>
    [java] [Order ID]: 1672450938999
    [java] [Amount]: 100
    [java] << RESPONSE >>
    [java] [Status]: success
    [java] [Message]: 処理が成功しました。
    [java] [Result Code]: A001000000000000
    [java] [Auth Code]: 000000
    [java] [Reference Number]: 012345678901

検索サンプルプログラム 「SearchCommand.java」 に以下の項目を設定します

  • serviceType
  • orderId

orderID は前項で設定した値を設定します。

<MDK Sample 展開ディレクトリ>/MdkSample-Java/command/src/jp/veritrans/tercerog/sample/command/search/SearchCommand.java
...
93  // サービスタイプの設定
94  String[] serviceType = { serviceTypeCard };
...
101 // サービス間検索条件パラメータ値
102 // 取引ID
103 String orderId = "1672450938999";

下記のコマンドを実行し、Authorize(与信)、Capture(売上)、Cancel(キャンセル)を実施した
order_id を指定して取引検索を実施します

$ cd <MDK Sample 展開ディレクトリ>/MdkSample-Java/command/
$ ant -f build-command.xml search

search:
    [java] *- Search -*
    [java] << REQUEST >>
    [java] {"serviceTypeCd":["card"],"requestId":"","containDummyFlag":"true","maxCount":"10","searchParameters":{"common":{"amount":{"from":"1","to":"10000"},"orderId":"1672450938999","mstatus":["success","pending","failure"],"txnDatetime":{"from":"202212310000","to":"202212312359"},"command":["Authorize","Capture","Cancel","Remove","ReAuthorize"]}}}
    [java] << RESPONSE >>
    [java] [Status]: success
    [java] [Message]:
    [java] [Result Code]: N001000000000000
    [java] *---------**---------*
    [java] [Index]: 0
    [java] [Service Type]: card
    [java] [Order ID]: 1672450938999
    [java] [Order Status]: end
    [java] ----
    [java] [Transaction ID]: 82018767
    [java] [Executed Command]: Authorize
    [java] [Transaction Status]: success
    [java] [Transaction Result Code]: A001000000000000
    [java] [Execute Time]: 2022-12-31 11:15:43.884
    [java] [Settlement Amount]: 100
    [java] [Card Transaction Type]: card
    [java] [Gateway Request Date]: 20221231111543
    [java] [Gateway Response Date]: 20221231111543
    [java] [Center Request Date]: 20221231111543
    [java] [Center Response Date]: 20221231111543
    [java] [Center Request Number]:
    [java] [Center Reference Number]:
    [java] [Request Auth Code]:
    [java] ----
    [java] [Transaction ID]: 82018786
    [java] [Executed Command]: Capture
    [java] [Transaction Status]: success
    [java] [Transaction Result Code]: A001000000000000
    [java] [Execute Time]: 2022-12-31 11:19:17.689
    [java] [Settlement Amount]: 100
    [java] [Card Transaction Type]: card
    [java] [Gateway Request Date]: 20221231111917
    [java] [Gateway Response Date]: 20221231111917
    [java] [Center Request Date]:
    [java] [Center Response Date]:
    [java] [Center Request Number]:
    [java] [Center Reference Number]:
    [java] [Request Auth Code]:
    [java] ----
    [java] [Transaction ID]: 82018793
    [java] [Executed Command]: Cancel
    [java] [Transaction Status]: success
    [java] [Transaction Result Code]: A001000000000000
    [java] [Execute Time]: 2022-12-31 11:23:37.712
    [java] [Settlement Amount]: 100
    [java] [Card Transaction Type]: card
    [java] [Gateway Request Date]: 20221231112336
    [java] [Gateway Response Date]: 20221231112337
    [java] [Center Request Date]: 20221231112336
    [java] [Center Response Date]: 20221231112336
    [java] [Center Request Number]:
    [java] [Center Reference Number]:
    [java] [Request Auth Code]:

このチュートリアルで実行したAuthorize(与信)、Capture(売上)、Cancel(キャンセル)の結果が表示されていることを確認してください。