It looks like you had at some point set up the eWay Recurring extension. Looked at the list of paths, it doesn't seem to be installed currently.
I looked at line 59 in Civi/Payment/System.php, which your error references. It seems like that function is running based on the payment processors you have configured.
The solution is to either:
a) Install the ...
We had the same issue when setting up recurring payments for the first time. This is how we resolved it. Note: This is for Australia only.
Login to MyeWay and create an API Key and password.
In CiviCRM, modify or create an eWay recurring payment processor with the following:
Username: your usual eWay username (ie. email address).
Password: The new API ...
ok - this has fixed for us and the reason was the incorrect param sent to the ProcessPayment operation. The correct way of sending the invoice params is -
$client = CRM_Core_Payment_EwayUtils::getClient($params['payment_processor_id']);
$endPoint = 'https://www.eway.com.au/gateway/managedpayment/ProcessPayment';
$paymentInfo = array(
If you’re on Drupal you can use Webform CiviCRM module and Webform Calculator module -> to calculate transaction fees based on other fields, authorization fee and percentage -> If you go this route let me know and I’ll post an updated link to a version of Webform Calculator module code with some fixes.
I think the agileware version is now updated to use for eWAY Rapid API with the Responsive Shared Page method. This method does not ask for any CC details on civicrm and navigates user to eway site for the payment.
We did hit some problems using it on drupal webform, but I think it is already handled https://github.com/agileware/au.com.agileware....
Fuzion did some work to improve eWay recurring using their RapidDirect, Rapid & Shared solutions. The code is now available in the Omnipay Extension.
AgileWare helped fund the development of this but can't comment on whether that implies it is their preferred solution now.
It has been confirmed by @petednz and by testing without the 'Separate membership payment' option, that unsetting this option resolves the 'transaction is a duplicate' error.
In our case the membership types were moved out of the form into a price set.