You are here

function pay_method_gateway::pay_method_validate in Pay 7

Same name and namespace in other branches
  1. 6 includes/handlers/pay_method_gateway.inc \pay_method_gateway::pay_method_validate()

@todo Please document this function.

Overrides pay_method::pay_method_validate

See also

http://drupal.org/node/1354

File

includes/handlers/pay_method_gateway.inc, line 542
The base class for credit card payment activities.

Class

pay_method_gateway
@file The base class for credit card payment activities.

Code

function pay_method_validate($form, &$form_state, $element) {
  parent::pay_method_validate($form, $form_state, $element);
  if ($this->payment_type == 'cc') {

    // Manually handle #required on fields required by this payment_type.
    $required = array(
      'first_name',
      'last_name',
      'mail',
      'cc_number',
      'cc_exp_month',
      'cc_exp_year',
    );
    foreach ($required as $key) {
      if ((!count($this->{$key}) || is_string($this->{$key}) && strlen(trim($this->{$key})) == 0) && isset($element[$key])) {
        form_error($element[$key], t('!name field is required.', array(
          '!name' => $element[$key]['#title'],
        )));
      }
    }

    // Validate the card number and set the form value to our clean version.
    if (!$this
      ->cc_number_validate()) {
      form_error($element['cc_number'], $this->error_message);
    }
    form_set_value($element['cc_number'], $this->cc_number, $form_state);

    // Validate the CCV2 code and set the form value to our clean version.
    if (!$this
      ->cc_ccv2_validate()) {
      form_error($element['cc_ccv2'], $this->error_message);
    }
    form_set_value($element['cc_ccv2'], $this->cc_ccv2, $form_state);

    // Validate the expiration date.
    if (!$this
      ->cc_expiration_validate()) {
      form_error($element['cc_exp_month'], $this->error_message);
    }

    // Set the "payment_type" value to the specific card type.
    form_set_value($element['payment_type'], $this->cc_type, $form_state);

    // Validate the issue number field.
    if (!$this
      ->cc_issue_number_validate()) {
      form_set_error('cc_issue_number', $this->error_message);
    }
  }
}