Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

Hello all. I'm installing a modification in which I need to insert data into a table based on if the order_status is paid or not. I'm working with checkout_process.php

 

After:

 

// load the after_process function from the payment modules
 $payment_modules->after_process();
 $cart->reset(true);

I have:

 

 


//Begin code for determining if a VBC product has been purchased and handling orders that are paid vs. orders that are to be paid later

// 1.) Get order ID for order.
//$insert_id     This is the orders_id.


// 2.) Get customer's data for entering into the bridge.  Using information that's already on this page.


// 3.) Use order ID to get products assoacited with that order
	// $order->products[$i]['id']	Contains product information for this order.



// 4.) Generate the security token
	//BOF Security token function
	function new_token($length) {
		return substr(_new_token(), 0, $length);
	}

	function _new_token() {
		$rand_bits = '';

		// Linux platform
		$fp = @fopen('/dev/urandom', 'rb');
		if ($fp !== FALSE) {
			$rand_bits .= @fread($fp, 16);
			@fclose($fp);
		}

		// Windows platform
		if (@class_exists('COM')) {
			try {
				$CAPI_Util = new COM('CAPICOM.Utilities.1');
				$rand_bits .= $CAPI_Util->GetRandom(16, 0); // 0 - base64 encoding
			} catch (Exception $ex) {
				// Fail silently; see OWASP 2007 A6
			}
		}

		// If both above fail, fall back to a default method
		if (strlen($rand_bits) < 16) {
			$rand_bits .= substr(session_id(), 0, 8) . rand() . rand();
		}

		return sha1($rand_bits);
	}

	//echo new_token(30);

	$token = new_token(30);
//EOF Security token function


// 5.)
	// a.) Is products_id one of the VBC products? 
	foreach ($order->products as $product) {
		if (in_array($product['id'], array(85, 86, 89, 90, 91, 92, 93, 94, 95))) {		

			if ($order->info['order_status'] == 3) { 
			//If the status is paid...

				// Write necessary info. to table.
				$sql_data_array = array(
						'token' => $token,
						'orders_id' => $insert_id,
						'products_id' => $product['id'],
						'customer_firstname' => $order->customer['firstname'],
						'customer_lastname' => $order->customer['lastname'],
						'customer_email' => $order->customer['email_address'],
						'date_added' => 'now()'
				);
				tep_db_perform('VBC_table', $sql_data_array);	

			} else {

			// The order hasn't been paid for yet... 

				// Write preliminary info. to table.
				$sql_data_array = array(
						// Uncomment if the autoincrement isn't being added  'id' => 'null',
						'token' => '',
						'orders_id' => $insert_id,
						'products_id' => $product['id'],
						'customer_firstname' => $order->customer['firstname'],
						'customer_lastname' => $order->customer['lastname'],
						'customer_email' => $order->customer['email_address'],
						'date_added' => 'now()'
				);
				tep_db_perform('VBC_table', $sql_data_array);
			}

		}

	}		



//End code for determining if a VBC product has been purchased and handling orders that are paid vs. orders that are to be paid later (John)

 

 

Currently, orders that are not yet paid for are having the preliminary data entered into the table and everything is fine. However, when paying by PayPal (with a successful payment), apparently I've done something wrong because I placed an order and an entry was not recorded in the VBC_table. It appears that the check at step 5:

 

			if ($order->info['order_status'] == 3) { 

 

is failing.

 

 

 

Any ideas? Thanks!

Posted

Bump. Anyone with an idea? Please?

 

Hello all. I'm installing a modification in which I need to insert data into a table based on if the order_status is paid or not. I'm working with checkout_process.php

 

After:

 

// load the after_process function from the payment modules
 $payment_modules->after_process();
 $cart->reset(true);

I have:

 

 


//Begin code for determining if a VBC product has been purchased and handling orders that are paid vs. orders that are to be paid later

// 1.) Get order ID for order.
//$insert_id     This is the orders_id.


// 2.) Get customer's data for entering into the bridge.  Using information that's already on this page.


// 3.) Use order ID to get products assoacited with that order
	// $order->products[$i]['id']	Contains product information for this order.



// 4.) Generate the security token
	//BOF Security token function
	function new_token($length) {
		return substr(_new_token(), 0, $length);
	}

	function _new_token() {
		$rand_bits = '';

		// Linux platform
		$fp = @fopen('/dev/urandom', 'rb');
		if ($fp !== FALSE) {
			$rand_bits .= @fread($fp, 16);
			@fclose($fp);
		}

		// Windows platform
		if (@class_exists('COM')) {
			try {
				$CAPI_Util = new COM('CAPICOM.Utilities.1');
				$rand_bits .= $CAPI_Util->GetRandom(16, 0); // 0 - base64 encoding
			} catch (Exception $ex) {
				// Fail silently; see OWASP 2007 A6
			}
		}

		// If both above fail, fall back to a default method
		if (strlen($rand_bits) < 16) {
			$rand_bits .= substr(session_id(), 0, 8) . rand() . rand();
		}

		return sha1($rand_bits);
	}

	//echo new_token(30);

	$token = new_token(30);
//EOF Security token function


// 5.)
	// a.) Is products_id one of the VBC products? 
	foreach ($order->products as $product) {
		if (in_array($product['id'], array(85, 86, 89, 90, 91, 92, 93, 94, 95))) {		

			if ($order->info['order_status'] == 3) { 
			//If the status is paid...

				// Write necessary info. to table.
				$sql_data_array = array(
						'token' => $token,
						'orders_id' => $insert_id,
						'products_id' => $product['id'],
						'customer_firstname' => $order->customer['firstname'],
						'customer_lastname' => $order->customer['lastname'],
						'customer_email' => $order->customer['email_address'],
						'date_added' => 'now()'
				);
				tep_db_perform('VBC_table', $sql_data_array);	

			} else {

			// The order hasn't been paid for yet... 

				// Write preliminary info. to table.
				$sql_data_array = array(
						// Uncomment if the autoincrement isn't being added  'id' => 'null',
						'token' => '',
						'orders_id' => $insert_id,
						'products_id' => $product['id'],
						'customer_firstname' => $order->customer['firstname'],
						'customer_lastname' => $order->customer['lastname'],
						'customer_email' => $order->customer['email_address'],
						'date_added' => 'now()'
				);
				tep_db_perform('VBC_table', $sql_data_array);
			}

		}

	}		



//End code for determining if a VBC product has been purchased and handling orders that are paid vs. orders that are to be paid later (John)

 

 

Currently, orders that are not yet paid for are having the preliminary data entered into the table and everything is fine. However, when paying by PayPal (with a successful payment), apparently I've done something wrong because I placed an order and an entry was not recorded in the VBC_table. It appears that the check at step 5:

 

			if ($order->info['order_status'] == 3) { 

 

is failing.

 

 

 

Any ideas? Thanks!

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...