do not URL Encode AMT (amount) parameter for PayFlowPro
authorginkgoMZD <mzd@ginkgostreet.com>
Mon, 28 Mar 2022 22:15:40 +0000 (18:15 -0400)
committerginkgoMZD <mzd@ginkgostreet.com>
Tue, 29 Mar 2022 16:51:50 +0000 (12:51 -0400)
ext/payflowpro/CRM/Core/Payment/PayflowPro.php

index 49c6e7ce527d2fdd76b07ae77a7b230dfbc79537..2146fbfa8e8ba3950accf4e9af73153e7f38debf 100644 (file)
@@ -112,6 +112,8 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment {
      *Create the array of variables to be sent to the processor from the $params array
      * passed into this function
      *
+     * NB: PayFlowPro does not accept URL Encoded parameters.
+     * Particularly problematic when amount contains grouping character: e.g 1,234.56 will return [4 - Invalid Amount]
      */
 
     $payflow_query_array = [
@@ -127,7 +129,7 @@ class CRM_Core_Payment_PayflowPro extends CRM_Core_Payment {
       'CVV2' => $params['cvv2'],
       'EXPDATE' => urlencode(sprintf('%02d', (int) $params['month']) . substr($params['year'], 2, 2)),
       'ACCTTYPE' => urlencode($params['credit_card_type']),
-      'AMT' => urlencode($this->getAmount($params)),
+      'AMT' => $this->getAmount($params),
       'CURRENCY' => urlencode($params['currency']),
       'FIRSTNAME' => $params['billing_first_name'],
       //credit card name