Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

CVV2--Please HELP


shamrock

Recommended Posts

Hello...this is my first post and I've probably put it in the wrong category, please forgive me!

 

I just installed a mod for CVV2 and followed the directions (or so I thought). Works fine when submitting an order. The problem comes when I log into Admin panel and look at the Order-----CVV2 value is blank:

 

Payment Method: Credit Card

Credit Card Type: American Express

Credit Card Owner: Web Master

Credit Card Number: XXXXXXXXXXX0005

CVV2:

Credit Card Expires: 0110

 

I log into phpmyadmin and I can see the CVV2 field and it is populated. Why will it not show up on the orders page of the admin panel? I'm setting this up for a client and I really would like for this feature to work as I don't want anyone poking around the live database.

 

Guess I should also mention that I'm getting this error whenever I first pull up my order page thru admin panel: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in admin/includes/functions/database.php on line 99. This is weird because I did not alter any files in the functions folder....

 

Oh well, any help would be GREATLY appreciated.

 

Thanks.

Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

I'm having the same problem with the CVV number not showing up in admin. I installed the contrib that said it was supposed to fix this problem but it didn't. Anybody have this thing actually working?

Edited by scottsw
Link to comment
Share on other sites

Thanks to rabbitseffort for pointing the problem out. Here is what I had to add to get it to work:

 

In admin/includes/classes/order.php

 

 

AFTER:

 

'cc_number' => $order['cc_number'],

 

ADD:

 

'cc_cvv2' => $order['cc_cvv2'],

 

They left that step out.

 

Thanks again!

Link to comment
Share on other sites

Thanks to rabbitseffort for pointing the problem out. Here is what I had to add to get it to work:

 

In admin/includes/classes/order.php

AFTER:

 

'cc_number' => $order['cc_number'],

 

ADD:

 

'cc_cvv2' => $order['cc_cvv2'],

 

They left that step out.

 

Thanks again!

 

 

i tried this, and it is still not working. please help!

Link to comment
Share on other sites

i tried this, and it is still not working. please help!

 

If you are having the issue where it does not show teh CCV field in the admin, it is probably due to you not posting one of the files in the correct place. THat was our problem, we did everything right but one of the files was not replaced with the ones included in the mod

 

DPF

Daniel

IdeaTek

Link to comment
Share on other sites

If you are having the issue where it does not show teh CCV field in the admin, it is probably due to you not posting one of the files in the correct place. THat was our problem, we did everything right but one of the files was not replaced with the ones included in the mod

 

DPF

 

 

still not working... i went trhough and replaced every file again and made sure everything was in the right place, but it still isnt showing up.

Link to comment
Share on other sites

get this version, 25 Sep 2005

 

but there is an error at includes/modules/payment/cc.php

i fixed and add a lot of stuffs to it, so use this one instead for cc.php:

 

