self::VISA, 'americanexpress' => self::AMERICAN_EXPRESS, 'amex' => self::AMERICAN_EXPRESS, 'mastercard' => self::MASTERCARD, 'discover' => self::DISCOVER, 'jcb' => self::JCB, 'dinersclub' => self::DINERS, 'carteblanche' => self::CARTE_BLANCHE, 'chinaunionpay' => self::UNIONPAY, 'unionpay' => self::UNIONPAY, 'laser' => self::LASER, 'maestro' => self::MAESTRO, 'solo' => self::SOLO, 'switch' => self::SWITCH, ]; $cardName = strtolower(str_replace([' ', '-', '_'], '', $cardName)); if (empty($cardTypes[$cardName]) && 1 == preg_match('/^('.implode('|', array_keys($cardTypes)).')/', $cardName, $matches)) { // Some gateways return extra stuff after the card name $cardName = $matches[1]; } if (! empty($cardTypes[$cardName])) { return $cardTypes[$cardName]; } else { return self::CREDIT_CARD_OTHER; } } }