Suddenly, all of our Magento stores stopped saving auth.net payments. The payment would go through and show up in auth.net, but never actually saved to Magento.
In the AJAX request which finishes the checkout and charges the card, there is this error:
Call to a member function setMessage() on null in app/code/core/Mage/Paygate/Model/Authorizenet.php on line 1449
Turning on debug mode revealed that Magento isn't parsing the response properly. All fields are empty:
[result] => Array ( [response_code] => 1 [response_subcode] => 0 [response_reason_code] => 0 [response_reason_text] => [approval_code] => [avs_result_code] => [transaction_id] => [invoice_number] => [description] => [amount] => [method] => [transaction_type] => [customer_id] => [md5_hash] => [card_code_response_code] => [c_av_vresponse_code] => [split_tender_id] => [acc_number] => [card_type] => [requested_amount] => [balance_on_card] => )