Square payment update
authorSteve Sutton <steve@gaslightmedia.com>
Tue, 9 Apr 2019 20:17:37 +0000 (16:17 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Tue, 9 Apr 2019 20:17:37 +0000 (16:17 -0400)
Return error if declined or card already processed.

lib/paymentProcessors/Square/paymentGateway.php

index 23a62b9..4f92861 100755 (executable)
@@ -276,11 +276,14 @@ class PaymentGateway
             ),
         );
 
+        $amount = $payment['charge'] * 100;
+        // $amount = 403; // decline error
+
         $paymentInfo = array(
             'card_nonce'      => $nonce,
             'idempotency_key' => uniqid(),
             'amount_money'    => array(
-                'amount'   => $payment['charge'] * 100,
+                'amount'   => $amount,
                 'currency' => 'USD',
             ),
         );
@@ -300,9 +303,6 @@ class PaymentGateway
         # a 200-level HTTP code. This block catches any exceptions that occur from the request.
         try {
             $result = $transactionApi->charge( $locationId, $txRequest );
-            echo "<pre>";
-            print_r( $result );
-            echo "</pre>";
             $resp = array(
                 'gateway'     => 'Square',
                 'status'      => 1,
@@ -314,6 +314,14 @@ class PaymentGateway
             );
             return $resp;
         } catch ( \SquareConnect\ApiException $e ) {
+            // Check for nonce already used
+            $responseBody = $e->getResponseBody();
+            if ( $responseBody->errors[0]->code == CARD_TOKEN_USED ) {
+                $description = 'Card already used!';
+            }
+            if ( $responseBody->errors[0]->code == CARD_DECLINED ) {
+                $description = 'Card declined!';
+            }
             $resp = array(
                 'gateway'     => 'Square',
                 'status'      => 7,
@@ -321,8 +329,9 @@ class PaymentGateway
                 'authCode'    => '',
                 'transId'     => '',
                 'refId'       => $refId,
-                'description' => '<pre>Bad response: ' . print_r( $e->getResponseBody(), true) . '</pre>'
-                    .'<pre>$txRequest: ' . print_r( $txRequest, true ) . '</pre>',
+                'description' => $description,
+                // 'description' => '<pre>Bad response: ' . print_r( $e->getResponseBody(), true) . '</pre>'
+                //     .'<pre>$txRequest: ' . print_r( $txRequest, true ) . '</pre>',
             );
             return $resp;
         }