commit 5b87547c18fc976097469e9158387c4830d8f743
Author: Ben Dougherty <ben@dhmedia.com.au>
Date:   Wed May 23 14:39:18 2012 +0800

    Diners card fix

diff --git a/modules/payment/includes/commerce_payment.credit_card.inc b/modules/payment/includes/commerce_payment.credit_card.inc
index f453860..96976b6 100644
--- a/modules/payment/includes/commerce_payment.credit_card.inc
+++ b/modules/payment/includes/commerce_payment.credit_card.inc
@@ -540,7 +540,12 @@ function commerce_payment_validate_credit_card_security_code($number, $code) {
   // Check the length based on the type of the credit card.
   switch (substr($number, 0, 1)) {
     case '3':
-      return strlen($code) == 4;
+      if(strlen($number) == 14) {
+    		return strlen($code) == 3;
+    	}
+    	else {
+    		return strlen($code) == 4;
+    	}
 
     case '4':
     case '5':
