[freeside-commits] branch FREESIDE_3_BRANCH updated. 5744a93e395c6d7b4203795ca2aec2527b225ee5

Ivan ivan at 420.am
Wed Feb 1 09:08:29 PST 2017


The branch, FREESIDE_3_BRANCH has been updated
       via  5744a93e395c6d7b4203795ca2aec2527b225ee5 (commit)
      from  3ccc9eb65b9c353db60191e658099cd79686692a (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 5744a93e395c6d7b4203795ca2aec2527b225ee5
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Wed Feb 1 09:08:28 2017 -0800

    deal with the data we have as best we can without erroring out, RT#71513

diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm
index b30ea35..6023aa2 100644
--- a/FS/FS/payinfo_Mixin.pm
+++ b/FS/FS/payinfo_Mixin.pm
@@ -199,11 +199,21 @@ sub payinfo_check {
 
   if ( $self->payby eq 'CARD' && ! $self->is_encrypted($self->payinfo) ) {
 
-    if ( $self->payinfo =~ /^99\d{14}$/ && ! $self->paycardtype ) {
-      return "paycardtype required (cannot be derived from a token)";
-    } else {
-      $self->set('paycardtype', cardtype($self->payinfo));
-    }
+    unless ( $self->paycardtype ) {
+
+      if ( $self->payinfo =~ /^99\d{14}$/ ) {
+        if ( $self->paymask =~ /^\d+x/ ) {
+          $self->set('paycardtype', cardtype($self->paymask));
+        } else {
+          $self->set('paycardtype', '');
+         # return "paycardtype required ".
+         #        "(can't derive from a token and no paymask w/prefix provided)";
+        }
+      } else {
+        $self->set('paycardtype', cardtype($self->payinfo));
+      }
+
+     }
 
     if ( $ignore_masked_payinfo and $self->mask_payinfo eq $self->payinfo ) {
       # allow it
@@ -221,13 +231,22 @@ sub payinfo_check {
         $self->payinfo('N/A'); #???
       }
     }
+
   } else {
-    if ( $self->payby eq 'CARD' and $self->paymask ) {
-      # if we can't decrypt the card, at least detect the cardtype
-      $self->set('paycardtype', cardtype($self->paymask));
-    } else {
-      $self->set('paycardtype', '');
+
+    unless ( $self->paycardtype ) {
+
+      if ( $self->payby eq 'CARD' && $self->paymask =~ /^\d+x/  ) {
+        # if we can't decrypt the card, at least detect the cardtype
+        $self->set('paycardtype', cardtype($self->paymask));
+      } else {
+        $self->set('paycardtype', '');
+        # return "paycardtype required ".
+        #        "(can't derive from a token and no paymask w/prefix provided)";
+      }
+
     }
+
     if ( $self->is_encrypted($self->payinfo) ) {
       #something better?  all it would cause is a decryption error anyway?
       my $error = $self->ut_anything('payinfo');

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/payinfo_Mixin.pm |   39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)




More information about the freeside-commits mailing list