[interchange] Support PayPal billinginfo and useraction

Mark Johnson interchange-cvs at icdevgroup.org
Wed Jun 2 02:37:22 UTC 2010


commit 416216c6a76b5fb093ea89f0b3efcd9f33654668
Author: Mark Johnson <mark at endpoint.com>
Date:   Tue Jun 1 22:29:44 2010 -0400

    Support PayPal billinginfo and useraction
    
    * Optional boolean billinginfo (maps to
      payPalEcSetService_requestBillingAddress) to ask PayPal to include
      the user's billing information in the GetRequest. Default is to
      not request billing information.
    
    * Optional useraction setting that will be included in the redirect
      URL to PayPal in response to a SetRequest. Valid options are
      'continue' (default) and 'commit'.
    
    * Updated POD with options and descriptions.

 lib/Vend/Payment/CyberSource.pm |   54 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 50 insertions(+), 4 deletions(-)
---
diff --git a/lib/Vend/Payment/CyberSource.pm b/lib/Vend/Payment/CyberSource.pm
index 5050f5f..49d490e 100644
--- a/lib/Vend/Payment/CyberSource.pm
+++ b/lib/Vend/Payment/CyberSource.pm
@@ -411,6 +411,44 @@ for payment.
 Expected maximum total amount of the entire order, including shipping costs and
 tax charges.
 
+=item B<billinginfo>
+
+Optional boolean indicator to request that PayPal return the user's billing
+information on GetRequest.
+
+0 (default): Do not return the customer's billing address.
+
+1: Return the customer's billing address.
+
+=item B<useraction>
+
+Which PayPal useraction is desired. This essentially indicates the label of the
+button for the user when coming back from PayPal to the merchant's site.
+Options are:
+
+=over
+
+=item continue
+
+Default. Standard usage when merchants expect the user to come back to their
+site and provide more data, or explicit actions, to complete checkout. Button
+user clicks is labeled "Continue".
+
+=item commit
+
+Usage option when merchant does not require to collect more data or have the
+user perform any actions on the merchant site before completing the order. The
+API behavior is the same as that for usertype continue; the only difference is
+the button the user is to click will say "Buy Now".
+
+=back
+
+Regardless of which B<useraction> is specified, the merchant's site must
+process a getrequest and dopayment in response in order to complete the sale.
+Clicking "Buy Now" doesn't actually do any such thing on PayPal's side. It just
+authorizes the merchant to immediately process payment once the user has
+returned.
+
 =item B<order_desc>
 
 Description of items the customer is purchasing.
@@ -1391,9 +1429,10 @@ sub cybersource {
         payPalAuthReversalService_paypalAuthorizationId     transaction_id
         payPalRefundService_paypalCaptureId                 transaction_id
 
-        payPalEcSetService_paypalReturn         returnurl
-        payPalEcSetService_paypalCancelReturn   cancelurl
-        payPalEcSetService_paypalMaxamt         maxamount
+        payPalEcSetService_paypalReturn             returnurl
+        payPalEcSetService_paypalCancelReturn       cancelurl
+        payPalEcSetService_paypalMaxamt             maxamount
+        payPalEcSetService_requestBillingAddress    billinginfo
 
         payPalEcSetService_paypalDesc           order_desc
         payPalEcDoPaymentService_paypalDesc     order_desc
@@ -1862,7 +1901,13 @@ sub cybersource {
             $::Session->{paypal_payer_id} = $resp{payerId};
         }
 
-        $resp{pp_redirect} = sprintf ($resp{pp_redirect}, $resp{paypalToken} || $::Session->{paypal_token});
+        $resp{pp_redirect} =
+            sprintf (
+                $resp{pp_redirect},
+                $resp{paypalToken} || $::Session->{paypal_token},
+                $opt->{useraction} || 'continue',
+            )
+        ;
     }
 
     if ($transtype =~ /^auth(?:_bill)?$/) {
@@ -2360,6 +2405,7 @@ sub resolve_reply {
         'https://'
         . $self->attr('PP_302_HOST')
         . '/cgi-bin/webscr?cmd=_express-checkout&token=%s'
+        . '&useraction=%s'
     ;
     return;
 }



More information about the interchange-cvs mailing list