diff options
| author | Jonathan Prykop <jonathan@freeside.biz> | 2016-12-28 13:56:31 -0600 | 
|---|---|---|
| committer | Jonathan Prykop <jonathan@freeside.biz> | 2016-12-28 13:56:31 -0600 | 
| commit | df92ab34778ae931caeaf87daa9c763e75feeede (patch) | |
| tree | ba96280b2baae298fe6d45b95b325c8bef6d52b2 | |
| parent | 9838d0a7fb22277caaa19f7e00a59ec6905aca45 (diff) | |
71513: Card tokenization [undid refund always sending token, skip token_check if nothing is tokenizable]
| -rw-r--r-- | FS/FS/cust_main/Billing_Realtime.pm | 23 | 
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 59792e70f..5d376e6c2 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'); @@ -2414,8 +2408,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', @@ -2427,18 +2422,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, | 
