summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-12-28 13:56:31 -0600
committerJonathan Prykop <jonathan@freeside.biz>2016-12-28 14:04:01 -0600
commitb6151684a227ad8018de4fdc661fcb61d00675a7 (patch)
tree8f43767c9608bd59c5cd8f2b4e3ed9e562611d7e
parent130db7caee3817758dcf3906d2e975e4eff0e466 (diff)
71513: Card tokenization [undid refund always sending token, skip token_check if nothing is tokenizable]FREESIDE_4_BRANCH_71513
-rw-r--r--FS/FS/cust_main/Billing_Realtime.pm23
1 files changed, 13 insertions, 10 deletions
diff --git a/FS/FS/cust_main/Billing_Realtime.pm b/FS/FS/cust_main/Billing_Realtime.pm
index 28ed3c4ec..e636e8891 100644
--- a/FS/FS/cust_main/Billing_Realtime.pm
+++ b/FS/FS/cust_main/Billing_Realtime.pm
@@ -1587,12 +1587,6 @@ sub realtime_refund_bop {
$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');
@@ -2413,8 +2407,9 @@ sub token_check {
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 $someone_tokenizing = 0;
foreach my $gateway (
FS::payment_gateway->all_gateways(
'method' => 'CC',
@@ -2426,18 +2421,26 @@ sub token_check {
# 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
- 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;
- 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,