com.softslate.commerce.businessobjects.payment
Class PayflowProProcessor

java.lang.Object
  extended by com.softslate.commerce.businessobjects.core.BaseBusinessObject
      extended by com.softslate.commerce.businessobjects.core.BaseBusinessProcessor
          extended by com.softslate.commerce.businessobjects.payment.BasePaymentProcessor
              extended by com.softslate.commerce.businessobjects.payment.BasePayPalNVPProcessor
                  extended by com.softslate.commerce.businessobjects.payment.PayflowProProcessor
All Implemented Interfaces:
BusinessObject, BusinessProcessor, PaymentProcessor

public class PayflowProProcessor
extends BasePayPalNVPProcessor
implements PaymentProcessor

Processes a payment in the store for a given user's cart. This implementation processes a request through PayPal Payflow Pro. The process(Map) method manages the process of sending a request to Payflow Pro, and handling the response appropriately. It follows these steps:

  1. Figures out the transaction type (sale, authorize, authorize/authenticate, or authorize/authenticate/sale) from the database settings and the user's current state.
  2. Builds the request to Payflow Pro as a Map, taking as input the current user's state, and various database settings.
  3. Converts the request into a url-encoded query string to pass as Payflow Pro's "parmlist" parameter.
  4. Initializes the connection to Payflow Pro and sends the request.
  5. Handles any errors by setting "resultCode" appropriately in the Map that is returned. If no response comes back from Payflow Pro, a result code 10000 is used. If the Payflow Pro result code is not 0, which also indicates an error, that code is used as this method's "resultCode" and this method returns it.
  6. If a successful response is received, checks if the transaction type for the user is AA or AAS (authorize/authenticate, or authorize/authenticate/sale), in which the response must be "authenticated". This means the AVS and CSC responses are checked against what's defined as acceptable in the Payflow Pro Advanced Settings in the administrator. Note that if no CSC response is present, it is set to "X".
  7. If the user is not deemed authenticated, a "resultCode" of 10001 is returned.
  8. If the user is authenticated and the transaction type in effect is AAS (authorize/authenticate/sale), an immediate delayed capture on the previous authorization is performed, using the same parameters. Any errors from this second request are handled in the same way as above.
  9. Assuming the transaction succeeds, a new record is written to the sscPayment database table and a resultCode of 0 is returned.

Author:
David Tobey
See Also:
PaymentDAO

Field Summary
(package private) static org.apache.commons.logging.Log log
           
 
Fields inherited from class com.softslate.commerce.businessobjects.payment.BasePayPalNVPProcessor
CERT_PATH, COMMENT1, COMMENT2, CUSTOMER_CODE, CUSTOMER_REF, DESCRIPTION, HOST_ADDRESS, HOST_PORT, PARTNER, PASSWORD, PO_NUMBER, PROXY_ADDR, PROXY_LOGON, PROXY_PASSWD, PROXY_PORT, TIME_OUT, USER, VENDOR
 
Constructor Summary
PayflowProProcessor()
           
 
Method Summary
 java.lang.String getTransAuthLevel()
           
 boolean isAuthenticated(java.lang.String transAuthLevel, java.util.Map responseMap)
           
 boolean levelMatchFound(java.lang.String cust, java.lang.String floor, java.lang.String ceiling, java.lang.String countries)
           
protected  java.util.Map preparePaypalRequestAcutalPayload(java.util.Map params, java.util.Map parameters)
           
 java.util.Map process(java.util.Map parameters)
          Subclasses must override this method to execute processing.
protected  void setPaymentVariablesToPersist(Payment payment, java.util.Map parameters, java.util.Map responseMap)
           
 
Methods inherited from class com.softslate.commerce.businessobjects.payment.BasePayPalNVPProcessor
initializeConnection, makePayPalCall, preparePayPalAuthRequest, preparePaypalRequest, preparePaypalRequestCommonPayload, processSuccessfulTransaction
 
Methods inherited from class com.softslate.commerce.businessobjects.payment.BasePaymentProcessor
processPayment
 
Methods inherited from class com.softslate.commerce.businessobjects.core.BaseBusinessProcessor
formatDateTime, formatPrice, getAppComponents, getAppSettings, getAttributeIDs, getBusinessObjectFactory, getDaoFactory, getProductIDs, getSettings, getUser, initialize, loadMatchingSkus, parseDateTime, parseResponseData, prepareRequestData, sendHTTPPost, setAppComponents, setAppSettings, setBusinessObjectFactory, setDaoFactory, setSettings, setUser, utils
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.softslate.commerce.businessobjects.payment.PaymentProcessor
processPayment
 
Methods inherited from interface com.softslate.commerce.businessobjects.core.BusinessObject
initialize
 

Field Detail

log

static org.apache.commons.logging.Log log
Constructor Detail

PayflowProProcessor

public PayflowProProcessor()
Method Detail

process

public java.util.Map process(java.util.Map parameters)
                      throws java.lang.Exception
Description copied from class: BasePaymentProcessor
Subclasses must override this method to execute processing. Called by BasePaymentProcessor.processPayment(Map).

Specified by:
process in class BasePaymentProcessor
Parameters:
parameters - A Map containing the values of the user's submitted payment information.
Returns:
A Map containing a least one key named "resultCode", which contains a String parsable into an int, representing the results of the processing. 0 for the resultCode indicates success. Optionally, the Map may include additional keys, such as "resultMessage", a string describing the results of the processing.
Throws:
java.lang.Exception

getTransAuthLevel

public java.lang.String getTransAuthLevel()
                                   throws java.lang.Exception
Throws:
java.lang.Exception

levelMatchFound

public boolean levelMatchFound(java.lang.String cust,
                               java.lang.String floor,
                               java.lang.String ceiling,
                               java.lang.String countries)

preparePaypalRequestAcutalPayload

protected java.util.Map preparePaypalRequestAcutalPayload(java.util.Map params,
                                                          java.util.Map parameters)
Specified by:
preparePaypalRequestAcutalPayload in class BasePayPalNVPProcessor

isAuthenticated

public boolean isAuthenticated(java.lang.String transAuthLevel,
                               java.util.Map responseMap)
                        throws java.lang.Exception
Throws:
java.lang.Exception

setPaymentVariablesToPersist

protected void setPaymentVariablesToPersist(Payment payment,
                                            java.util.Map parameters,
                                            java.util.Map responseMap)
Specified by:
setPaymentVariablesToPersist in class BasePayPalNVPProcessor


Copyright ? SoftSlate, LLC 2003?2005