summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Schema.pm8
-rw-r--r--FS/FS/Upgrade.pm2
-rw-r--r--FS/FS/cust_pay.pm4
-rw-r--r--FS/FS/cust_payby.pm24
-rw-r--r--FS/FS/cust_refund.pm2
-rw-r--r--FS/FS/payinfo_Mixin.pm18
6 files changed, 32 insertions, 26 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 60593ad..eab0c19 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -1709,7 +1709,7 @@ sub tables_hashref {
'weight', 'int', 'NULL', '', '', '',
'payby', 'char', '', 4, '', '',
'payinfo', 'varchar', 'NULL', 512, '', '',
- 'cardtype', 'varchar', 'NULL', $char_d, '', '',
+ 'paycardtype', 'varchar', 'NULL', $char_d, '', '',
'paycvv', 'varchar', 'NULL', 512, '', '',
'paymask', 'varchar', 'NULL', $char_d, '', '',
#'paydate', @date_type, '', '',
@@ -2459,7 +2459,7 @@ sub tables_hashref {
'usernum', 'int', 'NULL', '', '', '',
'payby', 'char', '', 4, '', '',
'payinfo', 'varchar', 'NULL', 512, '', '',
- 'cardtype', 'varchar', 'NULL', $char_d, '', '',
+ 'paycardtype', 'varchar', 'NULL', $char_d, '', '',
'paymask', 'varchar', 'NULL', $char_d, '', '',
'paydate', 'varchar', 'NULL', 10, '', '',
'paybatch', 'varchar', 'NULL', $char_d, '', '',#for auditing purposes
@@ -2517,7 +2517,7 @@ sub tables_hashref {
'usernum', 'int', 'NULL', '', '', '',
'payby', 'char', '', 4, '', '',
'payinfo', 'varchar', 'NULL', 512, '', '',
- 'cardtype', 'varchar', 'NULL', $char_d, '', '',
+ 'paycardtype', 'varchar', 'NULL', $char_d, '', '',
'paymask', 'varchar', 'NULL', $char_d, '', '',
#'paydate' ?
'paybatch', 'varchar', 'NULL', $char_d, '', '', #for auditing purposes.
@@ -3078,7 +3078,7 @@ sub tables_hashref {
# be index into payby
# table eventually
'payinfo', 'varchar', 'NULL', 512, '', '', #see cust_main above
- 'cardtype', 'varchar', 'NULL', $char_d, '', '',
+ 'paycardtype', 'varchar', 'NULL', $char_d, '', '',
'paymask', 'varchar', 'NULL', $char_d, '', '',
'paybatch', 'varchar', 'NULL', $char_d, '', '',
'closed', 'char', 'NULL', 1, '', '',
diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index f93c545..6e2a62c 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -428,7 +428,7 @@ sub upgrade_data {
'cust_refund' => [],
'banned_pay' => [],
- #cardtype
+ #paycardtype
'cust_payby' => [],
#default namespace
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index 8e87745..e0a7143 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -97,7 +97,7 @@ Payment Type (See L<FS::payinfo_Mixin> for valid values)
Payment Information (See L<FS::payinfo_Mixin> for data format)
-=item cardtype
+=item paycardtype
Credit card type, if appropriate; autodetected.
@@ -1211,7 +1211,7 @@ sub _upgrade_data { #class method
}
###
- # set cardtype
+ # set paycardtype
###
$class->upgrade_set_cardtype;
diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm
index 993bab5..facb9c8 100644
--- a/FS/FS/cust_payby.pm
+++ b/FS/FS/cust_payby.pm
@@ -115,7 +115,7 @@ paytype
payip
-=item cardtype
+=item paycardtype
The credit card type (deduced from the card number).
@@ -354,10 +354,11 @@ sub check {
or return gettext('invalid_card'); # . ": ". $self->payinfo;
my $cardtype = cardtype($payinfo);
- $self->set('cardtype', $cardtype);
- return gettext('unknown_card_type')
- if $self->payinfo !~ /^99\d{14}$/ #token
- && $cardtype eq "Unknown";
+ $cardtype = 'Tokenized' if $self->payinfo !~ /^99\d{14}$/; #token
+
+ return gettext('unknown_card_type') if $cardtype eq "Unknown";
+
+ $self->set('paycardtype', $cardtype);
unless ( $ignore_banned_card ) {
my $ban = FS::banned_pay->ban_search( %{ $self->_banned_pay_hashref } );
@@ -453,9 +454,9 @@ sub check {
# either ignoring invalid cards, or we can't decrypt the payinfo, but
# try to detect the card type anyway. this never returns failure, so
# the contract of $ignore_invalid_cards is maintained.
- $self->set('cardtype', cardtype($self->paymask));
+ $self->set('paycardtype', cardtype($self->paymask));
} else {
- $self->set('cardtype', '');
+ $self->set('paycardtype', '');
}
# } elsif ( $self->payby eq 'PREPAY' ) {
@@ -539,11 +540,14 @@ sub check_payinfo_cardtype {
my $payinfo = $self->payinfo;
$payinfo =~ s/\D//g;
- return '' if $payinfo =~ /^99\d{14}$/; #token
+ if ( $payinfo =~ /^99\d{14}$/ ) {
+ $self->set('paycardtype', 'Tokenized');
+ return '';
+ }
my %bop_card_types = map { $_=>1 } values %{ card_types() };
my $cardtype = cardtype($payinfo);
- $self->set('cardtype', $cardtype);
+ $self->set('paycardtype', $cardtype);
return "$cardtype not accepted" unless $bop_card_types{$cardtype};
@@ -619,7 +623,7 @@ sub label {
my $self = shift;
my $name = $self->payby =~ /^(CARD|DCRD)$/
- && $self->cardtype || FS::payby->shortname($self->payby);
+ && $self->paycardtype || FS::payby->shortname($self->payby);
( $self->payby =~ /^(CARD|CHEK)$/ ? $weight{$self->weight}. ' automatic '
: 'Manual '
diff --git a/FS/FS/cust_refund.pm b/FS/FS/cust_refund.pm
index ee144c1..4d2baa5 100644
--- a/FS/FS/cust_refund.pm
+++ b/FS/FS/cust_refund.pm
@@ -82,7 +82,7 @@ Payment Type (See L<FS::payinfo_Mixin> for valid payby values)
Payment Information (See L<FS::payinfo_Mixin> for data format)
-=item cardtype
+=item paycardtype
Detected credit card type, if appropriate; autodetected.
diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm
index b32f13b..a61125e 100644
--- a/FS/FS/payinfo_Mixin.pm
+++ b/FS/FS/payinfo_Mixin.pm
@@ -194,9 +194,12 @@ sub payinfo_check {
or return "Illegal payby: ". $self->payby;
if ( $self->payby eq 'CARD' && ! $self->is_encrypted($self->payinfo) ) {
+
my $payinfo = $self->payinfo;
my $cardtype = cardtype($payinfo);
- $self->set('cardtype', $cardtype);
+ $cardtype = 'Tokenized' if $payinfo !~ /^99\d{14}$/;
+ $self->set('paycardtype', $cardtype);
+
if ( $ignore_masked_payinfo and $self->mask_payinfo eq $self->payinfo ) {
# allow it
} else {
@@ -207,8 +210,7 @@ sub payinfo_check {
or return "Illegal (mistyped?) credit card number (payinfo)";
$self->payinfo($1);
validate($self->payinfo) or return "Illegal credit card number";
- return "Unknown card type" if $self->payinfo !~ /^99\d{14}$/ #token
- && $cardtype eq "Unknown";
+ return "Unknown card type" if $cardtype eq "Unknown";
} else {
$self->payinfo('N/A'); #???
}
@@ -216,9 +218,9 @@ sub payinfo_check {
} else {
if ( $self->payby eq 'CARD' and $self->paymask ) {
# if we can't decrypt the card, at least detect the cardtype
- $self->set('cardtype', cardtype($self->paymask));
+ $self->set('paycardtype', cardtype($self->paymask));
} else {
- $self->set('cardtype', '');
+ $self->set('paycardtype', '');
}
if ( $self->is_encrypted($self->payinfo) ) {
#something better? all it would cause is a decryption error anyway?
@@ -415,8 +417,8 @@ sub paydate_epoch_sql {
=item upgrade_set_cardtype
-Find all records with a credit card payment type and no cardtype, and
-replace them in order to set their cardtype.
+Find all records with a credit card payment type and no paycardtype, and
+replace them in order to set their paycardtype.
=cut
@@ -427,7 +429,7 @@ sub upgrade_set_cardtype {
local $ignore_masked_payinfo = 1;
my $search = FS::Cursor->new({
table => $class->table,
- extra_sql => q[ WHERE payby IN('CARD','DCRD') AND cardtype IS NULL ],
+ extra_sql => q[ WHERE payby IN('CARD','DCRD') AND paycardtype IS NULL ],
});
while (my $record = $search->fetch) {
my $error = $record->replace;