Fundraising/SmashPig
CiviCRM Extension
We have written an extension in CiviCRM to use the SmashPig library to charge recurring payments. It currently supports credit cards via Ingenico and Adyen, and iDEAL and Apple Pay via Adyen.
The SmashPig extension has a settings menu in the Civi UI:
Administer -> System Settings -> SmashPig Settings
Here you can switch the extension to either use queues or directly insert the donation. In production we always want to use queues so that the charge job doesn't conflict with the donation queue consumer for table access, and so that any special data munging we apply in the queue consumer is applied consistently.
The extension defines a CiviCRM PaymentProcessor implementation (limited to only charging recurring installments) and a job that can be run via the CiviCRM.
Running the recurring job with 1 donation
drush @wmff -vv cvapi job.process_smashpig_recurring batch_size=1
Running with a specific recurring_id
drush @wmff -vv cvapi job.process_smashpig_recurring contribution_recur_id=12345
Runing through run job (if on prod, always use this instead of above two since we do not want deadlock), this will call the process control script and create a log file
run-job -j recurring_smashpig_charge --slow-start