MDKインストールガイド(Java)
導入の前に
本ガイドの内容
本ガイドは、株式会社DGフィナンシャルテクノロジーが提供するVeriTrans4Gを利用するための専用ソフトウェアMDK(Merchant Development Kit)をインターネット店舗などに導入する開発者向けのガイドです。
MDKファイル構成や設定方法、サンプルプログラム等について記載しています。
導入準備
基本導入手順
VeriTrans4G Java版MDKの導入にあたり、以下の作業が必要となります。
- Java実行環境の確認・準備
- MDK・ライブラリ組込
- MDK設定
実行環境の確認と準備
導入環境がJava 8以上であることをご確認下さい。
設定方法
MDK・関連ライブラリの組込
ダウンロードしたMdk4G-java8-.tar.gzを解凍します。
ディレクトリ/ファイル名 | 説明 | ||
---|---|---|---|
MdkJava/ | README.txt | MDKの導入前にお読みください | |
CHANGELOG.txt | 改版履歴 | ||
tgMdk/ | cg-mdk-java8-.jar | 決済要求ビジネスロジッククラス群 | |
cg-mdk-dto-java8 -.jar | 決済要求/応答情報クラス群 | ||
3GPSMDK.properties | MDK設定ファイル | ||
log4j2.xml | ログ出力用設定ファイル | ||
lib/ | commons-codec-1.16.1.jar | 依存ライブラリ | |
json-simple-1.1.1.jar | |||
log4j-api-2.23.0.jar | |||
log4j-core-2.23.0.jar | |||
slf4j-api-2.0.12.jar | |||
log4j-slf4j2-impl-2.23.0.jar | |||
resources/ | cacerts | CA証明書ストアファイル |
全てのファイルを、利用するアプリケーションから参照するクラスパスに配置して下さい。
なお、lib/ 配下のライブラリを既にご使用の場合、必ずしも入れ替えを行う必要はありませんが、ライブラリのバージョンによっては動作に問題が発生する可能性がありますので、十分な動作確認を行っていただきますようお願いします。
MDKのバージョンアップに関する注意点
(1) 古いバージョンのライブラリの削除について
アプリケーションのクラスパスにある古いバージョンのjarファイルは必ず削除してください。
MDKのバージョンによってファイル名が異なりますので、以下の表を参考にしてください。
VeriTrans3G MDK | tgMdk-.jar, tgMdkDto.jar |
VeriTrans4G MDKバージョン2.0.0未満 | cg-mdk-xxx.jar, cg-mdk-dto-xxx.jar |
VeriTrans4G MDKバージョン2.0.0以上 | cg-mdk-java8-xxx.jar, cg-mdk-dto-java8-xxx.jar |
その他の古い依存ライブラリのjarも忘れずに削除してください。
(2) ロギング用ライブラリに関する注意点
MDKのログは、SLF4J (https://www.slf4j.org/) を介して出力されますので、MDKを導入するシステム側で任意のロガーを選択可能です。
なお、バージョン2.0.0未満のMDKでは、下位互換性に配慮しlog4jのバージョン1系のライブラリを同梱していましたが、MDKバージョン2.0.0からはlog4jバージョン2系のライブラリを同梱するように変更しておりますのでご注意ください。
MDKの設定
VeriTrans4G MDK設定ファイルは、3GPSMDK.propertiesです。設定ファイルには重要な情報が記載されているため、第三者に見えないようにしてください。
(1) 接続先URLの設定
接続先サーバ(決済サーバー)のURLを設定します。
※デフォルトでの設定のままご利用下さい。
HOST_URL = https://xxx.xxx.xxx.xxx:xxx
(2)接続制御用の設定
-
(A)接続タイムアウト値(秒)の設定
決済サーバーへの接続が確立できない場合に、接続試行を中断するまでの接続試行開始からの秒数を指定します。CONNECTION_TIMEOUT = XXX
-
(B)読み取りタイムアウト値(秒)の設定
決済サーバーからのレスポンスがない場合に、接続を切断するまでのリクエスト開始からの秒数を指定します。READ_TIMEOUT = XXX
-
(C)ダミーモードの指定
テスト用にダミー決済を発生させる場合に指定します。DUMMY_REQUEST = x 「0」:ダミーモードOFF 「1」:ダミーモードON
-
(D)MDK固有エラーモード
VeriTrans4Gに無関係な、MDK固有のエラーテストを実施する場合に指定します。MDK_ERROR_MODE = x 「0」:MDKエラーモードOFF 「1」:MDKエラーモードON
※エラーモードONの場合にはvResultCodeに "MA99" が返戻されます。
(3)プロキシサーバの設定
-
(A)プロキシサーバURL
プロキシサーバを利用する場合、サーバホスト名/IPアドレス、ポート番号を設定して下さい。PROXY_URL = http://xxxx.xxx.xxx.xxx:xxxx
-
(B)プロキシサーバ接続認証用ユーザID
プロキシサーバを利用し、かつ接続に認証が必要な場合、プロキシサーバ接続用ユーザ名を設定して下さい。PROXY_USER_ID = xxxxxxx
-
(C)プロキシサーバ接続認証用パスワード
プロキシサーバを利用し、かつ接続に認証が必要な場合、プロキシサーバ接続用パスワードを設定して下さい。PROXY_USER_PW = xxxxxxx
(4)マーチャント認証用の設定
-
(A)マーチャントCCIDの設定
ベリトランスより通知の、店舗サイト用CCID文字列を指定します。MERCHANT_CCID = xxxxxxxxxxxxx
-
(B)マーチャント認証鍵の設定
ベリトランスより通知の、店舗サイト用認証鍵文字列を指定します。MERCHANT_SECRET_KEY = xxxxxxxxxxxxxxxx
(5)SSL通信用の設定(オプション設定)
通常は設定せずにご利用ください(デフォルトでは未設定)。決済サーバーとのSSL暗号化通信でエラーが発生する場合、OSやJavaを安全なバージョンに更新したり、本設定でCA証明書ファイルのパスを明示的に指定することで解決する場合があります。
※ver1.9.0以前のMDKをご利用の場合は設定が必須になります。
-
(A)CA(Certificate Authority)証明書の設定
MDKに同梱のCA証明書ファイルの絶対パスを指定します。SSL_TRUSTSTORE_FILE =
-
(B)CA証明書アクセスパスワードの設定
CA証明書のアクセスパスワードを指定します。
(A)にてMDKに同梱のCA証明書ファイルを指定した際は"changeit"を指定してくださいSSL_TRUSTSTORE_PASSWORD =
(6)SSLプロトコルの設定
-
ベリトランスとSSL暗号通信を行う際のSSLプロトコルを指定します。
※デフォルトでの設定のままご利用下さい。
SSL_PROTOCOL = xxxxxxx
[ログ設定ファイル]
ログ設定ファイルはご利用のロギングライブラリによって異なりますが、ここではLog4jを例とします。
Log4jの設定ファイルはlog4j2.xmlです。以下に最小限の指定項目を記載します。
その他の設定については、「log4j (http://logging.apache.org/log4j/)」の設定方法を参照し設定することが可能です。
-
ログ出力レベルの指定
MDKのログ出力レベルを指定します。
指定可能値:「OFF/FATAL/ERROR/WARN/INFO/DEBUG(※)」※より多くの情報を出力したい場合はDEBUGを設定して下さい。
-
ログ出力ファイルの指定
ログ出力ファイルのパスを指定します。
アプリケーションからファイル出力可能なディレクトリを指定して下さい。
サンプルプログラムの利用
サンプルプログラム(コマンドラインプログラム)設定・動作確認
- 動作確認を行うためにはAnt(Apache Ant)をインストールする必要があります。
(1)Mdk4G-Sample-java-.tar.gzを解凍
Mdk4G-Sample-java-.tar.gzを解凍します。
コマンドラインから動作確認が可能なサンプルプログラムはMdkSample-Java/commandディレクトリにあります。
(2)4G MDK本体のjarファイル群の配置
command/libディレクトリに、MDKのアーカイブに含まれるMDK本体のjarファイルおよび依存ライブラリのjarファイルを配置します。
MDKアーカイブに含まれるファイルの詳細については「表 1 Java版4G MDKファイル一覧」をご参照下さい。
(3)環境設定
command/srcディレクトリに、MDKのアーカイブに含まれる設定ファイルを配置します。「3.2 MDKの設定」を参照し、店舗様のサーバ環境に合わせた設定値を設定して下さい。
- 3GPSMDK.propertiesとログ出力設定ファイル(Log4jの場合はlog4j2.xml)が設定対象です。
MDKアーカイブに含まれるファイルの詳細については「表 1 Java版4G MDKファイル一覧」をご参照下さい。
(4)Javaソースコードの確認、リクエストパラメータの修正
Javaソースコードを確認し、必要に応じてリクエストパラメータを修正します。
クレジットカード決済(与信)のサンプルプログラムを例とします。
(ソースファイル:src/jp/veritrans/tercerog/sample/command/card/CardAuthorizeCommand.java)
以下に、VeriTrans4Gへ送信するパラメータの設定箇所を抜粋します。
開発ガイドをご参照のうえ、必要なパラメータを設定してください。
//---------------------------------
// テスト用リクエスト電文項目設定
//---------------------------------
// 取引ID
String orderID = Custom.getOrderID();
// 与信方法(同時売上実施の有無)
String withCapture = "false";
// 支払金額
String amount = Custom.getAmount();// 支払方法
String jpo = "10";
// トークン
String token= "0a812412-682c-4dad-8a5d-720caf23bca0";
以下省略 ......
(5)プログラムのテスト
commandディレクトリに戻り、プログラムのテストを行います。
- command/build-command.xml をエディタで開き、commandディレクトリのパスを設定します。
<property name="command.home" value="commandディレクトリのフルパス" />
- 実行環境にAntのパスを設定し、以下のコマンドを実行すると、各サービスのAntターゲット名の一覧が出力されます。
C:\> ant -f build-command.xml help Buildfile: build-command.xml help: [echo] Usage: [echo] ---------------------------------------------------------------------- [echo] ant compile - to Compile all programs. [echo] ant bank-authorize - to Execute Bank Authorize. [echo] ant card-authorize - to Execute Card Authorize. [echo] ant card-reauthorize - to Execute Card Re-authorize. [echo] ant card-cancel - to Execute Card Cancel. [echo] ant card-capture - to Execute Card Capture [echo] ant card-retry - to Execute Card Retry [echo] ant cvs-authorize - to Execute Cvs Authorize. [echo] ant cvs-cancel - to Execute Cvs Cancel. [echo] ant em-authorize - to Execute e-Money Authorize. [echo] ant em-cancel - to Execute e-Money Cancel. [echo] ant em-refund - to Execute e-Money Refund. [echo] ant mpi-authorize - to Execute Mpi Authorize. [echo] ant mpi-reauthorize - to Execute Mpi Re-authorize. [echo] ant saison-cancel - to Execute Saison Cancel. [echo] ant search - to Search. [echo] ---------------------------------------------------------------------- BUILD SUCCESSFUL Total time: 1 second
- サンプルの動作を確認します。
build-command.xmlに定義されているAntターゲットを実行すると、対応するサンプルプログラムがコンパイル後に実行されます。以下は、クレジットカード決済(与信)のサンプルプログラムの実行例です。C:\> ant -f build-command.xml card-authorize Buildfile: build-command.xml compile: card-authorize: [java] *- Card(Authorize) -* [java] << REQUEST >> [java] [Order ID]: 1269950814479 [java] [WithCapture]: false [java] [Amount]: 100 [java] [JPO]: 10 [java] [Token]: 0a812412-682c-4dad-8a5d-720caf23bca0 [java] << RESPONSE >> [java] [Status]: success [java] [Message]: 処理が成功しました。 [java] [Result Code]: A001H00100000000 [java] [Auth Code]: 1234567 [java] [Reference Number]: 012345678901 BUILD SUCCESSFUL Total time: 6 seconds
- コンパイルエラーが発生する場合は、build-command.xmlに設定したパスが正しいこと、MDKおよび依存ライブラリが適切なディレクトリにコピーされていることをご確認ください。
- プログラムの実行時エラーが発生する場合は、classesディレクトリにコピーされた3GPSMDK.propertiesとログ出力設定ファイルの設定の内容が適切であることをご確認下さい。
- 実行時のコンソールには、決済サーバーからのレスポンス値が出力されます。通信内容の詳細についてはログファイルをご確認ください。
サンプルプログラム(Webアプリケーション)設定・動作確認
- 動作確認を行うためにはAnt(Apache Ant)とtomcat等のWEBアプリケーションサーバ(サーブレットコンテナ)をインストールする必要があります。
(1)Mdk4G-Sample-java-.tar.gzを解凍
ダウンロードしたMdk4G-Sample-java-.tar.gzを解凍します。
WEBアプリケーションとして実装されているサンプルプログラムはMdkSample-Java/webディレクトリにあります。
(2)サンプルWebアプリケーションの設定
web/WEB-INF/srcディレクトリに、MDKのアーカイブに含まれている設定ファイルを配置します。「3.2 MDKの設定」を参照し、店舗様のサーバ環境に合わせた設定値を設定して下さい。
- 3GPSMDK.propertiesとログ出力設定ファイル(Log4jの場合はlog4j2.xml)が設定対象です。
MDKアーカイブに含まれるファイルの詳細については「表 1 Java版4G MDKファイル一覧」をご参照下さい。
次に、各決済サービスの動作確認を行うために必要なpropertiesファイルの設定を行います。
mpi.properties
- 本人認証・決済後の戻りURLを指定します。
termUrl=http://貴社ドメイン/web/mpi/SearchExec
em.properties
- nanaco決済 決済完了後の戻りURLを指定します。
tcc.completeNoticeUrl=http://貴社ドメイン/web/em/Complete
- nanaco決済 復旧処理後の戻りURLを指定します。
tcc.reAuthorizeRedirectionUrl=http://貴社ドメイン/web/em/Complete
upop.properties
- 決済後の戻りURLを指定します。(加盟店側のUPOPゲートウェイからの結果を受け取るURLを設定)
termUrl=http://貴社ドメイン/web/upop/AuthorizeResult
paypal.properties
- ユーザ認証後の戻りURLを指定します。
return.url=http://貴社ドメイン/web/paypal/AuthorizeConfirm
- ユーザ認証キャンセル時の戻りURLを指定します。
cancel.url=http://貴社ドメイン/web/PaymentMethodSelect
push.properties
- 結果通知データ出力ディレクトリを指定します。
outputDirectory=/tmp/
saison.properties
- PC、スマートフォン版のマーチャントのリダイレクト先URLを指定します。
merchant_redirection_uri.PC=http://貴社ドメイン/web/saison/Capture
- フィーチャーフォン版のマーチャントのリダイレクト先URLを指定します。
merchant_redirection_uri.MB=http://貴社ドメイン/web/saison/mb/Capture
- 決済方式を指定します。
PC_OR_SP_settlement_method=PC
alipay.properties
- 決済成功後の戻りURLと決済失敗後の戻りURLを指定します。
(店舗側のAlipayゲートウェイからの結果を受け取るURLを設定)successUrl=http://貴社ドメイン/web/alipay/AuthorizeResult errorUrl=http://貴社ドメイン/web/alipay/AuthorizeResult
carrier.properties
- 決済成功時、決済エラー時、および決済キャンセル時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/carrier/Result?result=SUCCESS cancelUrl=http://貴社ドメイン/web/carrier/Result?result=CANCEL errorUrl=http://貴社ドメイン/web/carrier/Result?result=ERROR
- 決済成功時、決済エラー時、および決済キャンセル時に店舗側サイトに画面遷移を戻すためのURLを指定します。(フィーチャーフォン版)
successUrl.mb=http://貴社ドメイン/web/carrier/mb/Result?result=SUCCESS cancelUrl.mb=http://貴社ドメイン/web/carrier/mb/Result?result=CANCEL errorUrl.mb=http://貴社ドメイン/web/carrier/mb/Result?result=ERROR
- 「ダミー取引」時のプッシュURLを指定します。
pushUrl=http://貴社ドメイン/web/push/carrierPush
- 「ダミー取引」時のプッシュURLを指定します。(フィーチャーフォン版)
pushUrl.mb=http://貴社ドメイン/web/push/carrierPush
oricosc.properties
- 決済完了後、消費者ブラウザに店舗の申込完了画面を表示するためのURLを指定します。
(PC版、スマートフォン版の店舗のリダイレクト先)merchant_redirection_url.PC = http://貴社ドメイン/web/oricosc/AuthorizeComplete
- 決済完了後、消費者ブラウザに店舗の申込完了画面を表示するためのURLを指定します。
(フィーチャーフォン版の店舗のリダイレクト先)merchant_redirection_url.MB = http://貴社ドメイン/web/oricosc/mb/AuthorizeComplete
rakuten.properties
- 決済成功時および決済エラー時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/rakuten/Result?result=SUCCESS errorUrl=http://貴社ドメイン/web/rakuten/Result?result=ERROR
- 「ダミー取引」時のプッシュURLを指定します。
pushUrl=http://貴社ドメイン/web/push/rakutenPush
recruit.properties
- 決済成功時および決済エラー時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/recruit/Result?result=SUCCESS errorUrl=http://貴社ドメイン/web/recruit/Result?result=ERROR
- 「ダミー取引」時のプッシュURLを指定します。
pushUrl=http://貴社ドメイン/web/push/recruitPush
linepay.properties
- 決済成功時、決済エラー時、および決済キャンセル時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/linepay/Result?result=SUCCESS cancelUrl=http://貴社ドメイン/web/linepay/Result?result=CANCEL errorUrl=http://貴社ドメイン/web/linepay/Result?result=ERROR
- 「ダミー取引」時のプッシュURLを指定します。
pushUrl=http://貴社ドメイン/web/push/linepayPush
paynowid.properties
- クレジットカード決済(3D-Secure認証付き)の本人認証・決済後、戻りURLの設定
※PayNowIDカード情報を利用した場合
termUrl=http://貴社ドメイン/web/mpi/SearchExec
bank.properties
- 銀行決済完了後の戻りURLを指定します。
termUrl=http://貴社ドメイン/web/bank/Thanks
token.properties
- クレジットカードを利用した決済時に、店舗サイト毎に発行されたトークン取得用のキーを指定します。
tokenApiKey=店舗サイト毎に発行されたトークン取得用のキー
- クレジットカードを利用した決済時に、トークン取得用のURLを指定します。
※デフォルトでの設定のままご利用下さい。tokenApiUrl=https://xxx.xxx.xxx.xxx/4gtoken
paypay.properties
- 決済成功時、決済エラー時、および決済キャンセル時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/paypay/Result?result=SUCCESS cancelUrl=http://貴社ドメイン/web/paypay/Result?result=CANCEL errorUrl=http://貴社ドメイン/web/paypay/Result?result=ERROR
- 「ダミー取引」時のプッシュURLを指定します。
pushUrl=http://貴社ドメイン/web/push/paypayPush
amazonpay.properties
- 決済成功時、決済エラー時、および決済キャンセル時に店舗側サイトに画面遷移を戻すためのURLを指定します。
successUrl=http://貴社ドメイン/web/amazonpay/Result?result=SUCCESS cancelUrl=http://貴社ドメイン/web/PaymentMethodSelect errorUrl=http://貴社ドメイン/web/amazonpay/Result?result=ERROR
(3)サンプルWEBアプリケーションのコンパイル
build-web.xmlの以下の行を修正します。
<property name="application.home" value="店舗様アプリのwebコンテナのパスを設定"/>
<property name="servlet.api" value="Servlet APIを含んだjarへのフルパスを設定"/>
※tomcatの場合、ServletAPIのjarは[インストールディレクトリ]/lib/servlet-api.jarにあります。
以下のコマンドでコンパイルを行います。
ant -f build-web.xml
(4)サンプルWebアプリケーションのデプロイ
設定済みのwebディレクトリをWebアプリケーションサーバにデプロイします。
※tomcatの場合、デフォルトの設定では[インストールディレクトリ]/webappsにコピーすると自動デプロイされます。
(5)サンプルの動作確認
WEBアプリケーションのURLにブラウザからアクセスすると、サンプルのトップページが表示されます。
URLの例:
http://貴社ドメイン:8080/web/PaymentMethodSelect.jsp
トップページから、各決済サービスの画面に遷移し、動作をご確認ください。
サンプルプログラム(結果通知受信用プログラム)設定・動作確認
結果通知受信用プログラムは、決済サーバーから店舗様へ消費者アクションの結果、または決済サーバーにおける取引のステータスの変化の通知データを受信するサーブレットのサンプルプログラムです。
通知される内容(以後、結果通知)の詳細については、開発ガイドをご参照ください。
(1)Mdk4G-Sample-java-1.1.2.tar.gzを解凍
ダウンロードしたMdk4G-Sample-java-.tar.gzを解凍します。
WEBアプリケーションとして実装されているサンプルプログラムはMdkSample-Java/webディレクトリにあります。結果通コンパイルおよびデプロイの手順については、4.2をご参照ください。
(2)結果通知受信用Javaソースコードを確認
結果通知受信用Javaソースコードはweb/WEB-INF/src/jp/veritrans/tercerog/sample/pushに入っています。サンプルプログラムのため、結果通知データを受信し、ファイル出力を行う単純な実装としています。
(3)結果通知データの出力先ディレクトリの設定
web/WEB-INF/src/push.propertiesに、結果通知データの出力先ディレクトリを設定してください。
outputDirectory=/tmp/ <- 店舗様環境に合わせて設定
(4)コンパイルとデプロイを実施
4.2を参考に、コンパイルとデプロイを行います。
(5)結果通知データ受信用URLのマッピングルール確認
web/WEB-INF/web.xmlに、結果通知データ受信用URLのマッピングルールが定義されています。店舗様の環境に合わせてご調整ください。
<servlet>
<servlet-name>BankPushServlet</servlet-name>
<servlet-class>jp.veritrans.tercerog.sample.push.BankPushServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>CarrierPushServlet</servlet-name>
<servlet-class>jp.veritrans.tercerog.sample.push.CarrierPushServlet</servlet-class>
</servlet>
~ 省略 ~
<servlet>
<servlet-name>PayNowIdCardCleaningPushServlet</servlet-name>
<servlet-class>jp.veritrans.tercerog.sample.push.PayNowIdCardCleaningPushServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>PayNowIdRecurringPushServlet</servlet-name>
<servlet-class>jp.veritrans.tercerog.sample.push.PayNowIdRecurringPushServlet</servlet-class>
</servlet>
~ 省略 ~
<servlet-mapping>
<servlet-name>BankPushServlet</servlet-name>
<url-pattern>/push/bankPush</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CarrierPushServlet</servlet-name>
<url-pattern>/push/carrierPush</url-pattern>
</servlet-mapping>
~ 省略 ~
<servlet-mapping>
<servlet-name>PayNowIdCardCleaningPushServlet</servlet-name>
<url-pattern>/push/paynowidCardCleaningPush</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PayNowIdRecurringPushServlet</servlet-name>
<url-pattern>/push/paynowidRecurringPush</url-pattern>
</servlet-mapping>
(6)結果通知受信用サンプルプログラムの動作確認
結果通知受信用サンプルプログラムを動作させます。
webディレクトリ自体は、標準WEBアプリケーションを想定して作られているため、一般的なアプリケーションサーバのWEBコンテナにデプロイすれば基本的には動作します。
例えばtomcatの場合は、webappsにwebディレクトリをコピーすれば、下記URLで結果通知受信用サーブレットが動作します。
- MPI用: http://貴社ドメイン/web/push/mpiPush
- 銀行用: http://貴社ドメイン/web/push/bankPush
- コンビニ用: http://貴社ドメイン/web/push/cvsPush
- 電子マネー用: http://貴社ドメイン/web/push/emPush
- PayPal用: http://貴社ドメイン/web/push/paypalPush
- 銀聯用: http://貴社ドメイン/web/push/upopPush
- Alipay用: http://貴社ドメイン/web/push/alipayPush
- キャリア決済用: http://貴社ドメイン/web/push/carrierPush
- ショッピングクレジット決済用: http://貴社ドメイン/web/push/oricoscPush
- 楽天ID決済用: http://貴社ドメイン/web/push/rakutenPush
- リクルートかんたん支払い用: http://貴社ドメイン/web/push/recruitPush
- LINE Pay用: http://貴社ドメイン/web/push/linepayPush
- PayPay用: http://貴社ドメイン/web/push/paypayPush
- AmazonPay用: http://貴社ドメイン/web/push/amazonpayPush
- ワンクリック継続課金サービス(洗替機能)用:
http://貴社ドメイン/web/push/paynowidCardCleaningPush - ワンクリック継続課金サービス(継続課金機能)用:
http://貴社ドメイン/web/push/paynowidRecurringPush
※https://も利用可能です。
結果通知データを受信すると、push.propertiesに設定した場所にCSV形式のファイルが作成されます。
(結果通知項目の詳細は、VeriTrans4G開発ガイドを参照して下さい)
- このサンプルプログラムを利用して、決済サーバーからの通知を受信するテストを実施する場合は、MAP(マーチャント管理ポータル)の「各種設定変更」より通知URLの設定を行う必要があります。設定方法につきましては、MAPのご利用ガイドをご参照ください。
- 一部のサービスについては、MDKのリクエストパラメータに通知URLを設定することができます。この場合は、MAPから通知URLの設定を行わなくても通知の受信テストが可能です。テスト対象のサービスが通知URLをリクエストパラメータで設定できるかどうかは、サービス毎のインターフェース詳細にて、リクエストパラメータの記載内容をご確認ください。
付録
MDKメソッドリスト
MDKのクラス、メソッドの一覧をJavadoc形式で出力して公開しています。
ダウンロードサイトより「MDK_MethodList_Java」を入手し、「index.html」、「index-all.html」よりご参照ください。
MDKで複数のマーチャントIDを使い分ける方法
(1)決済要求毎にマーチャントIDを切り替える
MDKは通常、設定ファイル(3GPSMDK.properties)に記述されたマーチャントCCIDとSECRET_KEY(以下、認証情報)を利用して署名を算出し、決済要求時に付与して送信します。署名の算出は、処理要求単位(トランザクション単位)で行います。
マーチャントIDの切り替えを行うためには、決済要求の実行前に、MDKが保持しているメモリ上の認証情報を上書きする必要があります。
※MDKは、初回の呼び出し時に設定ファイルから読み込んだ認証情報を、スタティックな情報として保持しています。そのため、設定ファイル内の認証情報を書き換えても、アプリケーションの再起動を行うまで認証情報は反映されません。
認証情報を上書き設定する手順を以下に示します。
- 利用する認証情報を取得する
- メモリ上の認証情報を、取得した情報で上書き設定する(*1)
- トランザクションオブジェクトを生成する
- トランザクションを実行する
以下の点に注意して実装してください。
- MDKの仕様上、設定ファイル(3GPSMDK.properties)内のマーチャントCCIDとSECRET_KEYには、適当な値(半角英数字)を設定してください。未設定の場合、MDKの初期化時にエラーとなります。
- 認証情報の上書き設定は、必ずトランザクションオブジェクトを生成する「前に」行ってください。
- MDKの設定はメモリ上に保持されますので、毎回認証情報を設定してください。スレッドが再利用されるケースでは、前回上書きした値が保持されますので、意図しないマーチャントIDで決済が行われる可能性があります。
- 本機能をご利用の際は、マーチャントIDが正しく切り替わっているかどうか、十分にテストを実施してください。
(*1)スレッドスタティックな形で保持している情報が上書きされますが、決済要求の都度、使用する情報を設定する形で実装してください。例えば、設定ファイルには認証情報Aが記述されているので、認証情報Bを使いたいときだけ上書きを行う、という実装では正しく切替ができません。
【サンプルコード】
ここでは、認証情報がプロパティファイル(merchant_info.properties)に保存されているものとします。
merchant_info.properties
# propertiesファイル読み込みサンプル_抜粋.txtに対応するpropertiesファイルのサンプルです。
# "merchant_" + merchantUniqueValue + "_ccid"でそのマーチャントのCCIDを。
# "merchant_" + merchantUniqueValue + "_secretKey"でそのマーチャントのSecretKeyを設定します。
# merchantUniqueValueの値は、CCIDとSecretKeyでペアになるように記述してください。
# マーチャント1の設定
merchant_1_ccid=A100000000000000000001CC
merchant_1_secretKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# マーチャント2の設定
merchant_2_ccid=A100000000000000000002CC
merchant_2_secretKey=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
# マーチャント3の設定
merchant_3_ccid=A100000000000000000003CC
merchant_3_secretKey=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
認証情報の上書き処理の実装例を以下に示します。
// マーチャント毎のccidとsecretKeyを管理しているプロパティファイルを読み込みます。
ResourceBundle bundle = ResourceBundle.getBundle("merchant_info");
// マーチャントを識別するための文字列を取得します。(サンプルとして、ユニーク値を1としています。)
String merchantUniqueValue = "1";
// プロパティファイルから、ccidとsecretKeyを取得します。
String ccid = bundle.getString("merchant_" + merchantUniqueValue + "_ccid");
String secretKey = bundle.getString("merchant_" + merchantUniqueValue + "_secretKey");
MerchantSettingContext.Data data = MerchantSettingContext.getContext();
//マーチャントCCIDを設定します
data.setMerchantCcid(ccid);
//マーチャント鍵を設定します
data.setMerchantSecretKey(secretKey);
//RequestDtoにリクエストを設定する処理を行ってください。
//このgetInstance()のタイミングでmerchant_ccid, secretKeyが設定されます。
tran = TransactionFactory.getInstance(reqDto)
(2)結果通知における content-hmac の検証
VeriTrans4G より通知される結果通知のPOSTリクエストには、content-hmac というヘッダが設定されています。この値はリクエストボディから算出されます。
この content-hmac のチェックを行うことで、リクエストが改竄されていないかどうかをチェックすることが可能ですが、算出に SECRET_KEY の値を利用するため、content-hmac のチェック時には注意が必要となります。具体的なチェック方法につきましては、以下のサンプルをご参照ください。
【サンプルコード】
content-hmac のチェックには、MdkMerchantUtility クラスの checkMessageメソッドを利用します。
デフォルトのサンプルでは、String 型の引数を2つ指定するメソッドで実装されていますが、任意のマーチャント認証鍵を指定する場合は、以下のように、マーチャント認証鍵の値を第一引数に指定する checkMessageのオーバーロードメソッドを利用します。
import jp.veritrans.tercerog.mdk.util.MdkMerchantUtility;
・・・
String contentHmac = request.getHeader("content-hmac");
String body = ・・・ // リクエストボディの値
・・・
boolean isOK = MdkMerchantUtility.checkMessage("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", body, contentHmac);
第二、第三引数に指定する値は、マーチャント認証鍵を指定しない場合のサンプルにおけるbody(リクエストボディの内容) 、contentHmac(content-hmacヘッダの値)の値と同じです。
MerchantSettingContext.Dataのオブジェクト(インスタンス)は、ThreadLocalに保存されているため、Java VMで1つではなく、該当スレッドで1つ保持される形となっています。
MerchantSettingContext.Data data = MerchantSettingContext.getContext();
//マーチャントCCIDを設定します
data.setMerchantCcid(ccid);
//マーチャント鍵を設定します
data.setMerchantSecretKey(secretKey);