+=back
+
+=head1 Module specific methods
+
+This module provides the following methods which are not currently
+part of the standard Business::OnlinePayment interface:
+
+=head2 client_certification_id()
+
+This gets/sets the X-VPS-VITCLIENTCERTIFICATION-ID which is REQUIRED
+and defaults to "ClientCertificationIdNotSet". This is described in
+Website Payments Pro HTTPS Interface Developer's Guide as follows:
+
+"A random globally unique identifier (GUID) that is currently
+required. This requirement will be removed in the future. At this
+time, you can send any alpha-numeric ID up to 32 characters in length.
+
+NOTE: Once you have created this ID, do not change it. Use the same ID
+for every transaction."
+
+=head2 client_timeout()
+
+Timeout value, in seconds, after which this transaction should be
+aborted. Defaults to 45, the value recommended by the Website
+Payments Pro HTTPS Interface Developer's Guide.
+
+=head2 debug()
+
+Enable or disble debugging. The value specified here will also set
+$Business::OnlinePayment::HTTPS::DEBUG in submit() to aid in
+troubleshooting problems.
+
+=head2 expdate_mmyy()
+
+The expdate_mmyy() method takes a single scalar argument (typically
+the value in $content{expiration}) and attempts to parse and format
+and put the date in MMYY format as required by PayflowPro
+specification. If unable to parse the expiration date simply leave it
+as is and let the PayflowPro system attempt to handle it as-is.
+
+=head2 request_id()
+
+It is recommended that you specify your own unique request_id for each
+transaction in %content. A request_id is REQUIRED by the PayflowPro
+processor. If a request_id is not set, then Digest::MD5 is used to
+attempt to generate a request_id for a transaction.
+
+=head2 Deprecated methods
+
+The following methods are deprecated and may be removed in a future
+release. Values for vendor and partner should now be set as arguments
+to Business::OnlinePayment->new(). The value for cert_path was used
+to support passing a path to PFProAPI.pm (a Perl module/SDK from
+Verisign/Paypal) which is no longer used.
+
+=over 4
+
+=item vendor()
+
+=item partner()
+
+=item cert_path()
+
+=item cvv2_code()
+
+=back
+
+=head1 Settings
+
+The following default settings exist:
+
+=over 4
+
+=item server
+
+payflowpro.verisign.com or pilot-payflowpro.verisign.com if
+test_transaction() is TRUE
+
+=item port
+
+443
+
+=back
+
+=head1 Handling of content(%content)
+
+The following rules apply to content(%content) data:
+
+=head2 action
+
+If 'action' matches one of the following keys it is replaced by the
+right hand side value:
+
+ 'normal authorization' => 'S', # Sale transaction
+ 'credit' => 'C', # Credit (refund)
+ 'authorization only' => 'A', # Authorization
+ 'post authorization' => 'D', # Delayed Capture
+ 'void' => 'V',
+
+If 'action' is 'C', 'D' or 'V' and 'order_number' is not set then
+'amount', 'card_number' and 'expiration' must be set.
+
+=head2 type
+
+If 'type' matches one of the following keys it is replaced by the
+right hand side value:
+
+ 'visa' => 'C',
+ 'mastercard' => 'C',
+ 'american express' => 'C',
+ 'discover' => 'C',
+ 'cc' => 'C',
+
+The value of 'type' is used to set transaction_type(). Currently this
+module only supports a transaction_type() of 'C' any other values will
+cause Carp::croak() to be called in submit().
+
+Note: Payflow Pro supports multiple credit card types, including:
+American Express/Optima, Diners Club, Discover/Novus, Enroute, JCB,
+MasterCard and Visa.
+
+=head1 Setting Payflow Pro parameters from content(%content)
+
+The following rules are applied to map data to Payflow Pro parameters
+from content(%content):
+
+ # PFP param => $content{<key>}
+ VENDOR => $self->vendor ? \( $self->vendor ) : 'login',
+ PARTNER => \( $self->partner ),
+ USER => 'login',
+ PWD => 'password',
+ TRXTYPE => 'action',
+ TENDER => 'type',
+ ORIGID => 'order_number',
+ COMMENT1 => 'description',
+ COMMENT2 => 'invoice_number',
+
+ ACCT => 'card_number',
+ CVV2 => 'cvv2',
+ EXPDATE => \( $month.$year ), # MM/YY from 'expiration'
+ AMT => 'amount',
+
+ FIRSTNAME => 'first_name',
+ LASTNAME => 'last_name',
+ NAME => 'name',
+ EMAIL => 'email',
+ COMPANYNAME => 'company',
+ STREET => 'address',
+ CITY => 'city',
+ STATE => 'state',
+ ZIP => \$zip, # 'zip' with non-alphanumerics removed
+ COUNTRY => 'country',
+
+The required Payflow Pro parameters for credit card transactions are:
+
+ TRXTYPE TENDER PARTNER VENDOR USER PWD ORIGID
+
+=head1 Mapping Payflow Pro transaction responses to object methods
+
+The following methods provides access to the transaction response data
+resulting from a Payflow Pro request (after submit()) is called:
+
+=head2 order_number()
+
+This order_number() method returns the PNREF field, also known as the
+PayPal Reference ID, which is a unique number that identifies the
+transaction.
+
+=head2 result_code()
+
+The result_code() method returns the RESULT field, which is the
+numeric return code indicating the outcome of the attempted
+transaction.
+
+A RESULT of 0 (zero) indicates the transaction was approved and
+is_success() will return '1' (one/TRUE). Any other RESULT value
+indicates a decline or error and is_success() will return '0'
+(zero/FALSE).
+
+=head2 error_message()
+
+The error_message() method returns the RESPMSG field, which is a
+response message returned with the transaction result.
+
+=head2 authorization()
+
+The authorization() method returns the AUTHCODE field, which is the
+approval code obtained from the processing network.
+
+=head2 avs_code()
+
+The avs_code() method returns a combination of the AVSADDR and AVSZIP
+fields from the transaction result. The value in avs_code is as
+follows:
+
+ Y - Address and ZIP match
+ A - Address matches but not ZIP
+ Z - ZIP matches but not address
+ N - no match
+ undef - AVS values not available
+
+=head2 cvv2_response()
+
+The cvv2_response() method returns the CVV2MATCH field, which is a
+response message returned with the transaction result.
+
+=head1 COMPATIBILITY
+
+As of 0.07, this module communicates with the Payflow gateway directly
+and no longer requires the Payflow Pro SDK or other download. Thanks
+to Phil Lobbes for this great work.
+
+=head1 AUTHORS