/**
  * Validate the card type and prevent the field from failing required validation, Stripe.js will handle the required validation.
  *
  * The card field inputs are erased on submit, this will cause two issues:
  * 1. The field will fail standard validation if marked as required.
  * 2. The card type validation will not be performed.
  *
  * @param array $result The field validation result and message.
  * @param mixed $value The field input values; empty for the credit card field as they are cleared by frontend.js
  * @param array $form The Form currently being processed.
  * @param GF_Field $field The field currently being processed.
  *
  * @return array
  */
 public function pre_validation($result, $value, $form, $field)
 {
     if ($field->type == 'creditcard' && rgpost('stripe_credit_card_last_four')) {
         $this->populate_credit_card_last_four($form);
         $card_type = rgpost('stripe_credit_card_type');
         $card_slug = $this->get_card_slug($card_type);
         if (!$field->is_card_supported($card_slug)) {
             $result['is_valid'] = false;
             $result['message'] = $card_type . ' ' . esc_html__('is not supported. Please enter one of the supported credit cards.', 'gravityforms');
         } else {
             $result['is_valid'] = true;
             $result['message'] = '';
         }
     }
     return $result;
 }
 /**
  * Validate the card type and prevent the field from failing required validation, Stripe.js will handle the required validation.
  *
  * The card field inputs are erased on submit, this will cause two issues:
  * 1. The field will fail standard validation if marked as required.
  * 2. The card type validation will not be performed.
  *
  * @param array    $result The field validation result and message.
  * @param mixed    $value The field input values; empty for the credit card field as they are cleared by frontend.js.
  * @param array    $form The Form currently being processed.
  * @param GF_Field $field The field currently being processed.
  *
  * @return array
  */
 public function pre_validation($result, $value, $form, $field)
 {
     // If this is a credit card field and the last four credit card digits are defined, validate.
     if ($field->type == 'creditcard' && rgpost('stripe_credit_card_last_four')) {
         // Get card slug.
         $card_type = rgpost('stripe_credit_card_type');
         $card_slug = $this->get_card_slug($card_type);
         // If credit card type is not supported, mark field as invalid.
         if (!$field->is_card_supported($card_slug)) {
             $result['is_valid'] = false;
             $result['message'] = $card_type . ' ' . esc_html__('is not supported. Please enter one of the supported credit cards.', 'gravityforms');
         } else {
             $result['is_valid'] = true;
             $result['message'] = '';
         }
     }
     return $result;
 }