<?php
/*
 $Id: cc.php,v 1.53 2003/02/04 09:55:01 project3000 Exp $

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

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/

 class cc {
var $code, $title, $description, $enabled;

// class constructor
function cc() {
  global $order;

  $this->code = 'cc';
  $this->title = MODULE_PAYMENT_CC_TEXT_TITLE;
  $this->description = MODULE_PAYMENT_CC_TEXT_DESCRIPTION;
  $this->sort_order = MODULE_PAYMENT_CC_SORT_ORDER;
  $this->enabled = ((MODULE_PAYMENT_CC_STATUS == 'True') ? true : false);

  if ((int)MODULE_PAYMENT_CC_ORDER_STATUS_ID > 0) {
	$this->order_status = MODULE_PAYMENT_CC_ORDER_STATUS_ID;
  }

  if (is_object($order)) $this->update_status();
}

// class methods
function update_status() {
  global $order;

  if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_CC_ZONE > 0) ) {
	$check_flag = false;
	$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_CC_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
	while ($check = tep_db_fetch_array($check_query)) {
	  if ($check['zone_id'] < 1) {
		$check_flag = true;
		break;
	  } elseif ($check['zone_id'] == $order->billing['zone_id']) {
		$check_flag = true;
		break;
	  }
	}

	if ($check_flag == false) {
	  $this->enabled = false;
	}
  }
}

function javascript_validation() {
  $js = '  if (payment_value == "' . $this->code . '") {' . "\n" .
		'	var cc_owner = document.checkout_payment.cc_owner.value;' . "\n" .
		'	var cc_number = document.checkout_payment.cc_number.value;' . "\n" .
		'	if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "\n" .
		'	  error_message = error_message + "' . MODULE_PAYMENT_CC_TEXT_JS_CC_OWNER . '";' . "\n" .
		'	  error = 1;' . "\n" .
		'	}' . "\n" .
		'	if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "\n" .
		'	  error_message = error_message + "' . MODULE_PAYMENT_CC_TEXT_JS_CC_NUMBER . '";' . "\n" .
		'	  error = 1;' . "\n" .
		'	}' . "\n" .
		'	var cc_cvv2 = document.checkout_payment.cc_cvv2.value;' . "\n" .
		'	if (cc_cvv2 == "" || cc_cvv2.length < ' . 3 . ') {' . "\n" .
		'	  error_message = error_message + "* The CVV2 number must be at least 3 digits - look on the back of your credit card for 3 or 4 additional numbers.";' . "\n" .
		'	  error = 1;' . "\n" .
		'	}' . "\n" .
		'  }' . "\n";

  return $js;
}
function selection() {
  global $order;

  for ($i=1; $i<13; $i++) {
	$expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));
  }

  $today = getdate(); 
  for ($i=$today['year']; $i < $today['year']+10; $i++) {
	$expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));
  }

  $selection = array('id' => $this->code,
					 'module' => $this->title,
					 'fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
											 'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),
									   array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
											 'field' => tep_draw_input_field('cc_number')),
									   array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_CVV2,
											 'field' => tep_draw_input_field('cc_cvv2','','size="4" maxlength="4"') . '??<small><a href="http://www.xenonwarehouse.com/cvv2.html" target="_new">What is a CVV2 number?</a></small>'),	 								 
									   array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
											 'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . '?' . tep_draw_pull_down_menu('cc_expires_year', $expires_year))));

  return $selection;
}

function pre_confirmation_check() {
  global $HTTP_POST_VARS;

  include(DIR_WS_CLASSES . 'cc_validation.php');

  $cc_validation = new cc_validation();
  $result = $cc_validation->validate($HTTP_POST_VARS['cc_number'], $HTTP_POST_VARS['cc_expires_month'], $HTTP_POST_VARS['cc_expires_year']);

  $error = '';
  switch ($result) {
	case -1:
	  $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));
	  break;
	case -2:
	case -3:
	case -4:
	  $error = TEXT_CCVAL_ERROR_INVALID_DATE;
	  break;
	case false:
	  $error = TEXT_CCVAL_ERROR_INVALID_NUMBER;
	  break;
  }

  if ( ($result == false) || ($result < 1) ) {
	$payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&cc_owner=' . urlencode($HTTP_POST_VARS['cc_owner']) . '&cc_expires_month=' . $HTTP_POST_VARS['cc_expires_month'] . '&cc_expires_year=' . $HTTP_POST_VARS['cc_expires_year'];

	tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));
  }

  $this->cc_card_type = $cc_validation->cc_type;
  $this->cc_card_number = $cc_validation->cc_number;
}

function confirmation() {
  global $HTTP_POST_VARS;

  $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,
						'fields' => array(array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_OWNER,
												'field' => $HTTP_POST_VARS['cc_owner']),
										  array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,
												'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),
										  array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_CVV2,
												'field' => $_POST['cc_cvv2']),
										  array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,
												'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['cc_expires_month'], 1, '20' . $HTTP_POST_VARS['cc_expires_year'])))));

  return $confirmation;
}

function process_button() {
  global $HTTP_POST_VARS;

  $process_button_string = tep_draw_hidden_field('cc_owner', $HTTP_POST_VARS['cc_owner']) .
						   tep_draw_hidden_field('cc_expires', $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year']) .
						   tep_draw_hidden_field('cc_type', $this->cc_card_type) .
						   tep_draw_hidden_field('cc_cvv2', $_POST['cc_cvv2']) .
						   tep_draw_hidden_field('cc_number', $this->cc_card_number);

  return $process_button_string;
}

function before_process() {
  global $HTTP_POST_VARS, $order;

  if ( (defined('MODULE_PAYMENT_CC_EMAIL')) && (tep_validate_email(MODULE_PAYMENT_CC_EMAIL)) ) {
	$len = strlen($HTTP_POST_VARS['cc_number']);

	$this->cc_middle = substr($HTTP_POST_VARS['cc_number'], 4, ($len-8));
	$order->info['cc_number'] = substr($HTTP_POST_VARS['cc_number'], 0, 4) . str_repeat('X', (strlen($HTTP_POST_VARS['cc_number']) - 8)) . substr($HTTP_POST_VARS['cc_number'], -4);
  }
}

function after_process() {
  global $insert_id;

  if ( (defined('MODULE_PAYMENT_CC_EMAIL')) && (tep_validate_email(MODULE_PAYMENT_CC_EMAIL)) ) {
	$message = 'Order #' . $insert_id . "\n\n" . 'Middle: ' . $this->cc_middle . "\n\n";

	tep_mail('', MODULE_PAYMENT_CC_EMAIL, 'Extra Order Info: #' . $insert_id, $message, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
  }
}

function get_error() {
  global $HTTP_GET_VARS;

  $error = array('title' => MODULE_PAYMENT_CC_TEXT_ERROR,
				 'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));

  return $error;
}

function check() {
  if (!isset($this->_check)) {
	$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_CC_STATUS'");
	$this->_check = tep_db_num_rows($check_query);
  }
  return $this->_check;
}

function install() {
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Credit Card Module', 'MODULE_PAYMENT_CC_STATUS', 'True', 'Do you want to accept credit card payments?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Split Credit Card E-Mail Address', 'MODULE_PAYMENT_CC_EMAIL', '', 'If an e-mail address is entered, the middle digits of the credit card number will be sent to the e-mail address (the outside digits are stored in the database with the middle digits censored)', '6', '0', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_CC_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0' , now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_CC_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
  tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Set Order Status', 'MODULE_PAYMENT_CC_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");
}

function remove() {
  tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}

function keys() {
  return array('MODULE_PAYMENT_CC_STATUS', 'MODULE_PAYMENT_CC_EMAIL', 'MODULE_PAYMENT_CC_ZONE', 'MODULE_PAYMENT_CC_ORDER_STATUS_ID', 'MODULE_PAYMENT_CC_SORT_ORDER');
}
 }
?>

 

i've added, What is a CVV2 number? and error message

 

http://www.kolap.com/creditcard/cvv2.html

 

:thumbsup:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...