[interchange] PayflowPro: send discounted item prices; don't send IP if admin order

Josh Lavin interchange-cvs at icdevgroup.org
Thu Mar 13 18:52:21 UTC 2014


commit 8cf1f55e7c17f9569ae70e9632a66183e4ebca69
Author: Josh Lavin <josh at perusion.com>
Date:   Thu Mar 13 11:51:25 2014 -0700

    PayflowPro: send discounted item prices; don't send IP if admin order

 lib/Vend/Payment/PayflowPro.pm |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)
---
diff --git a/lib/Vend/Payment/PayflowPro.pm b/lib/Vend/Payment/PayflowPro.pm
index 568f6d4..50845ff 100644
--- a/lib/Vend/Payment/PayflowPro.pm
+++ b/lib/Vend/Payment/PayflowPro.pm
@@ -615,25 +615,32 @@ sub payflowpro {
     if($tender eq 'P') {
         @query{keys %paypal_query} = values %paypal_query;
         my $i = 0;
-        for my $it (@{$::Carts->{main}}) {
-            $query{'L_PAYMENTREQUEST_0_NAME'    .$i} = $it->{description} || Vend::Data::item_description($it);
-            $query{'L_PAYMENTREQUEST_0_NUMBER'  .$i} = $it->{code};
-            $query{'L_PAYMENTREQUEST_0_DESC'    .$i} = Vend::Data::item_description($it);
-            $query{'L_PAYMENTREQUEST_0_AMT'     .$i} = Vend::Data::item_price($it);
-            $query{'L_PAYMENTREQUEST_0_QTY'     .$i} = $it->{quantity};
-            ##$query{'L_PAYMENTREQUEST_0_TAXAMT'.$i} = (Vend::Data::item_price($it)/$itemTotal * $taxTotal);
-            $i++;
+        if ($action ne 'D') {
+            for my $it ( @{ $::Carts->{main} } ) {
+                my $it_price = Vend::Data::item_price($it);
+                my $disc_price = Vend::Interpolate::discount_price( $it, $it_price, $it->{quantity} );
+#::logDebug("payflowpro: prices for $it->{code}: it_price=$it_price, disc_price=$disc_price");
+                $query{ 'L_PAYMENTREQUEST_0_NAME'   . $i } = $it->{description} || Vend::Data::item_description($it);
+                $query{ 'L_PAYMENTREQUEST_0_NUMBER' . $i } = $it->{code};
+                $query{ 'L_PAYMENTREQUEST_0_DESC'   . $i } = Vend::Data::item_description($it);
+                $query{ 'L_PAYMENTREQUEST_0_AMT'    . $i } = $disc_price;
+                $query{ 'L_PAYMENTREQUEST_0_QTY'    . $i } = $it->{quantity};
+                ##$query{'L_PAYMENTREQUEST_0_TAXAMT'    .$i} = ($disc_price/$itemTotal * $taxTotal);
+                $i++;
+            }
         }
         $opt->{check_sub} = undef;
     }
     else {
         my $i = 1;
         for my $it (@{$::Carts->{main}}) {
+        my $it_price = Vend::Data::item_price($it);
+        my $disc_price = Vend::Interpolate::discount_price($it, $it_price, $it->{quantity});
             $query{'L_NAME' . $i} = $it->{description} || Vend::Data::item_description($it);
-            $query{'L_COST' . $i} = Vend::Data::item_price($it);
+            $query{'L_COST' . $i} = $disc_price;
             $query{'L_QTY'  . $i} = $it->{quantity};
             $query{'L_SKU'  . $i} = $it->{code};
-            ##$query{'L_TAXAMT'.$i} = (Vend::Data::item_price($it)/$itemTotal * $taxTotal);
+            ##$query{'L_TAXAMT'.$i} = ($disc_price/$itemTotal * $taxTotal);
             $i++;
         }
     }
@@ -655,6 +662,9 @@ sub payflowpro {
         }
     }
     else {
+        if ( $Vend::Session->{admin} and $::Values->{order_desk_entry} ) {
+            delete $query{CUSTIP};    # prevent 'IP/Address Mismatch' fraud reports for UI orders
+        }
         ## these not for PayPal authorizations, only capture/void (and credit cards):
         $query{ORIGID} = $order_id;
         $query{EXPDATE} = $exp;



More information about the interchange-cvs mailing list