com.ibm.commerce.payment.commands
Class DoPaymentCmdImpl

java.lang.Object
  |
  +--com.ibm.commerce.command.AbstractECCommand
        |
        +--com.ibm.commerce.command.TaskCommandImpl
              |
              +--com.ibm.commerce.payment.commands.DoPaymentCmdImpl
All Implemented Interfaces:
DoPaymentCmd, ECCommand, 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.


Fields inherited from class com.ibm.commerce.command.AbstractECCommand
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, PM_MESSAGE_FOR_BUYER, PM_MESSAGE_FOR_MERCHANT, PM_PRIMARY_RC, PM_SECONDARY_RC, WCSHOSTNAME, WCSWEBSERVERPORT, WEBPATH
 
Constructor Summary
DoPaymentCmdImpl()
           
 
Method Summary
protected  java.lang.String getCardBrand()
          Get Card Brand
protected  java.lang.Integer getCardExpiryMonth()
          Get Card Expiry Month
protected  java.lang.Integer getCardExpiryYear()
          Get Card Expiry Year
protected  java.lang.String getCardNumber()
          Get 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()
          get Order ID
 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()
          get PaymentAttributes
 byte[] getReturnData()
          Returns the byte Array containing Return Data from the Payment System.
protected  java.math.BigDecimal getTotalAmount()
          get Total Amount
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)
          Set Card Brand
protected  void setCardExpiryMonth(java.lang.Integer cardExpiryMonth)
          Set Card Expiry Month
protected  void setCardExpiryYear(java.lang.Integer cardExpiryYear)
          Set Card Expiry Year
protected  void setCardNumber(java.lang.String cardNumber)
          Set 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.AbstractECCommand
accessControlCheck, checkIsAllowed, checkResourcePermission, execute, finalize, getAccCheck, getCommandContext, getCommandIfName, getCommandName, getDefaultProperties, getResources, getStoreId, getUser, getUserId, setAccCheck, setCommandContext, setCommandIfName, setDefaultProperties
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.commerce.command.ECCommand
checkIsAllowed, checkResourcePermission, execute, getAccCheck, getCommandContext, getCommandIfName, getCommandName, getDefaultProperties, getResources, getStoreId, getUser, getUserId, setAccCheck, setCommandContext, setCommandIfName, setDefaultProperties
 

Constructor Detail

DoPaymentCmdImpl

public DoPaymentCmdImpl()
Method Detail

getCardBrand

protected java.lang.String getCardBrand()
Get Card Brand

getCardExpiryMonth

protected java.lang.Integer getCardExpiryMonth()
Get Card Expiry Month

getCardExpiryYear

protected java.lang.Integer getCardExpiryYear()
Get Card Expiry Year

getCardNumber

protected java.lang.String getCardNumber()
Get 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()
get 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:
java.lang.String

getPaymentAttributes

protected TypedProperty getPaymentAttributes()
get 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:
byte[]

getTotalAmount

protected java.math.BigDecimal getTotalAmount()
get Total Amount

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 AbstractECCommand
Following copied from class: com.ibm.commerce.command.AbstractECCommand
Returns:
boolean - true if we can execute the command false if we canot execute the command

performExecute

public void performExecute()
                    throws ECException
Performs the main business logic of the command.
Specified by:
performExecute in interface ECCommand
Overrides:
performExecute in class AbstractECCommand
Following copied from interface: com.ibm.commerce.command.ECCommand
Throws:
com.ibm.commerce.command.CommandException - The superclass for all ECExceptions.

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 AbstractECCommand

setCardBrand

protected void setCardBrand(java.lang.String cardBrand)
Set Card Brand

setCardExpiryMonth

protected void setCardExpiryMonth(java.lang.Integer cardExpiryMonth)
Set Card Expiry Month

setCardExpiryYear

protected void setCardExpiryYear(java.lang.Integer cardExpiryYear)
Set Card Expiry Year

setCardNumber

protected void setCardNumber(java.lang.String cardNumber)
Set 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 reference number of the Order for which payment is to be processed.

setPaymentAttributes

public void setPaymentAttributes(TypedProperty paymentAttributes)
Sets the paymentAttributes property of the command.
Specified by:
setPaymentAttributes in interface DoPaymentCmd
Parameters:
requestProperties - the requestProperties object that contains all the command parameters are to be passed to this 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.

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 AbstractECCommand
Following copied from interface: com.ibm.commerce.command.ECCommand
Throws:
ECException. -