Community Documentation

How to write a payment module to Pay payment API

Last updated February 17, 2012. Created by stenjo on February 17, 2012.
Edited by Daglees. Log in to edit this page.

The payment API Pay module provides a common API for forms and payment modules to be connected. This page describes the process of writing a payment module to fit the Pay API and enable it to be used as one among many payment options available.

This instruction set is created while implementing the Tripletex payment method and code examples are picked from there.

To implement the interface to Pay, the payment method module must implement the hook hook_pay_method_handler_info() and may look something like this:

<?php
/**
* This hook is used to inform Pay of available payment method handlers.
* Administrators will be able to create new instances of payment methods,
* based on the capabilities and options for your handler(s).
*/
function tripletex_pay_method_handler_info() {
  return array(
   
'pay_method_custom' => array(
     
'title' => t('Electronic invoice'),
     
'description' => t('Create an electroinc invoice and have that shipped to the customers e-mail address'),
     
'parent' => 'pay_method_custom',
     
'module' => 'tripletex',
     
'path' => drupal_get_path('module', 'tripletex') .'/includes',
    ),
  );
}
?>

The hook tells the Pay API that the payment method is called "Electronic invoice", that it extends the class pay_method_custom {} and that everything is found in the "tripletex" module. In addition it also defines the path to where the class extention is expected to be found: In the "/includes" subdirectory of the module "tripletex" root.

pay_method_custom_

The implementation is expected to be named class pay_method_custom_tripletex {} and is expected to be found in a file named includes/pay_method_custom_tripletex.inc as the path property of the info is pointing to that location.

The pay_method_custom class extends the pay_method class which in turn extends the Pay class.

<?php
class pay_method_custom_tripletex extends pay_method_custom {
  var
$tripltetex_account = ''// Local property keeping the login account information

 
function available_currencies() {
    return
tripletex_currencies();
  }

  function
settings_form(&$form, &$form_state) {
   
parent::settings_form($form, $form_state);
   
//...
   
$form[$group]['tt']['tripletex_account'] = array(
     
'#type' => 'textfield',
     
'#title' => t('Tripletex Account e-mail address'),
     
'#default_value' => $this->tripltex_account,
     
'#required' => TRUE,
     
'#parents' => array($group, 'tripltex_account'),
    );
}
?>

The class inherits and may overvrite a few important methods. These are:
available_currencies(): Must be implemented and returns an array of currency codes available for this payment method.
settings_form(): With the appropriate call to the parent this function might add payment method specific parameters to the settings form presented when an admin adds this payment method.

Page status

Needs updating

Log in to edit this page

About this page

Drupal version
Drupal 6.x, Drupal 7.x
Level
Beginner
Audience
Programmers
Keywords
Pay

Develop for Drupal

Drupal’s online documentation is © 2000-2013 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License. Comments on documentation pages are used to improve content and then deleted.
nobody click here