/*
 *  VeriTrans BuySmart Flex
 *  MDK　mauthonly.java　Version 1.0.0
 *  Copyright (c) 2000-2004 VeriTrans Inc.
 *  Note: Authorization test for JPGWLib Library.
 */
import java.util.Date;
import java.util.Hashtable;
import java.text.SimpleDateFormat;
import java.util.Iterator;

import Jp.BuySmart.JPGWLib.Transaction;
import Jp.BuySmart.JPGWLib.TransactionFactory;

import org.apache.log4j.BasicConfigurator;

public class mauthonly  {
	public static void main(String[] args){	
		//jpgwlib.properties(設定ファイル)を指定
		String PROPERTIES = "/usr/local/bsf/bsfmdk/sample/command/properties/jpgwlib.properties";
		String orderID = null;

		BasicConfigurator.configure();

		//取引IDを生成
		SimpleDateFormat formatter = new SimpleDateFormat ("yyyyMMddHHmmss");
		Date date = new Date();
		orderID = formatter.format(date);

		//インスタンス作成
		TransactionFactory factory = null;
		try {
			factory = new TransactionFactory(PROPERTIES);
		}
		catch (Exception e) {System.out.println(e);}
		Transaction t = factory.createInstance();

		// 取引コマンド
		// 以下に示すもののどれかを設定してください
		//   authonly, mauthonly(与信処理)
		//   authcapture, mauthcapture(与信売上処理)
		//   postauth(売上処理)
		//   void(取消処理)
		//   return(返品処理)
		String command = "authonly";
		Hashtable data = new Hashtable();
		//取引ID(25桁以内)を設定
		//重複しない値を設定してください
		data.put("order-id", orderID);
		//クレジットカード番号(最大19桁，数字 "-" )を設定
		//data.put("card-number", "378282246310005"); // AMEX Test Number
		data.put("card-number", "5555444455554442"); //  MASTER Test Number
		//カードの有効期限を設定(MM/YY)
		data.put("card-exp", "05/09");
		//取引金額を設定(最大8桁,数字のみ)
		data.put("amount", "123");
		
		// 取消タイプを設定
		// 取引コマンドとしてvoidを設定した場合に設定します
		//data.put("txn-type", "postauth");

		//取引実行
		Hashtable result = t.sendMServer(command, data);
	
		//取引結果を表示
		Iterator it = data.keySet().iterator();
		it = result.keySet().iterator();
		System.out.println("response:");
		while (it.hasNext()) {
			String key = (String)it.next();
			String value = (String)result.get(key);
			System.out.println(key +  " ==> " + value);
		}
	}
}