X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_payby.pm;h=9feaf14cd8b28c1bd4d8b6e4a1f68740cf24decc;hb=292ef074d01bb925e9a466ed771bf2ac418bb44f;hp=a65a17133a8471365ae1165df1b7a59003f2bfdb;hpb=a4d4d3df88b33a6db30b565921f6d62efb252351;p=freeside.git diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index a65a17133..9feaf14cd 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -2,6 +2,7 @@ package FS::cust_payby; use base qw( FS::payinfo_Mixin FS::cust_main_Mixin FS::Record ); use strict; +use Digest::SHA qw( sha512_base64 ); use Business::CreditCard qw( validate cardtype ); use FS::UID qw( dbh ); use FS::Msgcat qw( gettext ); @@ -427,12 +428,16 @@ sub check { } - if ( $self->paydate eq '' || $self->paydate eq '-' ) { - return "Expiration date required" - # shouldn't payinfo_check do this? - unless $self->payby =~ /^(CHEK|DCHK)$/; + if ( $self->payby =~ /^(CHEK|DCHK)$/ ) { + $self->paydate(''); - } else { + + } elsif ( $self->payby =~ /^(CARD|DCRD)$/ ) { + + # shouldn't payinfo_check do this? + return "Expiration date required" + if $self->paydate eq '' || $self->paydate eq '-'; + my( $m, $y ); if ( $self->paydate =~ /^(\d{1,2})[\/\-](\d{2}(\d{2})?)$/ ) { ( $m, $y ) = ( $1, length($2) == 4 ? $2 : "20$2" ); @@ -451,6 +456,7 @@ sub check { #&& !$ignore_expired_card && ( $y<$nowy || ( $y==$nowy && $1<$nowm ) ); + } if ( $self->payname eq '' && $self->payby !~ /^(CHEK|DCHK)$/ && @@ -494,6 +500,14 @@ sub _banned_pay_hashref { }; } +sub _new_banned_pay_hashref { + my $self = shift; + my $hr = $self->_banned_pay_hashref; + $hr->{payinfo_hash} = 'SHA512'; + $hr->{payinfo} = sha512_base64($hr->{payinfo}); + $hr; +} + =item paydate_mon_year Returns a two element list consisting of the paydate month and year. @@ -560,7 +574,7 @@ Returns the field names used in the web interface (including some pseudo-fields) sub cgi_cust_payby_fields { #my $class = shift; [qw( payby payinfo paydate_month paydate_year paycvv payname weight - payinfo1 payinfo2 payinfo3 paytype paystate )]; + payinfo1 payinfo2 payinfo3 paytype paystate payname_CHEK )]; } =item cgi_hash_callback HASHREF @@ -582,7 +596,7 @@ sub cgi_hash_callback { if ( $hashref->{payby} =~ /^(CHEK|DCHK)$/ ) { - unless ( grep $hashref->{$_}, qw( payinfo1 payinfo2 payinfo3 payname ) ) { + unless ( grep $hashref->{$_}, qw(payinfo1 payinfo2 payinfo3 payname_CHEK)) { %$hashref = (); return; } @@ -592,7 +606,7 @@ sub cgi_hash_callback { if $conf->config('echeck-country') eq 'CA'; $hashref->{payinfo} .= $hashref->{'payinfo2'}; - $hashref->{payname} .= $hashref->{'payname_CHEK'}; + $hashref->{payname} = $hashref->{'payname_CHEK'}; } elsif ( $hashref->{payby} =~ /^(CARD|DCRD)$/ ) {