/** * 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; }