/*
 *  VeriTrans BuySmart Flex
 *  MDK　mauthonly.java　Version 1.0.1
 *  Copyright (c) 2000-2002 VeriTrans Inc.
 *  Note: Authorization test for CCBSXLib Library.
 */

import java.util.*;
import java.text.*;
import CCKK.CCBSXLib.*;

public class mauthonly {
    
    public static void main(String[] args){

	// はじめにCCTransactionのインスタンスをつくります
	// コンストラクタの引数として ccbsx.conf(設定ファイル)のパス
	// をあたえます
	CCTransaction t = new CCTransaction("./ccbsx.conf");

	// 取引コマンドを設定します
	// 以下に示すもののどれかを設定してください
	//   authonly, mauthonly(与信処理)
	//   authcapture, mauthcapture(与信売上処理)
	//   postauth(売上処理)
	//   void(取消処理)
	//   return(返品処理)
	String command = "authonly";
	
	// sendMServerメソッドにわたすHashtableのインスタンスを
	// つくります
	// つくられたHashtableにオンライン取引の情報を設定します
	Hashtable data = new Hashtable();
	
	// 取引ID(25桁以内)を設定します
	// 重複しない値を設定してください
	data.put("order-id", genOrderId());
	
	// 取引金額を設定します(最大8桁,数字のみ)
	data.put("amount", "12345678");
	
	// クレジットカード番号(最大26桁，数字 "-" )を設定します
	//data.put("card-number", "378282246310005"); // AMEX Test Number
	data.put("card-number", "5555444455554442"); //  MASTER Test Number

	// カードの有効期限を設定します(MM/YY)
	data.put("card-exp", "05/05");

	// 取消タイプを設定します
	// 取引コマンドとしてvoidを設定した場合に設定します
	//data.put("txn-type", "postauth");
	
	// 取引内容を表示します
	Enumeration e = data.keys();
	System.out.println("request(" + command + "):");
	while (e.hasMoreElements()) {
	    String key = (String)e.nextElement();
	    String value = (String)data.get(key);
	    System.out.println(key +  " ==> " + value);
	}

	// doTransactionメソッドでベリトランスペイメントゲートウェイに取引を送信します
	// 取引結果はHashtableにキーと値のペアで格納されます
	Hashtable result = t.sendMServer(command, data);
	
	// 取引結果を表示します
	e = result.keys();
	System.out.println("response:");
	while (e.hasMoreElements()) {
	    String key = (String)e.nextElement();
	    String value = (String)result.get(key);
	    System.out.println(key +  " ==> " + value);
	}
    }
    
    public static String genOrderId() {
	SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMddHHmmss");
	Date date = new Date();
	return formatter.format(date);
    }
}






