protected function parseCardType($cardName)
{
$cardTypes = ['visa' => PAYMENT_TYPE_VISA, 'americanexpress' => PAYMENT_TYPE_AMERICAN_EXPRESS, 'amex' => PAYMENT_TYPE_AMERICAN_EXPRESS, 'mastercard' => PAYMENT_TYPE_MASTERCARD, 'discover' => PAYMENT_TYPE_DISCOVER, 'jcb' => PAYMENT_TYPE_JCB, 'dinersclub' => PAYMENT_TYPE_DINERS, 'carteblanche' => PAYMENT_TYPE_CARTE_BLANCHE, 'chinaunionpay' => PAYMENT_TYPE_UNIONPAY, 'unionpay' => PAYMENT_TYPE_UNIONPAY, 'laser' => PAYMENT_TYPE_LASER, 'maestro' => PAYMENT_TYPE_MAESTRO, 'solo' => PAYMENT_TYPE_SOLO, 'switch' => PAYMENT_TYPE_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 PAYMENT_TYPE_CREDIT_CARD_OTHER;
}
}