You are here

test_gateway.module in Ubercart 6.2

A dummy payment gateway to use for testing or as an example.

All payments using this test gateway will succeed, except when:

  • Credit card number equals '0000000000000000'. (Note that ANY card number that fails the Luhn algorithm check performed by uc_credit will not even be submitted to this gateway).
  • CVV equals '000'.
  • Credit card is expired.
  • Payment amount equals 12.34 in store currency units.
  • Customer's billing first name equals 'Fictitious'.
  • Customer's billing telephone number equals '8675309'.

File

payment/uc_credit/test_gateway.module
View source
<?php

/**
 * @file
 * A dummy payment gateway to use for testing or as an example.
 *
 * All payments using this test gateway will succeed, except when:
 * - Credit card number equals '0000000000000000'. (Note that ANY card number
 *   that fails the Luhn algorithm check performed by uc_credit will not even be
 *   submitted to this gateway).
 * - CVV equals '000'.
 * - Credit card is expired.
 * - Payment amount equals 12.34 in store currency units.
 * - Customer's billing first name equals 'Fictitious'.
 * - Customer's billing telephone number equals '8675309'.
 */

/*******************************************************************************
 * Hook Functions (Ubercart)
 ******************************************************************************/

/**
 * Implements hook_payment_gateway().
 *
 * @see test_gateway.module
 * @see test_gateway_charge()
 */
function test_gateway_payment_gateway() {
  $gateways[] = array(
    'id' => 'test_gateway',
    'title' => t('Test Gateway'),
    'description' => t('Process credit card payments through the Test Gateway.'),
    'credit' => 'test_gateway_charge',
  );
  return $gateways;
}

/*******************************************************************************
 * Module and Helper Functions
 ******************************************************************************/

/**
 * Callback function to perform the charge operation.
 *
 * @see test_gateway.module
 * @see test_gateway_payment_gateway()
 */
function test_gateway_charge($order_id, $amount, $data) {
  global $user;
  $order = uc_order_load($order_id);

  // cc_exp_month and cc_exp_year are also validated by
  // _uc_credit_valid_card_expiration() on the checkout form.
  $month = $order->payment_details['cc_exp_month'];
  $year = $order->payment_details['cc_exp_year'];
  if ($year < 100) {
    $year = $year + 2000;
  }

  // Card is expired at 0:00 on the first day of the next month.
  $expiration_date = mktime(0, 0, 0, $month + 1, 1, $year);

  // Conditions for failure are described in file documentation block above.
  // All other transactions will succeed.
  if ($order->payment_details['cc_number'] == '0000000000000000' || $order->payment_details['cc_cvv'] == '000' || $expiration_date - time() <= 0 || $amount == 12.34 || $order->billing_first_name == 'Fictitious' || $order->billing_phone == '8675309') {
    $success = FALSE;
  }
  else {
    $success = TRUE;
  }

  // Uncomment this line to see the order object.  The information for the
  // payment is in the $order->payment_details array.
  // drupal_set_message('<pre>' . print_r($order->payment_details, TRUE) . '</pre>');
  if ($success) {
    $message = t('Credit card charged: !amount', array(
      '!amount' => uc_currency_format($amount),
    ));
    uc_order_comment_save($order_id, $user->uid, $message, 'admin');
  }
  else {
    $message = t('Credit card charge failed.');
    uc_order_comment_save($order_id, $user->uid, $message, 'admin');
  }
  $result = array(
    'success' => $success,
    'comment' => t('Card charged, resolution code: 0022548315'),
    'message' => $success ? t('Credit card payment processed successfully.') : t('Credit card charge failed.'),
    'uid' => $user->uid,
  );
  return $result;
}

Functions

Namesort descending Description
test_gateway_charge Callback function to perform the charge operation.
test_gateway_payment_gateway Implements hook_payment_gateway().