com.ibm.commerce.payment.commands
Class DoPaymentCmdImpl

java.lang.Object
  |
  +--CacheableCommandImpl
        |
        +--com.ibm.commerce.command.AbstractECTargetableCommand
              |
              +--com.ibm.commerce.command.TaskCommandImpl
                    |
                    +--com.ibm.commerce.payment.commands.DoPaymentCmdImpl
All Implemented Interfaces:
DoPaymentCmd, ECCommand, ECTargetableCommand, TaskCommand

public class DoPaymentCmdImpl
extends TaskCommandImpl
implements DoPaymentCmd

This DoPaymentCmd Task Command Implementation is called by the OrderProcessCmd Controller Command to process payment for an order.

If the command is successful, the OrderProcessCmd will set the Order status to the value specified by this command.

If unsuccessful, the command throws the ECApplicationException specifying an Error Code and the Error View named by the constant com.ibm.commerce.DoPaymentCmd.ERROR_TASK_NAME.

This implementation of the DoPaymentCmd Task Command does not have any returnData for the OrderProcessCmd.

Note: This is a sample only and must NOT be used for production. This sample does not use any of the new features (such as Contracts and Availability-To-Promise) introduced with WebSphere Commerce.

This command uses the following AccessBeans:

This command calls the following TaskCommands:

See Also:
Serialized Form

Field Summary
 
Fields inherited from class com.ibm.commerce.command. AbstractECTargetableCommand
commandContext
 
Fields inherited from interface com.ibm.commerce.payment.commands. DoPaymentCmd
CC_VALID_Y_RANGE, COPYRIGHT, defaultCommandClassName, ERR_CODE_BAD_CCNUM, ERR_CODE_BAD_SYS, ERR_CODE_BAD_XDATE, ERR_CODE_MISSING_PARAM, ERRTASK_NAME, MESSAGE_FOR_BUYER, NAME, NVP_field, NVP_FIELD, PM_MESSAGE_FOR_BUYER, PM_MESSAGE_FOR_MERCHANT, PM_PRIMARY_RC, PM_SECONDARY_RC, WCSHOSTNAME, WCSWEBSERVERPORT, WEBPATH
 
Fields inherited from interface com.ibm.commerce.command. ECTargetableCommand
COPYRIGHT
 
Fields inherited from interface com.ibm.commerce.command. ECCommand
defaultCommandClassName
 
Constructor Summary
DoPaymentCmdImpl()
           
 
Method Summary
protected  java.lang.String getCardBrand()
          Gets the credit card brand.
protected  java.lang.Integer getCardExpiryMonth()
          Gets the credit card Expiry Month.
protected  java.lang.Integer getCardExpiryYear()
          Gets the credit card Expiry Year.
protected  java.lang.String getCardNumber()
          Gets the credit card number.
 java.lang.String getContentType()
          Returns the Content Type (or MIME type) of the return data, or null if the type is not known.
protected  java.lang.Long getOrderId()
          Gets the order ID of the order being processed.
 java.lang.String getOrderState()
          Returns the single character String value that the called command wants the Calling command to use to set the Status of the order.
protected  TypedProperty getPaymentAttributes()
          Returns the TypedProperty object containing the payment attributes passed to this command by the calling command.
 byte[] getReturnData()
          Returns the byte Array containing Return Data from the Payment System.
protected  java.math.BigDecimal getTotalAmount()
          Returns the total order amount passed to the command by the caller.
static boolean isCardExpiryDateValid(int expiryMonth, int expiryYear)
          Checks if the specified expiry date (expiryMonth and expiryYear) is valid.
 boolean isReadyToCallExecute()
          This method is called by the Command Framework to check if all basic mandatory parameters have been set for this command.
 void performExecute()
          Performs the main business logic of the command.
static java.lang.String removeSpaceAndHyphenFromString(java.lang.String aCardNumber)
          Returns a new string that is free of any spaces and hyphenated characters.
 void reset()
          Resets the instance variables of the command.
protected  void setCardBrand(java.lang.String cardBrand)
          Sets the credit card brand.
protected  void setCardExpiryMonth(java.lang.Integer cardExpiryMonth)
          Sets the credit card Expiry Month.
protected  void setCardExpiryYear(java.lang.Integer cardExpiryYear)
          Sets the credit card Expiry Year.
protected  void setCardNumber(java.lang.String cardNumber)
          Sets the credit card number.
 void setOrderId(java.lang.Long orderId)
          Sets the orderId property of the command.
 void setPaymentAttributes( TypedProperty paymentAttributes)
          Sets the paymentAttributes property of the command.
 void setTotalAmount(java.math.BigDecimal totalAmount)
          Sets the totalAmount property of the command.
 void validateParameters()
          Checks the validity of customer-supplied parameters.
 
Methods inherited from class com.ibm.commerce.command. AbstractECTargetableCommand
accessControlCheck, checkIsAllowed, checkParameters, checkResourcePermission, createCommandExecutionEvent, execute, finalize, getAccCheck, getCommandContext, getCommandIfName, getCommandName, getCommandStoreId, getDefaultProperties, getResources, getStoreId, getUser, getUserId, setAccCheck, setCommandContext, setCommandIfName, setCommandStoreId, setDefaultProperties
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DoPaymentCmdImpl

public DoPaymentCmdImpl()
Method Detail

getCardBrand

protected java.lang.String getCardBrand()
Gets the credit card brand.
Returns:
the credit card brand

getCardExpiryMonth

protected java.lang.Integer getCardExpiryMonth()
Gets the credit card Expiry Month.
Returns:
the credit card Expiry Month

getCardExpiryYear

protected java.lang.Integer getCardExpiryYear()
Gets the credit card Expiry Year.
Returns:
the credit card Expiry Year

getCardNumber

