MDKチュートリアル(Java)
はじめに
VeriTrans4Gは、ECなどオンラインサービスからリアル店舗までマルチチャネルに対応可能な総合決済サービスを提供します。
MDKを利用することで、多彩な決済手段を導入可能となりますが、ここではMDKとサンプルプログラムを利用してクレジットカード決済の簡単な動作確認を行います。
お客様の環境へのMDKインストールにあたってはインストールガイドを参照の上実施してください。
テストアカウントの申請
下記サイトにてMDKのテスト利用申請を行います。
URL: 無料テスト利用プログラム お申し込み
管理サイト(MAP)へのログイン
管理サイトにログインを行いMDKを利用する上で必要となる以下の情報を取得します。
URL: MAP
- マーチャントCCID
- マーチャント認証鍵
- Token Api Key
上記情報は [ 管理サイト -> ダッシュボード -> API設定情報 ] から取得します。
実行環境の確認
MDKの利用には、使用言語ごとに以下の環境をご準備ください
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
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
任意のファイルを指定可能ですが、フルパスで設定をしてください。
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=""/>
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
決済の実行
このチュートリアルでは以下の順序でクレジットカードの決済を行います。
- token
- authorize
- capture
- cancel
- search
クレジットカード情報をECサイト等に保存しないために、カード情報をトークン化しトークンを利用して Authorize(与信) 処理を実施します。
※ 通常この処理はクライアント側でJavaScript等を利用し実施しますが、 チュートリアルではcurlコマンドを利用しトークンの発行を行います。
$ 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"
}'
- テストで利用するクレジットカード番号に関して詳細は 「導入テストガイド」 を参照してください
- トークンの発行に関しては詳細は 「MDK トークン 開発ガイド」 を参照してください
- トークンサーバーから取得したトークンは一度しかご利用いただけません。(ワンタイムトークン)
- 取得したトークンには有効期限(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」 に前項で取得したトークンを設定します。
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」 を設定します
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」 を設定します
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 は前項で設定した値を設定します。
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(キャンセル)の結果が表示されていることを確認してください。