1

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

  • Sigh... I neglected to compile PHP so, while my server sees the upgrade to OpenSSL, my site isn't recognizing the new version of OpenSSL. Will update once finished. – Allen Hutchison May 7 '16 at 20:27
  • Hi Allen - it's the only explanation I can think off. Let us know if this solves it. – KarinG - Semper IT May 8 '16 at 17:04
  • Haven't forgotten; just having a tough time upgrading/compiling PHP. Finding dependency after dependency that each needed upgrading... – Allen Hutchison May 13 '16 at 0:07
  • That sounds painful... this better work! – KarinG - Semper IT May 13 '16 at 2:19
1

Turns out the issue was our server's operating system. We were on CentOS 5.5, and it doesn't support OpenSSL higher than 0.9.8. We had to upgrade to a new server. We decided on a CentOS 7 server and are in the process of migrating. The CentOS 7 server came with OpenSSL 1.0.2 installed. I setup and tested our connection with iATS today and had it working in no time at all. Hooray!

While I had manually updated OpenSSL, I neglected to update it with our server's package manager (and our website would only recognize what the package manager was using). But it turns out with CentOS 5.5, the yum package manager only goes up to 0.9.8e. There was no way around it.

There are so many benefits to CentOS 7 over 5.5, even with all the migration work, I'm glad we made the change.

  • Had the exact same issue. Please report your findings if the extension is working for you. For me, on CV 4.7.11 on J!3.6.2, the webform is not advancing to the confirmation page once the transaction is successful. – BruceW Sep 27 '16 at 1:05
  • Extension is working great, now that we made the change to CentOS 7. – Allen Hutchison Sep 27 '16 at 1:36
  • Okay, then looks like its something in my codebase. Thanks for your experience. – BruceW Sep 28 '16 at 18:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.