Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Recommended Posts

Posted

Has anyone gotten these two contributions to play nice together? I'm really stumped. When I edit catalog/checkout_process.php according to directions, the only orders_id that is returned to the database is "0". If I do more than one order, then the subsequent orders get an error because they are trying to write the same orders_id value ("0") to the "orders" table.

 

Looking at the files for IPN, it appears as though I also need to work it out so that paypal_ipn_id is changed as well, but I don't know where to do it.

 

Can anyone point me in the right direction?

 

Thanks,

 

Jason

Posted

Gregbaboolal sent me this code to replace/edit catalog/includes/modules/payment/paypal/checkout_process.php. It may help folks who need to get random order numbers and PayPal IPN working together. Changes to the original file are identified by //Begin random order and //End random order. There are only three sections that need to be changed, so it will probably be good to do them by cut-and-paste.

 

<?php
/*
?$Id: checkout_process.php,v 2.2 2004/04/24 devosc Exp $

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

?DevosC, Developing open source Code
?http://www.devosc.com

?Copyright (c) 2003 osCommerce
?Copyright (c) 2004 DevosC.com

?Released under the GNU General Public License
*/

?global $payment_modules, $shipping_modules, $order, $currencies, $cart, $customer_id,
? ? ? ? $sendto, $billto, $shipping, $payment, $language, $currency, $languages_id;

?require(DIR_WS_INCLUDES . 'modules/payment/paypal/database_tables.php');
?//require(DIR_WS_INCLUDES . 'modules/payment/paypal/functions.php');

?require(DIR_WS_CLASSES . 'order_total.php');
?$order_total_modules = new order_total;

?$order_totals = $order_total_modules->process();

//Begin random order
?$random_addition = rand(7,15);

?$last_order_id = tep_db_query("select orders_id from " . TABLE_ORDERS . " o order by o.orders_id desc limit 1");

?$old_order_id = tep_db_fetch_array($last_order_id);

?$ordernum = ($old_order_id['orders_id'] + $random_addition);
//End random order

