You are here

function uc_credit_form_uc_cart_checkout_review_form_alter in Ubercart 7.3

Same name and namespace in other branches
  1. 8.4 payment/uc_credit/uc_credit.module \uc_credit_form_uc_cart_checkout_review_form_alter()

Implements hook_form_FORM_ID_alter() for uc_cart_checkout_review_form().

File

payment/uc_credit/uc_credit.module, line 153
Defines the credit card payment method and hooks in payment gateways.

Code

function uc_credit_form_uc_cart_checkout_review_form_alter(&$form, &$form_state) {

  // Check if the customer paid by CC and refreshed on the review page.
  if (isset($_SESSION['cc_pay']) && !isset($_SESSION['sescrd']) && empty($_POST['sescrd'])) {

    // Send them back to the checkout form to put in their details again.
    drupal_set_message(t('To protect our customers from identity theft, credit card details are erased when a browser refreshes on the checkout review page.  Please enter your card details again and re-submit the form.'), 'error');
    $_SESSION['clear_cc'] = TRUE;
    unset($_SESSION['cc_pay']);
    drupal_goto('cart/checkout');
  }
  if (isset($_SESSION['sescrd'])) {

    // Cache the CC details for use in other functions.
    uc_credit_cache('save', $_SESSION['sescrd']);

    // Store the encrypted details to the form for processing on submit.
    $form['sescrd'] = array(
      '#type' => 'hidden',
      '#value' => base64_encode($_SESSION['sescrd']),
    );
  }
  else {
    $form['sescrd'] = array(
      '#type' => 'hidden',
      '#value' => '',
    );
  }

  // Add submit handler to preserve CC details for the back button and
  // failed order submissions.
  $form['actions']['back']['#submit'][] = 'uc_credit_cart_review_back_submit';

  // Reconstruct the submit handler array for before and after processing.
  $submit = array_merge(array(
    'uc_credit_cart_review_pre_form_submit',
  ), $form['#submit']);
  $submit[] = 'uc_credit_cart_review_post_form_submit';
  $form['#submit'] = $submit;

  // Clear the session of the details.
  unset($_SESSION['sescrd']);
}