// OR
         // Capture a detailed error message. No need to refer to the manual
         // with this one as it tells you everything the manual does.
         $full_error_message = $payment->getResponseMessage();
         $avs_result = $payment->getAVSResponse();
         $cvv_result = $payment->getCVVResponse();
         $err[] = "Error {$error_number}: {$full_error_message}";
         //$err[] = "AVS Result: $avs_result";
         //$err[] = "CVV Result: $cvv_result";
         // TODO: in case of errors, email the above info to the admin
         // We can tell what kind of error it is and handle it appropriately.
         if ($payment->isConfigError()) {
             // We misconfigured something on our end.
             //$err[] = "Config Error";
         } else {
             if ($payment->isTempError()) {
                 // Some kind of temporary error on Authorize.Net's end.
                 // It should work properly "soon".
                 //$err[] = "Temporary Error";
             } else {
                 // All other errors.
                 //$err[] = "Other Error";
             }
         }
         // TODO: in case of errors, email the above info to the admin
         // Report the error to someone who can investigate it
         // and hopefully fix it
         // Notify the user of the error and request they contact
         // us for further assistance
     }
 }