//Begin random order
// ?$sql_data_array = array('customers_id' => $customer_id,
? ?$sql_data_array = array('orders_id' => $ordernum,
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_id' => $customer_id,
//End random order
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_company' => $order->customer['company'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_street_address' => $order->customer['street_address'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_suburb' => $order->customer['suburb'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_city' => $order->customer['city'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_postcode' => $order->customer['postcode'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_state' => $order->customer['state'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_country' => $order->customer['country']['title'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_telephone' => $order->customer['telephone'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_email_address' => $order->customer['email_address'],
? ? ? ? ? ? ? ? ? ? ? ? ?'customers_address_format_id' => $order->customer['format_id'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_company' => $order->delivery['company'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_street_address' => $order->delivery['street_address'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_suburb' => $order->delivery['suburb'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_city' => $order->delivery['city'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_postcode' => $order->delivery['postcode'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_state' => $order->delivery['state'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_country' => $order->delivery['country']['title'],
? ? ? ? ? ? ? ? ? ? ? ? ?'delivery_address_format_id' => $order->delivery['format_id'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_company' => $order->billing['company'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_street_address' => $order->billing['street_address'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_suburb' => $order->billing['suburb'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_city' => $order->billing['city'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_postcode' => $order->billing['postcode'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_state' => $order->billing['state'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_country' => $order->billing['country']['title'],
? ? ? ? ? ? ? ? ? ? ? ? ?'billing_address_format_id' => $order->billing['format_id'],
? ? ? ? ? ? ? ? ? ? ? ? ?'payment_method' => $order->info['payment_method'],
? ? ? ? ? ? ? ? ? ? ? ? ?'cc_type' => $order->info['cc_type'],
? ? ? ? ? ? ? ? ? ? ? ? ?'cc_owner' => $order->info['cc_owner'],
? ? ? ? ? ? ? ? ? ? ? ? ?'cc_number' => $order->info['cc_number'],
? ? ? ? ? ? ? ? ? ? ? ? ?'cc_expires' => $order->info['cc_expires'],
? ? ? ? ? ? ? ? ? ? ? ? ?'orders_status' => MODULE_PAYMENT_PAYPAL_PROCESSING_STATUS_ID,
? ? ? ? ? ? ? ? ? ? ? ? ?'currency' => $order->info['currency'],
? ? ? ? ? ? ? ? ? ? ? ? ?'currency_value' => $order->info['currency_value']);
? $order_exists = false;
? if(tep_session_is_registered('paypal_order_id')) {
? ? $orders_session_query = tep_db_query("select os.orders_id as orders_id, o.paypal_ipn_id from " . TABLE_ORDERS_SESSION_INFO . " os left join " . TABLE_ORDERS . " o on os.orders_id = o.orders_id where o.orders_id ='" . $paypal_order_id . "'");
? ? $orders_check = tep_db_fetch_array($orders_session_query);
? ? //Now check to see whether order session info exists AND that this order does not currently
? ? //have an IPN.
? ? if ($orders_check['orders_id'] > 0 && ?$orders_check['paypal_ipn_id'] == '0' ) {
? ? ? $order_exists = true;
? ? }
? }

? if($order_exists) {
? ?$sql_data_array['last_modified'] = 'now()';
? ?tep_db_perform(TABLE_ORDERS, $sql_data_array, 'update', "orders_id = '" . $paypal_order_id . "'");
? } else {
? ?$sql_data_array['date_purchased'] = 'now()';
? ?tep_db_perform(TABLE_ORDERS, $sql_data_array);
? ?global $paypal_order_id;
//Begin random order
? ?//$paypal_order_id = tep_db_insert_id();
? ?$paypal_order_id = $ordernum;
//End random order
? }

if($order_exists) {
? ?tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . $paypal_order_id . "'");
?}
?for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {
? ?$sql_data_array = array('orders_id' => $paypal_order_id,
? ? ? ? ? ? ? ? ? ? ? ? ? ?'title' => $order_totals[$i]['title'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'text' => $order_totals[$i]['text'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'value' => $order_totals[$i]['value'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'class' => $order_totals[$i]['code'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'sort_order' => $order_totals[$i]['sort_order']);
? ?tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);
?}

?$sql_data_array = array('orders_status_id' => MODULE_PAYMENT_PAYPAL_PROCESSING_STATUS_ID,
? ? ? ? ? ? ? ? ? ? ? ? ?'date_added' => 'now()',
? ? ? ? ? ? ? ? ? ? ? ? ?'customer_notified' => 0,
? ? ? ? ? ? ? ? ? ? ? ? ?'comments' => $order->info['comments']);

?if($order_exists) {
? ?tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array, 'update', "orders_id = '" . $paypal_order_id . "'");

? ?tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . $paypal_order_id . "'");
? ?tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . $paypal_order_id . "'");
?} else {
? ?$sql_data_array['orders_id'] = $paypal_order_id;
? ?tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array);
?}

?for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
? ?$sql_data_array = array('orders_id' => $paypal_order_id,
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_id' => tep_get_prid($order->products[$i]['id']),
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_model' => $order->products[$i]['model'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_name' => $order->products[$i]['name'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_price' => $order->products[$i]['price'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'final_price' => $order->products[$i]['final_price'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_tax' => $order->products[$i]['tax'],
? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_quantity' => $order->products[$i]['qty']);

? ?tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array);

? ?$order_products_id = tep_db_insert_id();

//------insert customer choosen option to order--------
? ?$attributes_exist = '0';
? ?if (isset($order->products[$i]['attributes'])) {
? ? ?$attributes_exist = '1';
? ? ?for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
? ? ? ?if (DOWNLOAD_ENABLED == 'true') {
? ? ? ? ?$attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?on pa.products_attributes_id=pad.products_attributes_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? where pa.products_id = '" . $order->products[$i]['id'] . "'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and pa.options_id = popt.products_options_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and pa.options_values_id = poval.products_options_values_id
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and popt.language_id = '" . $languages_id . "'
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?and poval.language_id = '" . $languages_id . "'";
? ? ? ? ?$attributes = tep_db_query($attributes_query);
? ? ? ?} else {
? ? ? ? ?$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'");
? ? ? ?}
? ? ? ?$attributes_values = tep_db_fetch_array($attributes);

? ? ? ?$sql_data_array = array('orders_id' => $paypal_order_id,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'orders_products_id' => $order_products_id,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_options_id' => $order->products[$i]['attributes'][$j]['option_id'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_options' => $attributes_values['products_options_name'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_options_values_id' => $order->products[$i]['attributes'][$j]['value_id'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'products_options_values' => $attributes_values['products_options_values_name'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'options_values_price' => $attributes_values['options_values_price'],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'price_prefix' => $attributes_values['price_prefix']);

? ? ? ?tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array);
? ? ?}
? ?}
?}

// store the session info for notification update - gsb
?$sql_data_array = array('sendto' => $sendto,
? ? ? ? ? ? ? ? ? ? ? ? ?'billto' => $billto,
? ? ? ? ? ? ? ? ? ? ? ? ?//'shipping' => serialize($shipping),
? ? ? ? ? ? ? ? ? ? ? ? ?//'payment' => $payment,
? ? ? ? ? ? ? ? ? ? ? ? ?'language' => $language,
? ? ? ? ? ? ? ? ? ? ? ? ?'currency' => $currency,
? ? ? ? ? ? ? ? ? ? ? ? ?'content_type' => $order->content_type);

?if($order_exists) {
? ?tep_db_perform(TABLE_ORDERS_SESSION_INFO, $sql_data_array, 'update', "orders_id = '" . $paypal_order_id . "'");
?} else {
? ?$sql_data_array['orders_id'] = $paypal_order_id;
? ?tep_db_perform(TABLE_ORDERS_SESSION_INFO, $sql_data_array);
? ?tep_session_register('paypal_order_id');
?}
?include(DIR_WS_INCLUDES . 'modules/payment/paypal/processing.tpl.php');
?>

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