X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpayinfo_Mixin.pm;h=40b97a91da8c393121167a57b3086ea15447f4db;hb=5756baa126e1a349ee1296aba887fc4f3c68e22b;hp=2d7b4ffe0923125c064d7d9646a3ce34b85b4e45;hpb=9509e5bfb7f9331303153cac24d7bfecbe2ea9f1;p=freeside.git diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm index 2d7b4ffe0..40b97a91d 100644 --- a/FS/FS/payinfo_Mixin.pm +++ b/FS/FS/payinfo_Mixin.pm @@ -160,10 +160,16 @@ sub mask_payinfo { } else { # if not, mask it... if ($payby eq 'CARD' || $payby eq 'DCRD' || $payby eq 'MCRD') { - # Credit Cards (Show first and last four) - $paymask = substr($payinfo,0,6). - 'x'x(length($payinfo)-10). - substr($payinfo,(length($payinfo)-4)); + # Credit Cards + my $conf = new FS::Conf; + my $mask_method = $conf->config('card_masking_method') || 'first6last4'; + $mask_method =~ /^first(\d+)last(\d+)$/ + or die "can't parse card_masking_method $mask_method"; + my($first, $last) = ($1, $2); + + $paymask = substr($payinfo,0,$first). + 'x'x(length($payinfo)-$first-$last). + substr($payinfo,(length($payinfo)-$last)); } elsif ($payby eq 'CHEK' || $payby eq 'DCHK' ) { # Checks (Show last 2 @ bank) my( $account, $aba ) = split('@', $payinfo ); @@ -210,7 +216,7 @@ sub payinfo_check { FS::payby->can_payby($self->table, $self->payby) or return "Illegal payby: ". $self->payby; - if ( $self->payby eq 'CARD' ) { + if ( $self->payby eq 'CARD' && ! $self->is_encrypted($self->payinfo) ) { my $payinfo = $self->payinfo; $payinfo =~ s/\D//g; $self->payinfo($payinfo); @@ -221,7 +227,7 @@ sub payinfo_check { validate($self->payinfo) or return "Illegal credit card number"; return "Unknown card type" if cardtype($self->payinfo) eq "Unknown"; } else { - $self->payinfo('N/A'); + $self->payinfo('N/A'); #??? } } else { my $error = $self->ut_textn('payinfo');