protected java.lang.String getCardNumber()
Gets the credit card number.
Returns:
the credit card number

getContentType

public java.lang.String getContentType()
Returns the Content Type (or MIME type) of the return data, or null if the type is not known.
Specified by:
getContentType in interface DoPaymentCmd
Returns:
a String containing the name of the MIME type of the return data, or null if the type is not known. Since this command implementation does not have return data, the method returns null.

getOrderId

protected java.lang.Long getOrderId()
Gets the order ID of the order being processed.
Returns:
the order ID

getOrderState

public java.lang.String getOrderState()
Returns the single character String value that the called command wants the Calling command to use to set the Status of the order. If the returned String is empty or null, the Calling command will decide the value to use for the Status
Specified by:
getOrderState in interface DoPaymentCmd
Returns:
the preferred order state

getPaymentAttributes

protected TypedProperty getPaymentAttributes()
Returns the TypedProperty object containing the payment attributes passed to this command by the calling command.
Returns:
the payment attributes passed by the caller
See Also:
setPaymentAttributes(TypedProperty paymentAttributes)

getReturnData

public byte[] getReturnData()
Returns the byte Array containing Return Data from the Payment System. The Payment System used by this command does not use Return Data. Therefore return null.
Specified by:
getReturnData in interface DoPaymentCmd
Returns:
null

getTotalAmount

protected java.math.BigDecimal getTotalAmount()
Returns the total order amount passed to the command by the caller.
Returns:
the total order amount in the currency of the order

isCardExpiryDateValid

public static boolean isCardExpiryDateValid(int expiryMonth,
                                            int expiryYear)
Checks if the specified expiry date (expiryMonth and expiryYear) is valid.
Parameters:
expiryMonth - the calender month of the expiry date (1 for January, 2 for February, and so on.)
expiryYear - the calender year of the expiry date
Returns:
ture if the expiry date is valid.

isReadyToCallExecute

public boolean isReadyToCallExecute()
This method is called by the Command Framework to check if all basic mandatory parameters have been set for this command. This is done before the Framework calls the performExecute method of the command.
Overrides:
isReadyToCallExecute in class AbstractECTargetableCommand
Returns:
true if we can execute the command; false otherwise.

performExecute

public void performExecute()
                    throws ECException
Performs the main business logic of the command.
Specified by:
performExecute in interface ECCommand
Overrides:
performExecute in class AbstractECTargetableCommand
Throws:
ECException

removeSpaceAndHyphenFromString

public static java.lang.String removeSpaceAndHyphenFromString(java.lang.String aCardNumber)
Returns a new string that is free of any spaces and hyphenated characters. If the supplied string is already free of spaces and hyphens the same string may be returned.
Parameters:
aCardNumber - the card number to be examined and stripped
Returns:
a string free of spaces and hyphenated characters ('-')

reset

public void reset()
Resets the instance variables of the command. The reset() method will reset all instance variables. If the command includes any output values that are accessible via getters, then make sure those values are no longer needed before calling this method to reset the instance variables of the command.

This is useful if the command instance is to be called multiple times with different command parameters.

Overrides:
reset in class AbstractECTargetableCommand

setCardBrand

protected void setCardBrand(java.lang.String cardBrand)
Sets the credit card brand.
Parameters:
cardBrand - the credit card brand

setCardExpiryMonth

protected void setCardExpiryMonth(java.lang.Integer cardExpiryMonth)
Sets the credit card Expiry Month.
Parameters:
cardExpiryMonth - the credit card Expiry Month

setCardExpiryYear

protected void setCardExpiryYear(java.lang.Integer cardExpiryYear)
Sets the credit card Expiry Year.
Parameters:
cardExpiryYear - the credit card Expiry Year

setCardNumber

protected void setCardNumber(java.lang.String cardNumber)
Sets the credit card number.
Parameters:
cardNumber - the credit card number

setOrderId

public void setOrderId(java.lang.Long orderId)
Sets the orderId property of the command.
Specified by:
setOrderId in interface DoPaymentCmd
Parameters:
orderId - the order ID of the Order for which payment is to be processed.

setPaymentAttributes

public void setPaymentAttributes(TypedProperty paymentAttributes)
Sets the paymentAttributes property of the command.

This command requires the following Payment Attributes:

       Keyword                         Value
     ===========        ====================================
     cardBrand          The credit card brand.  Represents the credit card type used.
     cardNumber         The credit card number
     cardExpiryMonth    The credit card exipration month
     cardExpiryYear     The credit card exipration year
Note that this command stores the credit card brand in the PAYMETHOD column of the ORDPAYMTHD table and the size of the column is limited to five characters long.
Specified by:
setPaymentAttributes in interface DoPaymentCmd
Parameters:
paymentAttributes - the requestProperties object that contains all the command parameters are to be passed to this command.

Some of the optional Payment Attributes that may be passed to the command are:

       Keyword                         Value
     ===========        ====================================
     cardBrand          The credit card brand.  
     cardNumber         The credit card number              
     cardExpiryMonth    The credit card exipration month  
     cardExpiryYear     The credit card exipration year   
Refer to the documentation for the command implementation class for the actual Payment Attributes that are defined for the command.
See Also:
com.ibm.commerce.payment.commands.DoPaymentMPFCmdImpl.

setTotalAmount

public void setTotalAmount(java.math.BigDecimal totalAmount)
Sets the totalAmount property of the command.
Specified by:
setTotalAmount in interface DoPaymentCmd
Parameters:
totalAmount - the total price of the Order for which payment is to be processed.

validateParameters

public void validateParameters()
                        throws ECException
Checks the validity of customer-supplied parameters.
Specified by:
validateParameters in interface ECCommand
Overrides:
validateParameters in class AbstractECTargetableCommand
Throws:
ECException