From 34c0d2df4fc583073c164fc60653b485a4f4737f Mon Sep 17 00:00:00 2001
From: Ivan Kohler <ivan@freeside.biz>
Date: Thu, 23 Feb 2017 15:18:52 -0800
Subject: [PATCH] fix "Unknown card type" error when using tokenization on v3?
 RT#74750

---
 FS/FS/cust_main.pm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 54f561309..cfe93a96a 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -1968,7 +1968,19 @@ sub check {
     validate($payinfo)
       or return gettext('invalid_card'); # . ": ". $self->payinfo;
 
-    my $cardtype = cardtype($payinfo);
+    my $cardtype = $self->paycardtype;
+    if ( $payinfo =~ /^99\d{14}$/ ) {
+      $self->('is_tokenized', 'Y'); #so we don't try to do it again
+      if ( $self->paymask =~ /^\d+x/ ) {
+        $cardtype = cardtype($self->paymask);
+      } else {
+        #return "paycardtype required ".
+        #       "(can't derive from a token and no paymask w/prefix provided)"
+        #  unless $cardtype;
+      }
+    } else {
+      $cardtype = cardtype($self->payinfo);
+    }
 
     return gettext('unknown_card_type') if $cardtype eq 'Unknown';
 
-- 
2.20.1