projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
71513: Card tokenization [banned_pay tweaks]
[freeside.git]
/
FS
/
FS
/
cust_main
/
Billing_Realtime.pm
diff --git
a/FS/FS/cust_main/Billing_Realtime.pm
b/FS/FS/cust_main/Billing_Realtime.pm
index
28ed3c4
..
8b1a60a
100644
(file)
--- a/
FS/FS/cust_main/Billing_Realtime.pm
+++ b/
FS/FS/cust_main/Billing_Realtime.pm
@@
-416,6
+416,13
@@
sub realtime_bop {
# set fields from passed cust_payby
_bop_cust_payby_options(\%options);
# set fields from passed cust_payby
_bop_cust_payby_options(\%options);
+ # check for banned credit card/ACH
+ my $ban = FS::banned_pay->ban_search(
+ 'payby' => $bop_method2payby{$options{method}},
+ 'payinfo' => $options{payinfo},
+ );
+ return "Banned credit card" if $ban && $ban->bantype ne 'warn';
+
# possibly run a separate transaction to tokenize card number,
# so that we never store tokenized card info in cust_pay_pending
if (($options{method} eq 'CC') && !$self->tokenized($options{'payinfo'})) {
# possibly run a separate transaction to tokenize card number,
# so that we never store tokenized card info in cust_pay_pending
if (($options{method} eq 'CC') && !$self->tokenized($options{'payinfo'})) {
@@
-502,16
+509,6
@@
sub realtime_bop {
die $@ if $@;
###
die $@ if $@;
###
- # check for banned credit card/ACH
- ###
-
- my $ban = FS::banned_pay->ban_search(
- 'payby' => $bop_method2payby{$options{method}},
- 'payinfo' => $options{payinfo},
- );
- return "Banned credit card" if $ban && $ban->bantype ne 'warn';
-
- ###
# check for term discount validity
###
# check for term discount validity
###
@@
-1587,12
+1584,6
@@
sub realtime_refund_bop {
$content{'name'} = $self->get('first'). ' '. $self->get('last');
}
}
$content{'name'} = $self->get('first'). ' '. $self->get('last');
}
}
- if ( $cust_pay->payby eq 'CARD'
- && !$content{'card_number'}
- && $cust_pay->tokenized
- ) {
- $content{'card_token'} = $cust_pay->payinfo;
- }
$void->content( 'action' => 'void', %content );
$void->test_transaction(1)
if $conf->exists('business-onlinepayment-test_transaction');
$void->content( 'action' => 'void', %content );
$void->test_transaction(1)
if $conf->exists('business-onlinepayment-test_transaction');
@@
-1799,6
+1790,13
@@
sub realtime_verify_bop {
return "No cust_payby" unless $options{'cust_payby'};
_bop_cust_payby_options(\%options);
return "No cust_payby" unless $options{'cust_payby'};
_bop_cust_payby_options(\%options);
+ # check for banned credit card/ACH
+ my $ban = FS::banned_pay->ban_search(
+ 'payby' => $bop_method2payby{'CC'},
+ 'payinfo' => $options{payinfo},
+ );
+ return "Banned credit card" if $ban && $ban->bantype ne 'warn';
+
# possibly run a separate transaction to tokenize card number,
# so that we never store tokenized card info in cust_pay_pending
if (($options{method} eq 'CC') && !$self->tokenized($options{'payinfo'})) {
# possibly run a separate transaction to tokenize card number,
# so that we never store tokenized card info in cust_pay_pending
if (($options{method} eq 'CC') && !$self->tokenized($options{'payinfo'})) {
@@
-1819,16
+1817,6
@@
sub realtime_verify_bop {
die $@ if $@;
###
die $@ if $@;
###
- # check for banned credit card/ACH
- ###
-
- my $ban = FS::banned_pay->ban_search(
- 'payby' => $bop_method2payby{'CC'},
- 'payinfo' => $options{payinfo},
- );
- return "Banned credit card" if $ban && $ban->bantype ne 'warn';
-
- ###
# massage data
###
# massage data
###
@@
-2236,6
+2224,13
@@
sub realtime_tokenize {
return '' unless $options{method} eq 'CC';
return '' if $self->tokenized($options{payinfo}); #already tokenized
return '' unless $options{method} eq 'CC';
return '' if $self->tokenized($options{payinfo}); #already tokenized
+ # check for banned credit card/ACH
+ my $ban = FS::banned_pay->ban_search(
+ 'payby' => $bop_method2payby{'CC'},
+ 'payinfo' => $options{payinfo},
+ );
+ return "Banned credit card" if $ban && $ban->bantype ne 'warn';
+
###
# select a gateway
###
###
# select a gateway
###
@@
-2263,16
+2258,6
@@
sub realtime_tokenize {
return '' unless $supported_actions{'CC'} and grep(/^Tokenize$/,@{$supported_actions{'CC'}});
###
return '' unless $supported_actions{'CC'} and grep(/^Tokenize$/,@{$supported_actions{'CC'}});
###
- # check for banned credit card/ACH
- ###
-
- my $ban = FS::banned_pay->ban_search(
- 'payby' => $bop_method2payby{'CC'},
- 'payinfo' => $options{payinfo},
- );
- return "Banned credit card" if $ban && $ban->bantype ne 'warn';
-
- ###
# massage data
###
# massage data
###
@@
-2413,8
+2398,9
@@
sub token_check {
my $cache = {}; #cache for module info
my $cache = {}; #cache for module info
- # look for a gateway that can't tokenize
+ # look for a gateway that can
and can
't tokenize
my $require_tokenized = 1;
my $require_tokenized = 1;
+ my $someone_tokenizing = 0;
foreach my $gateway (
FS::payment_gateway->all_gateways(
'method' => 'CC',
foreach my $gateway (
FS::payment_gateway->all_gateways(
'method' => 'CC',
@@
-2426,18
+2412,26
@@
sub token_check {
# no default gateway, no promise to tokenize
# can just load other gateways as-needeed below
$require_tokenized = 0;
# no default gateway, no promise to tokenize
# can just load other gateways as-needeed below
$require_tokenized = 0;
- last;
+ last if $someone_tokenizing;
+ next;
}
my $info = _token_check_gateway_info($cache,$gateway);
die $info unless ref($info); # means it's an error message
}
my $info = _token_check_gateway_info($cache,$gateway);
die $info unless ref($info); # means it's an error message
- unless ($info->{'can_tokenize'}) {
+ if ($info->{'can_tokenize'}) {
+ $someone_tokenizing = 1;
+ } else {
# a configured gateway can't tokenize, that's all we need to know right now
# can just load other gateways as-needeed below
$require_tokenized = 0;
# a configured gateway can't tokenize, that's all we need to know right now
# can just load other gateways as-needeed below
$require_tokenized = 0;
- last;
+ last
if $someone_tokenizing
;
}
}
}
}
+ unless ($someone_tokenizing) { #no need to check, if no one can tokenize
+ warn "no gateways tokenize\n" if $debug;
+ return;
+ }
+
warn "REQUIRE TOKENIZED" if $require_tokenized && $debug;
# upgrade does not call this with autocommit turned on,
warn "REQUIRE TOKENIZED" if $require_tokenized && $debug;
# upgrade does not call this with autocommit turned on,