Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Credit Card Identification Problem....Help


INDY GS

Recommended Posts

Posted

In our webstore, the customer sees the "Diner's Club" when they use a Mastercard and sees "Australian Bank Card" when they use a Discover Card. The visa card is just fine.

 

Can anyone explain why this is happening. The numbers are correct. They run just fine, it is just a visual error when submitting and then looking at the invoice. Why is this happening.

Posted

something wrong with the script, I suggest that you use some other cc processing thing, like site securetrading or similar, because they are much more secure and they don't make any mistakes...

Posted
something wrong with the script, I suggest that you use some other cc processing thing, like site securetrading or similar, because they are much more secure and they don't make any mistakes...

 

 

We are collecting the info from the customer and manually running the transaction thru a terminal. We only operate the store seasonally, and for limited items.

 

Any other suggestions? Thanks!

Posted

Are you using the CC module that comes with osCommerce? if so check your \includes\classes\cc_validation.php file, it should look like this:

 

<?php
/*
 $Id: cc_validation.php,v 1.3 2003/02/12 20:43:41 hpdl Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 class cc_validation {
var $cc_type, $cc_number, $cc_expiry_month, $cc_expiry_year;

function validate($number, $expiry_m, $expiry_y) {
  $this->cc_number = ereg_replace('[^0-9]', '', $number);

  if (ereg('^4[0-9]{12}([0-9]{3})?$', $this->cc_number)) {
	$this->cc_type = 'Visa';
  } elseif (ereg('^5[1-5][0-9]{14}$', $this->cc_number)) {
	$this->cc_type = 'Master Card';
  } elseif (ereg('^3[47][0-9]{13}$', $this->cc_number)) {
	$this->cc_type = 'American Express';
  } elseif (ereg('^3(0[0-5]|[68][0-9])[0-9]{11}$', $this->cc_number)) {
	$this->cc_type = 'Diners Club';
  } elseif (ereg('^6011[0-9]{12}$', $this->cc_number)) {
	$this->cc_type = 'Discover';
  } elseif (ereg('^(3[0-9]{4}|2131|1800)[0-9]{11}$', $this->cc_number)) {
	$this->cc_type = 'JCB';
  } elseif (ereg('^5610[0-9]{12}$', $this->cc_number)) { 
	$this->cc_type = 'Australian BankCard';
  } else {
	return -1;
  }

  if (is_numeric($expiry_m) && ($expiry_m > 0) && ($expiry_m < 13)) {
	$this->cc_expiry_month = $expiry_m;
  } else {
	return -2;
  }

  $current_year = date('Y');
  $expiry_y = substr($current_year, 0, 2) . $expiry_y;
  if (is_numeric($expiry_y) && ($expiry_y >= $current_year) && ($expiry_y <= ($current_year + 10))) {
	$this->cc_expiry_year = $expiry_y;
  } else {
	return -3;
  }

  if ($expiry_y == $current_year) {
	if ($expiry_m < date('n')) {
	  return -4;
	}
  }

  return $this->is_valid();
}

function is_valid() {
  $cardNumber = strrev($this->cc_number);
  $numSum = 0;

  for ($i=0; $i<strlen($cardNumber); $i++) {
	$currentNum = substr($cardNumber, $i, 1);

// Double every second digit
	if ($i % 2 == 1) {
	  $currentNum *= 2;
	}

// Add digits of 2-digit numbers together
	if ($currentNum > 9) {
	  $firstNum = $currentNum % 10;
	  $secondNum = ($currentNum - $firstNum) / 10;
	  $currentNum = $firstNum + $secondNum;
	}

	$numSum += $currentNum;
  }

// If the total has no remainder it's OK
  return ($numSum % 10 == 0);
}
 }
?>

Installed Contributions: CCGV, Close Popup, Dynamic Meta Tags, Easy Populate, Froogle Data Feeder, Google Position, Infobox Header Entire Row, Live Support for OSC, PayPal Seal with CC images, Report_m Sales, Shop by Price Revised, SQL Updater, Who's Online Enhancement, Footer, GNA EP Assistant and still going.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...