We are a new iATS client and have hit a bit of a roadblock.
I followed the iATS extension instructions here for setting up the payment processor. On my local dev environment, things went great and I was able to process a contribution using the TEST88 information without a problem.
When I tried to set up the iATS payment processor on our live production server and tried a contribution in the same manner, I received a white screen with the following error:
Fatal error: Call to a member function __getLastResponseHeaders() on a non-object in /~oursite.org~/sites/default/files/civicrm/extensions/com.iatspayments.civicrm/CRM/iATS/iATSService.php on line 202
Following the debug advice from the iATS instructions (I turned on Drupal/CiviCRM logging) and tried again. I received the same white screen and error. I checked the Drupal logs and received the following error, notice and warnings:
Type: civicrm_iatspayment_com SoapFault: SoapFault Object ( [message:protected] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://www.iatspayments.com/NetGate/ProcessLinkv2.asmx?WSDL' : failed to load external entity "https://www.iatspayments.com/NetGate/ProcessLinkv2.asmx?WSDL" [the error in the logs is rather long and shows sensitive information, so I've truncated it]
Type: php -- Notice: Undefined variable: soapClient in iATS_Service_Request->request() (line 202 of /~oursite.org~/sites/default/files/civicrm/extensions/com.iatspayments.civicrm/CRM/iATS/iATSService.php).
Type: php -- Warning: SoapClient::SoapClient(https://www.iatspayments.com/NetGate/ProcessLinkv2.asmx?WSDL): failed to open stream: operation failed in iATS_Service_Request->request() (line 161 of /~oursite.org~/sites/default/files/civicrm/extensions/com.iatspayments.civicrm/CRM/iATS/iATSService.php).
Type: php -- Warning: SoapClient::SoapClient(): Failed to enable crypto in iATS_Service_Request->request() (line 161 of /~oursite.org~/sites/default/files/civicrm/extensions/com.iatspayments.civicrm/CRM/iATS/iATSService.php).
Type: php -- Warning: SoapClient::SoapClient(): SSL operation failed with code 1. OpenSSL Error messages: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure in iATS_Service_Request->request() (line 161 of /~oursite.org~/sites/default/files/civicrm/extensions/com.iatspayments.civicrm/CRM/iATS/iATSService.php).
Searching Google for "SOAP-ERROR: Parsing WSDL" related to iATS and CiviCRM, I found this comment and this GitHub issue by Joe Murray indicating that the issue could be related to inadequate SSL Protocols. This announcement from iATS also seemed to indicate that.
I've taken the last two days to upgrade our OpenSSL to 1.0.2g and adjusted our SSL Protocols to only accept TLSv1.2. The SSL Labs SSL Server Test had initially rated us at a C, but after upgrading OpenSSL and the SSL Protocols, we now rate at an A-.
Having updated our security settings, I cleared caches in both CiviCRM and Drupal and attempted our test contribution again, using the TEST88 information. We still receive the same white screen error in the browser and the above error, notice and warnings in the Drupal logs. I also tried using our actual account information with iATS. Same result.
Any ideas on what to try next?
iATS extension 1.5, CiviCRM 4.6.14, Drupal 7, Apache 2.2.24, OpenSSL 1.0.2g