package com.idega.block.creditcard.business;
import java.util.Collection;
import com.idega.block.creditcard.data.CreditCardMerchant;
/**
* @author gimmi
*/
/**
* @author gimmi
*/
public interface CreditCardClient {
/**
* Returns a collection of valid card types.
* The collection contains String declared in CreditCardBusiness.
* @return Collection of Card Types that client supports
*/
public Collection getValidCardTypes();
/**
* This method returns the CreditCardMerchant used by this client.
* The Merchant contains the data that the clients uses to connect with.
* @return CreditCardMerchant
*/
public CreditCardMerchant getCreditCardMerchant();
/**
* Tries to get refund the amount from the card.
*
* @param nameOnCard Name on card
* @param cardnumber Card number, should only contain numbers. Example 1234123412341234
* @param monthExpires Expire date MONTH, example 06
* @param yearExpires Expire date YEAR, example 05
* @param ccVerifyNumber Creditcard verification code, example 123
* @param amount Amount
* @param currency Currency
* @param referenceNumber Reference number
* @return Creditcard Authorization Number
* @throws CreditCardAuthorizationException
*/
public String doRefund(String cardnumber, String monthExpires, String yearExpires, String ccVerifyNumber, double amount, String currency, Object parentDataPK, String extraField) throws CreditCardAuthorizationException;
/**
* Tries to get deduct the amount from the card.
*
* @param nameOnCard Name on card
* @param cardnumber Card number, should only contain numbers. Example 1234123412341234
* @param monthExpires Expire date MONTH, example 06
* @param yearExpires Expire date YEAR, example 05
* @param ccVerifyNumber Creditcard verification code, example 123
* @param amount Amount
* @param currency Currency
* @param referenceNumber Reference number
* @return Creditcard Authorization Number
* @throws CreditCardAuthorizationException
*/
public String doSale(String nameOnCard, String cardnumber, String monthExpires, String yearExpires, String ccVerifyNumber, double amount, String currency, String referenceNumber) throws CreditCardAuthorizationException;
/**
* Checks for authorization without actually doing the transaction
* @param nameOnCard Name on card
* @param cardnumber Card number, should only contain numbers. Example 1234123412341234
* @param monthExpires Expire date MONTH, example 06
* @param yearExpires Expire date YEAR, example 05
* @param ccVerifyNumber Creditcard verification code, example 123
* @param amount Amount
* @param currency Currency
* @param referenceNumber Reference number
* @return Returns properties needed to finishTransaction later
* @throws CreditCardAuthorizationException
*/
public String creditcardAuthorization(String nameOnCard, String cardnumber, String monthExpires, String yearExpires, String ccVerifyNumber, double amount, String currency, String referenceNumber) throws CreditCardAuthorizationException;
/**
* Finishes a previously authorized transaciton
* @param properties Properties gotten from creditcardAuthorization
* @throws CreditCardAuthorizationException
*/
public void finishTransaction(String properties) throws CreditCardAuthorizationException;
/**
* Checks if the client supports delayed transaction. (creditcardAuthorization() and finishTransaction())
* @return
*/
public boolean supportsDelayedTransactions();
}