Drupal Association Individual MemberZend Certified Engineer Details

Reply to comment

Preview to Direct Debit payment processor for CiviCRM and Drupal payment gateway module

Update: Our modifications to CiviCRM are in CiviCRM 3.0 core now. We will publish the Payment Processor and the corresponding Drupal module in the next weeks. Don't expect fast process though - we are quite busy currently. Use our demo at http://civi.fuerstnet.de (username and password: demo) meanwhile.

Update 2: Get a newer version of this text including downloadable files at http://fuerstnet.de/de/node/151 (german only).


  1. Add files to the sites module directory and patch your CiviCRM (version 2.2)
  2. Add the payment processor by running addDirectDebitPaymentProcessor.php from command line
  3. Configure Payment Processor (Instead of using http requests to call the processor we call directly a module function direct_debit_pp_do_payment($input_data, $mode);). You need to fill in the required fields in the payment processor setup form, but we won't use/need them.
  4. Create the contribution page and choose the direct debit payment processor.
  5. Make a contribution (fill in the required data and send the form and its confirmation).
  6. The drupal module will get invoked (by calling direct_debit_pp_do_payment()), it validates the contribution data and stores it to its database. (At the moment, the function returns the transaction result.)
  7. Set contribution status to pending. (I adapted the function processConfirm() in CRM/Contribute/BAO/Contribution/Utils.php so that we can set the $pending parameter in the function call CRM_Contribute_Form_Contribution_Confirm::processContribution to true. The payment processor can now control if he wants to set the contribution status to pending or not.
  8. A user with the access direct debit permissions can now create a DTA file which includes the new transactions (DTA is a standard transaction file format in Germany and will be accepted by the most german banks; for an export different file formats we need to adept the export functions code). While creating the DTA the contribution status in the direct debit module (and in civicrm) get set to "in progress".
  9. If the transactions have got completed / canceled / failed the status can be set to completed / canceled / failed. (At this point we will call some civicrm functions to set the contribution status also in civicrm to completed.)
  10. That's it. Test it and it would be nice to receive your feedback.



  • Enable and test the payment processor for CiviEvents and CiviMember
  • Recurring payments

About the attachment:

I attached an archive which includes:
  • the patch (civicrm-2.2.2-direct-debit-all.20090504.patch; see READEME.txt for instructions how to apply the patch)
  • the drupal module direct_debit (to use the drupal module you may need the bank identification numbers from the German Bundesbank and the pears Payment_DTA Package from PEAR ... If you only want to test the payment processor you properly won't need this files.)
  • README.txt and LICENSE.txt


The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Insert Google Map macro.

More information about formatting options