adixon / ca.civicrm.iats Goto Github PK
View Code? Open in Web Editor NEW[deprecated] CiviCRM Extension for IATS Web Services Payment Processor
[deprecated] CiviCRM Extension for IATS Web Services Payment Processor
In the function civicrm_api3_job_iatsrecurringcontributions a SQL query is built to look for eligible recurring contributions. This query contains the clause "AND pp.is_test = 0". Unless this is strictly necessary I would prefer that this not be used as a filter so that round trip testing can be done using the test credentials.
Can anyone confirm that this code works for US$? I've been living in a C$ bubble, but I think it should work identically if your account is US$. I also wonder whether there should be some extra configuration - my understanding of iATS is that each account is for a specific currency, but CiviCRM doesn't make this assumption ('cuz it's not true for other payment processors).
Maybe even just a note to identify the currency in the payment processor label or description. Worst case scenario might be that someone contributes with a credit card and gets charged 10% more or less that they were expecting because of currency exchange.
In versions of CiviCRM at 4.3.4 and lower we found that CiviCRM passes the $params['amount'] to IATS with a comma even though it does not allow you to enter one on the contribution page. The value iATS receives is "1,000.00" which it submits to the payment processor. This gets recorded as $1.00. This appears to be related to the formatting of the amount on the confirmation page. It is fixed in 4.4.2 so I am reporting it here rather than in core since they will probably not support older versions. You may want to submit a fix to the long term support version.
Here is a possible workaround on line 194 of ca.civicrm.iats/CRM/Core/Payment/iATSService.php:
$request['total'] = sprintf('%01.2f', str_replace(',', '', $params['amount']));
or alternately:
$params['amount'] = CRM_Utils_Rule::cleanMoney($params['amount'])
$request['total'] = sprintf('%01.2f', $params['amount']);
The same issue applies to the older iATS in core. In that case the issue is on line 127 of CRM/Core/Payment/IATS.php.
On fresh install of drupal 7.37 and civicrm 4.6.3, after migrating civicrm data and upgrading iatspayments to 1.3.2 I'm getting this warning:
Strict warning: Declaration of CRM_Core_Payment_iATSService::singleton() should be compatible with & CRM_Core_Payment::singleton($mode, &$paymentProcessor, &$paymentForm = NULL, $force = false) in Civi\Payment\System::getByProcessor() (line 52 of /home/user/public_html/sites/all/modules/civicrm/Civi/Payment/System.php).
I have configured the IATS payment processor in my test environment using the agent code and password "TEST88" as specified in the readme. I can see how to connect it to a contribution page. However, when I try to use it in the back-office by clicking "Create New ... Contribution(Credit Card)" and then selecting my iATS ACH processor, the screen does not have all the needed entry fields. It does have billing name and billing address. But the screen is missing the fields for:
Account type
Name of Account Holder
Bank Account Number
Bank number + branch transit number
Bank Name
BTW: I am in the US. Will this test account work for US currency?
I'm wondering if there are plans to release this for 4.6, and if there are dates attached to that. Unfortunately, the client who is asking doesn't have significant funds to support an upgrade.
Thought you may want to mention the SOAP dependency in the README. I didn't have SOAP installed on my server, and ran into the white screen of death when trying to process a payment. The server error was:
lass 'SoapClient' not found in /sites/default/files/civicrm/extensions/ca.civicrm.iats/CRM/iATS/iATSService.php on line 103
Good instructions are here:
http://stackoverflow.com/questions/11391442/fatal-error-class-soapclient-not-found
When installing the extension on a site running PHP 5.4, I encountered the following error:
PHP Fatal error: Call-time pass-by-reference has been removed in /sites/default/files/civicrm/extensions/ca.civicrm.iats/iats.php on line 145
Removing the ampersand in the specified line fixed the error and allowed the installation to complete successfully:
Change this
$fname(&$form);
to
$fname($form);
Thanks!
Hi Alan,
I'm doing some testing across PHP versions for our CDN TaxReceipts module - came across this notice - after switching PHP versions from 5.3 to 5.5:
( ! ) Fatal error: Call-time pass-by-reference has been removed in /Applications/MAMP/htdocs/Local/drupal743.local/sites/default/civicrm/extensions/ca.civicrm.iats/iats.php on line 145
Switching back to 5.3: resolves the issue.
-- Karin
Nothing was getting inserted into the watchdog log. The issue seems to be with the way the extension tries to get the name of the userFramework.
We were getting a php notice on
https://github.com/adixon/ca.civicrm.iats/blob/master/CRM/iATS/iATSService.php#L64
$user_system =_iats_civicrm_domain_info('userSystem');
$user_system was NULL after this call because:
Inside _iats_civicrm_domain_info the key userSystem does not exist on either the $domain array (hence the notice on then empty check) or on the unserialized $config_backend array at
https://github.com/adixon/ca.civicrm.iats/blob/master/iats.php#L314
One possible change (worked for us):
- $user_system = _iats_civicrm_domain_info('userSystem');
+ $config = CRM_Core_Config::singleton();
+ $user_system = $config->userFramework;
- $this->options['log'] = _iats_civicrm_domain_info('userFrameworkLogging') && !empty($user_system->is_drupal);
+ $this->options['log'] = _iats_civicrm_domain_info('userFrameworkLogging') == '1'
+ && ($config->userFramework == 'Drupal' || $config->userFramework == 'Drupal6');
Not sure if this is a 4.4 change?
When do you think this extension will be able to handle direct debit for the UK? What are the issues?
From reading a closed issue, it sounds like this extension already handles credit cards for the UK. Is this correct?
When I tried to make a contribution while logging was turned on, I got the following error message:
Table 'dev18_crmlog.log_civicrm_iats_customer_codes' doesn't exist
After turning off logging, the error did not occur.
On the final step of using my contribution page with the ACH payment processor, I get the error:
Class 'SoapClient' not found in /home/dev18/public_html/pogstone_extensions/ca.civicrm.iats-1.1-beta3/CRM/iATS/iATSService.php on line 133
FYI: My page is using US currency.
Test below is from a confirmation email client gets after setting up a recurring donation. It provides a link for them to edit/change/delete this recurring donation but it just spits out an XML coded page.
Donors aren't happy because they can't change their recurring donation.
I also have no means of going in and changing it either.
Currently using CiviCRM 4.6.13, iats 1.5.0
Test-drive Email / Receipt
This is a test-drive email. No live financial transaction has occurred.
Thank You for your gift to Operation Exodus USA
Please print this confirmation for your records.
Contribution Information
Amount $ 1.00
Date March 22nd, 2017 12:38 PM
Transaction # A99EA286:1490200737
This is a recurring contribution. You can cancel future contributions by visiting this web page.
https://www.iatspayments.com/NetGate/ProcessLink.asmx?WSDL
You can update recurring contribution amount or change the number of installments for this recurring contribution by visiting this web page.
https://www.iatspayments.com/NetGate/ProcessLink.asmx?WSDL
In my environment I have the following payment processors enabled:
iATS ACH
Authorize.net
PayPal Pro
If I try to use the "Contribution (Credit Card)" screen in the back-office and choose either Authorize.net or PayPalPro, the screen does NOT display the needed fields to enter the credit card number, expiration date, etc. which means I cannot process credit cards for Auth.net or PayPalPro in the back-office.
As a work-around, if I disable the iATS ACH payment processor then Auth.net and PayPal start working again in the back-office.
We have noticed lately that our client's client are having delays when they click to process a transaction using iATS and CiviCRM. Because of those delays, many clicked again on the action button and we have 6 transaction that were diplicated (2 to 4 times) and had to do a few refunds.
My question is: where does that delay come from ? Can it be iATS server being slow to respond or our CiviCRM installation ?
All hints are welcome ;-)
Thanks,
Martin
The MOP value needs to be changed from DISC to DSC.
Also, the UK has some other cards?
I'd be happy to work on this if there's someone in the UK who can do some testing.
COLUMN next_sched_contribution becomes next_sched_contribution_date
See https://github.com/civicrm/civicrm-core/blob/master/CRM/Upgrade/Incremental/sql/4.4.alpha1.mysql.tpl
2014/01/09 10:02:46 [error] 4244#0: *1684 FastCGI sent in stderr: "PHP message: PHP Fatal error: Class 'SoapClient' not found in /sites/all/modules/civicrm/extensions/ca.civicrm.iats-1.1-beta1/CRM/iATS/iATSService.php on line 109" while reading response header from upstream, client: 46.65.45.231, server: localhost, request: "POST /civicrm/contribute/transact HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "localhost", referrer: "https://localhost/civicrm/contribute/transact?_qf_Confirm_display=true&qfKey=d9509a9fcewrwere3243c5b9035d_6059"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.