[freeside-commits] branch master updated. 461cf66878e2d63d0360184aeeebcbc0e45acfb9
Ivan
ivan at 420.am
Tue Jan 26 20:11:12 PST 2016
The branch, master has been updated
via 461cf66878e2d63d0360184aeeebcbc0e45acfb9 (commit)
from 4e6767fd6f9c408d5841b72fe8f979894ce5f7f1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 461cf66878e2d63d0360184aeeebcbc0e45acfb9
Author: Ivan Kohler <ivan at freeside.biz>
Date: Tue Jan 26 20:11:11 2016 -0800
respect card-types config in backend (new customer payment types / 4.x), RT#39861
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm
index 83b951e..79a1468 100644
--- a/FS/FS/cust_payby.pm
+++ b/FS/FS/cust_payby.pm
@@ -7,6 +7,7 @@ use Digest::SHA qw( sha512_base64 );
use Business::CreditCard qw( validate cardtype );
use FS::UID qw( dbh );
use FS::Msgcat qw( gettext );
+use FS::Misc qw( card_types );
use FS::Record; #qw( qsearch qsearchs );
use FS::payby;
use FS::cust_main;
@@ -154,7 +155,8 @@ sub insert {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
- my $error = $self->SUPER::insert;
+ my $error = $self->check_payinfo_cardtype
+ || $self->SUPER::insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
@@ -228,6 +230,14 @@ sub replace {
|| $old->payby =~ /^(CHEK|DCHK)$/ && $self->payby =~ /^(CHEK|DCHK)$/ )
&& ( $old->payinfo eq $self->payinfo || $old->paymask eq $self->paymask );
+ if ( $self->payby =~ /^(CARD|DCRD)$/
+ && $old->payinfo ne $self->payinfo
+ && $old->paymask ne $self->paymask )
+ {
+ my $error = $self->check_payinfo_cardtype;
+ return $error if $error;
+ }
+
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $SIG{QUIT} = 'IGNORE';
@@ -483,6 +493,23 @@ sub check {
$self->SUPER::check;
}
+sub check_payinfo_cardtype {
+ my $self = shift;
+
+ my $payinfo = $self->payinfo;
+ $payinfo =~ s/\D//g;
+
+ return '' if $payinfo =~ /^99\d{14}$/; #token
+
+ my %bop_card_types = map { $_=>1 } values %{ card_types() };
+ my $cardtype = cardtype($payinfo);
+
+ return "$cardtype not accepted" unless $bop_card_types{$cardtype};
+
+ '';
+
+}
+
sub _banned_pay_hashref {
my $self = shift;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/cust_payby.pm | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
More information about the freeside-commits
mailing list