MDKチュートリアル(PHP8)
はじめに
VeriTrans4Gは、ECなどオンラインサービスからリアル店舗までマルチチャネルに対応可能な総合決済サービスを提供します。
MDKを利用することで、多彩な決済手段を導入可能となりますが、ここではMDKとサンプルプログラムを利用してクレジットカード決済の簡単な動作確認を行います。
お客様の環境へのMDKインストールにあたってはインストールガイドを参照の上実施してください。
テストアカウントの申請
下記サイトにてMDKのテスト利用申請を行います。
URL: 無料テスト利用プログラム お申し込み
管理サイト(MAP)へのログイン
管理サイトにログインを行いMDKを利用する上で必要となる以下の情報を取得します。
URL: MAP
- マーチャントCCID
- マーチャント認証鍵
- Token Api Key
上記情報は [ 管理サイト -> ダッシュボード -> API設定情報 ] から取得します。
実行環境の確認
MDKの利用には、使用言語ごとに以下の環境をご準備ください
Composer 2.0.8以上
- チュートリアルでは説明していませんが、WebアプリケーションのサンプルプログラムはPHP8以上を対象としており、PHP7.4では動作しませんのでご注意ください。
- チュートリアルではUNIXコマンドを用いて説明しますので、環境に合わせて読み替えてください。
MDKダウンロード
テストを実行する言語のMDKを以下のダウンロードページから取得し、展開します。
MDKダウンロード$ curl -OL https://www.veritrans.co.jp/trial/4g/Mdk4G-php8-X.X.X.tar.gz
$ tar zxvf Mdk4G-php8-X.X.X.tar.gz
MDKの確認
展開したMDKには以下のファイルが含まれています。
veritrans-tgmdk/
├── README.txt MDKの導入前にお読みください
├── composer.json プロジェクトの依存情報が記述されています
│ composer.lock 依存パッケージのバージョンリストが記述されています
│ resources
│ └── cert.pem CA証明書ストアファイル
└── src
└── tgMdk MDK本体が格納されています
├── 3GPSMDK.properties MDK設定ファイル
└── dto 各API要求、応答データクラスが格納されています
チュートリアルでは後続の手順でサンプルプログラム内のディレクトリにコピーし実行に必要な項目のみ設定を行います
MDKサンプルプログラムダウンロード
テストを実施する言語のMDKサンプルプログラム以下のダウンロードページから取得し展開します。
MDKダウンロード$ curl -OL https://www.veritrans.co.jp/trial/4g/Mdk4G-Sample-php8-X.X.X.tar.gz
$ tar zxvf Mdk4G-Sample-php8-X.X.X.tar.gz
MDKサンプルプログラムの利用準備
サンプルプログラムへのMDKのコピー
ダウンロードしたMDKをサンプルプログラム内にコピーします
$ cp -pr veritrans-tgmdk veritrans-mdk-sample/local_packages/
MDKの設定
3GPSMDK.propertiesファイルに以下の項目を設定します。
- CA_CERT_FILE
- MERCHANT_CC_ID
- MERCHANT_SECRET_KEY
20 ; SSL暗号用 CA証明書ファイル名
21 CA_CERT_FILE = "../../resources/cert.pem"
...
30 ; マーチャントCCID。VeriTrans指定のものを設定して下さい。
31 MERCHANT_CC_ID = <管理サイト(MAP)で確認を行ったマーチャントCCIDを指定します>
32 ; マーチャントパスワード。VeriTrans指定のものを設定して下さい。
33 MERCHANT_SECRET_KEY = <管理サイト(MAP)で確認を行ったマーチャント認証鍵を指定します>
...
Composer 依存関係のインストール
command ディレクトリに移動し、composer コマンドで依存関係をインストールします
$ cd veritrans-mdk-sample/command/
$ composer install
決済の実行
このチュートリアルでは以下の順序でクレジットカードの決済を行います。
- 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 を利用し与信、決済を実行します。
与信サンプルプログラム 「CLI_CardAuthorize.php」 に前項で取得したトークンを設定します。
44 /**
45 * トークン
46 */
47 $token = "aea5facd-8c53-497a-a0f3-8e1ad3e6a6a5";
... 73 $request_data->setToken($token); // コメントアウトを外し有効化します
...
下記のコマンドを実行し与信を行います。
$ cd <MDK Sample 展開ディレクトリ>/veritrans-mdk-sample/command/app/card/
$ php -f CLI_CardAuthorize.php
Transaction Successfully Complete
[Result Code]: A001000000000000
[Order ID]: dummy1669954544
[Center Reference Number]:
売上サンプルプログラム 「CLI_CardCapture.php」 に前項で利用した order_id を設定します
25 * 取引ID
26 * 与信完了取引のIDを指定
27 */
28 $order_id = "dummy1669954544";
下記のコマンドを実行し、与信を実施した order_id を指定して売上を実施します
$ php -f CLI_CardCapture.php
Transaction Successfully Complete
[Result Code]: A001000000000000
[Center Reference Number]:
キャンセルサンプルプログラム 「CLI_CardCancel.php」 に前項で利用した order_id を設定します
24 /**
25 * 取引ID
26 * 与信完了または売上完了状態の取引のIDを指定
27 */
28 $order_id = "dummy1669954544";
...
下記のコマンドを実行し、売上を実施した order_id を指定してキャンセルを実施します
$ cd <MDK Sample 展開ディレクトリ>/veritrans-mdk-sample/command/app/card/
$ php -f CLI_CardCancel.php
Transaction Successfully Complete
[Result Code]: A001000000000000
[Center Reference Number]:
検索サンプルプログラム 「CLI_Search.php」 に前項で利用した order_id を設定します。
142 /**
143 * 1. 取引ID
144 */
145 $order_id = "dummy1669954544";
...
下記のコマンドを実行し、与信、売上、キャンセルを実施した order_id を指定して取引検索を実施します
$ cd <MDK Sample 展開ディレクトリ>/veritrans-mdk-sample/command/app/search/
$ php -f CLI_Search.php
Transaction Successfully Complete
[Result Code]: N001000000000000
[Search Count]: 1
----- Search Results -----
*---------**---------*
Index: 0
Service Type: card
Order ID: dummy1669954544
Order Status: end
Card Transaction ID: 82033649
Currency:
----
Transaction ID: 82033649
Executed Command: Authorize
Transaction Status: success
Transaction Result Code: A001000000000000
Execute Time: 2023-01-02 10:25:52.662
Settlement Amount: 5
Card Transaction Type: a
Gateway Request Date: 20230102102552
Gateway Response Date: 20230102102552
Center Request Date: 20230102102552
Center Response Date: 20230102102552
Center Request Number:
Center Reference Number:
Request Auth Code:
----
Transaction ID: 82033672
Executed Command: Capture
Transaction Status: success
Transaction Result Code: A001000000000000
Execute Time: 2023-01-02 10:39:36.247
Settlement Amount: 5
Card Transaction Type: pa
Gateway Request Date: 20230102103936
Gateway Response Date: 20230102103936
Center Request Date:
Center Response Date:
Center Request Number:
Center Reference Number:
Request Auth Code:
----
Transaction ID: 82033682
Executed Command: Cancel
Transaction Status: success
Transaction Result Code: A001000000000000
Execute Time: 2023-01-02 10:45:09.323
Settlement Amount: 5
Card Transaction Type: vpa
Gateway Request Date: 20230102104508
Gateway Response Date: 20230102104509
Center Request Date: 20230102104508
Center Response Date: 20230102104508
Center Request Number:
Center Reference Number:
Request Auth Code:
このチュートリアルで実行したAuthorize(与信)、Capture(売上)、Cancel(キャンセル)の結果が表示されていることを確認してください。