Jump to content

spib

Members
  • Content count

    44
  • Joined

  • Last visited

1 Follower

About spib

  • Birthday 12/30/1977

Profile Information

  1. spib

    [Contribution]Paypal IPN - Devosc

    Hi, I'm using v1.7 and I have a problem whereby the customer isn't being charged shipping. The shipping fee is shown on my web site, and on the PayPal 'Confirm Your Payment' screen but the customer is not charged the shipping free. Any ideas?
  2. Hey Joshua, Haven't got a clue - don't use STS templates myself and the piece of code you posted isn't related to the fix I posted above. Parse error usually means you've got your brackets in the wrong place or something. Check the lines above and below for the correct number of brackets etc.
  3. You haven't installed it correctly then. You should have made this change as explained in the Readme.txt inside the contribution ########## CATALOG/CHECKOUT_CONFIRMATION.PHP ########## Locate the following code in catalog/checkout_confirmation.php - (unmodified version of file - Line#238) <?php if (is_array($payment_modules->modules)) { if ($confirmation = $payment_modules->confirmation()) { Replace it with this... <?php if (is_array($payment_modules->modules)) { if ($confirmation = $payment_modules->confirmation()) { $payment_info = $confirmation['title']; if (!tep_session_is_registered('payment_info')) tep_session_register('payment_info'); ########## END ###
  4. Found another bug :) If you place an order which has payment infomation (such as with a cheque/money order) and then place another order afterwards which has no payment info (such as a PayPal order) you will find that the PayPal order will pick up the payment info from the previous order. You can check this by viewing the 'Order Printable' for the PayPal order - it will show 'Your order will not ship until we receive payment.' This is caused because the payment_info for the order is stored in a global variable which is not cleared correctly between each order. To fix it, in checkout_confirmation.php change (around line 238) <?php if (is_array($payment_modules->modules)) { if ($confirmation = $payment_modules->confirmation()) { $payment_info = $confirmation['title']; if (!tep_session_is_registered('payment_info')) tep_session_register('payment_info'); to if (is_array($payment_modules->modules)) { if (tep_session_is_registered('payment_info')) tep_session_unregister('payment_info'); if ($confirmation = $payment_modules->confirmation()) { $payment_info = $confirmation['title']; tep_session_register('payment_info'); Cheers
  5. If anyone is still experiencing this error I found that this happens if the order_id hasn't been passed to checkout_sucess.php as a parameter. This happens for me on all PayPal payments. The fix is to change the link to the Print Order button code in checkout_sucess.php so that it changes from <td align="right" class="main"><?php echo '<a href="javascript:popupWindow(\'' . tep_href_link(FILENAME_ORDERS_PRINTABLE, tep_get_all_params(), 'SSL') . '\')">' . tep_image_button('button_print_order.gif', IMAGE_BUTTON_PRINT_ORDER) . '</a>'; ?></td> to <td align="right" class="main"><?php echo '<a href="javascript:popupWindow(\'' . tep_href_link(FILENAME_ORDERS_PRINTABLE, 'order_id=' . $orders['orders_id'], 'SSL') . '\')">' . tep_image_button('button_print_order.gif', IMAGE_BUTTON_PRINT_ORDER) . '</a>'; ?></td> Cheers
  6. spib

    PayPal_Shopping_Cart_IPN

    Greg, I finally figured out that although curl is installed, it doesn't seem to be working correctly. So, I have prevented catalog/include/modules/payment/paypal/ipn.php from trying the curl method and that seems to have got everything going. Thanks for all your help, this is an excellent contribution! James
  7. spib

    PayPal_Shopping_Cart_IPN

    Greg, thanks for the reply. I figured curl wasn't working so I tried the following code instead. echo "Starting Transaction...<BR>"; $header = ''; $paypal_response = ''; $_response_string = 'cmd=_notify-validate'; $domain = "www.paypal.com"; $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: ".strlen($_response_string)."\r\n\r\n"; $socket = 'ssl://'; $port = '443'; $fp = @fsockopen ($socket.$domain,$port, $errno, $errstr, 30); if(!$fp) { $socket = 'tcp://'; $port = '80'; $fp = @fsockopen ($socket.$domain,$port, $errno, $errstr, 30); } if(!$fp) { $fp = @fopen('https://'.$domain.'/cgi-bin/webscr?'.$_response_string); $paypal_response = @fgets($fp, 1024); @fclose($fp); if (!$paypal_response) { $paypal_http_response = @file('http://'.$domain.'/cgi-bin/webscr?'.$_response_string); $paypal_response = @$paypal_http_response[0]; } else { @fputs($fp, $header . $_response_string); while (!feof($fp)) { $paypal_response .= @fgets($fp, 1024); } @fclose($fp); } } echo "Response String - " . $_response_string . "<BR>"; echo "PayPal Response - " . $paypal_response . "<BR>"; echo "<BR>Transaction Complete<BR>"; The output I get is Starting Transaction... Response String - cmd=_notify-validate PayPal Response - Transaction Complete I figure there's something wrong my my server as it doesn't seem to be able to connect at all. Can you confirm that the above code is valid? Also, I think there's a minor bug in the authenticate() method. There is a line towards the end which says fclose($log) when it should say fclose($fp);
  8. spib

    PayPal_Shopping_Cart_IPN

    Upon further inspection, it looks like the ipn->authenticate() method is causing the problems. I wrote a simple page with only the curl code in it and that didn't work either. The code for that is below. $paypal_response = ''; $_response_string = 'cmd=_notify-validate'; $ch = @curl_init(); @curl_setopt($ch, CURLOPT_URL, "https://www.paypal.com/cgi-bin/webscr"); @curl_setopt($ch, CURLOPT_POST, 1); @curl_setopt($ch, CURLOPT_POSTFIELDS, $_response_string); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); @curl_setopt($ch, CURLOPT_HEADER, 0); @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); @curl_setopt($ch, CURLOPT_TIMEOUT, 60); $paypal_response = @curl_exec($ch); @curl_close($ch); echo $paypal_response; My curl info from phpinfo() CURL support enabled CURL Information libcurl/7.10.5 OpenSSL/0.9.6b zlib/1.1.4
  9. spib

    PayPal_Shopping_Cart_IPN

    Thanks for the prompt reply :) As far as I can see, the only difference between the stock checkout_process.php and mine is that I have modified it to add a second address line. I made the appropriate changes in the paypal/* pages. I also tried the test you suggested. When I tried it I got a 'Page Cannot Be Displayed' error. I'm not convinced that the information I entered into the form was correct. Here's the debug email for it ------------------------------------------------------ PayPal ORIGINAL POST ------------------------------------------------------ business=paypal@xxxx.co.uk receiver_email=paypal@xxxx.co.uk receiver_id=paypal@xxxx.co.uk paypal_address_id=paypal@xxxx.co.uk custom=12 txn_type=cart txn_id=0FR37403YM0784849 payment_type=instant pending_reason=echeck mc_currency=USD mc_gross=0.01 mc_fee=0.01 payment_gross=0.01 payment_fee=0.01 payment_status=Completed num_cart_items=1 item_name=Hewlett Packard LaserJet 1100Xi item_number=HPLJ1100XI quantity=1 tax=0.00 payer_id= payment_date=13:13:57 Dec 29, 2003 PST first_name= last_name= address_owner=1 payer_status=unverified address_name= address_status=confirmed address_street= address_zip= address_city= address_state= address_country=US payer_email= memo= verify_sign=AW8SkcPa3mwZiYJL0zQRQs-RtU1tAqvna2-iADXH6fjFpqQeug0YK3tD ebay_address_id= notify_version=1.5 submit=submit transaction Obviously something is wrong with the ipn.php file. Any clues on how to debug it? My checkout_process.php follows <?php /* $Id: checkout_process.php,v 1.128 2003/05/28 18:00:29 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ include('includes/application_top.php'); // if the customer is not logged on, redirect them to the login page if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT)); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } if (!tep_session_is_registered('sendto')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } if ( (tep_not_null(MODULE_PAYMENT_INSTALLED)) && (!tep_session_is_registered('payment')) ) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } // avoid hack attempts during the checkout procedure by checking the internal cartID if (isset($cart->cartID) && tep_session_is_registered('cartID')) { if ($cart->cartID != $cartID) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } } include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS); // load selected payment module require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment($payment); // load the selected shipping module require(DIR_WS_CLASSES . 'shipping.php'); $shipping_modules = new shipping($shipping); require(DIR_WS_CLASSES . 'order.php'); $order = new order; // load the before_process function from the payment modules $payment_modules->before_process(); require(DIR_WS_CLASSES . 'order_total.php'); $order_total_modules = new order_total; $order_totals = $order_total_modules->process(); $sql_data_array = array('customers_id' => $customer_id, 'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'], 'customers_company' => $order->customer['company'], 'customers_street_address' => $order->customer['street_address'], // Second Address Field mod: 'customers_street_address_2' => $order->customer['street_address_2'], // :Second Address Field mod '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'], // Second Address Field mod: 'delivery_street_address_2' => $order->delivery['street_address_2'], // :Second Address Field mod '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'], // Second Address Field mod: 'billing_street_address_2' => $order->billing['street_address_2'], // :Second Address Field mod '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'], 'date_purchased' => 'now()', 'orders_status' => $order->info['order_status'], 'currency' => $order->info['currency'], 'currency_value' => $order->info['currency_value']); tep_db_perform(TABLE_ORDERS, $sql_data_array); $insert_id = tep_db_insert_id(); for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { $sql_data_array = array('orders_id' => $insert_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); } $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0'; $sql_data_array = array('orders_id' => $insert_id, 'orders_status_id' => $order->info['order_status'], 'date_added' => 'now()', 'customer_notified' => $customer_notification, 'comments' => $order->info['comments']); tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); // initialized for the email confirmation $products_ordered = ''; $subtotal = 0; $total_tax = 0; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { // Stock Update - Joao Correia if (STOCK_LIMITED == 'true') { if (DOWNLOAD_ENABLED == 'true') { $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa ON p.products_id=pa.products_id LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad ON pa.products_attributes_id=pad.products_attributes_id WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"; // Will work with only one option for downloadable products // otherwise, we have to build the query dynamically with a loop $products_attributes = $order->products[$i]['attributes']; if (is_array($products_attributes)) { $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'"; } $stock_query = tep_db_query($stock_query_raw); } else { $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } if (tep_db_num_rows($stock_query) > 0) { $stock_values = tep_db_fetch_array($stock_query); // do not decrement quantities if products_attributes_filename exists if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) { $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty']; } else { $stock_left = $stock_values['products_quantity']; } tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) { tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } } } // Update products_ordered (for bestsellers list) tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); $sql_data_array = array('orders_id' => $insert_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'; $products_ordered_attributes = ''; 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' => $insert_id, 'orders_products_id' => $order_products_id, 'products_options' => $attributes_values['products_options_name'], '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); if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) { $sql_data_array = array('orders_id' => $insert_id, 'orders_products_id' => $order_products_id, 'orders_products_filename' => $attributes_values['products_attributes_filename'], 'download_maxdays' => $attributes_values['products_attributes_maxdays'], 'download_count' => $attributes_values['products_attributes_maxcount']); tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array); } $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name']; } } //------insert customer choosen option eof ---- $total_weight += ($order->products[$i]['qty'] * $order->products[$i]['weight']); $total_tax += tep_calculate_tax($total_products_price, $products_tax) * $order->products[$i]['qty']; $total_cost += $total_products_price; $products_ordered .= $order->products[$i]['qty'] . ' x ' . $order->products[$i]['name'] . ' (' . $order->products[$i]['model'] . ') = ' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . $products_ordered_attributes . "\n"; } // lets start with the email confirmation $email_order = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $insert_id . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $insert_id, 'SSL', false) . "\n" . EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n"; if ($order->info['comments']) { $email_order .= tep_db_output($order->info['comments']) . "\n\n"; } $email_order .= EMAIL_TEXT_PRODUCTS . "\n" . EMAIL_SEPARATOR . "\n" . $products_ordered . EMAIL_SEPARATOR . "\n"; for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { $email_order .= strip_tags($order_totals[$i]['title']) . ' ' . strip_tags($order_totals[$i]['text']) . "\n"; } if ($order->content_type != 'virtual') { $email_order .= "\n" . EMAIL_TEXT_DELIVERY_ADDRESS . "\n" . EMAIL_SEPARATOR . "\n" . tep_address_label($customer_id, $sendto, 0, '', "\n") . "\n"; } $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" . EMAIL_SEPARATOR . "\n" . tep_address_label($customer_id, $billto, 0, '', "\n") . "\n\n"; if (is_object($$payment)) { $email_order .= EMAIL_TEXT_PAYMENT_METHOD . "\n" . EMAIL_SEPARATOR . "\n"; $payment_class = $$payment; $email_order .= $payment_class->title . "\n\n"; if ($payment_class->email_footer) { $email_order .= $payment_class->email_footer . "\n\n"; } } tep_mail($order->customer['firstname'] . ' ' . $order->customer['lastname'], $order->customer['email_address'], EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); // send emails to other people if (SEND_EXTRA_ORDER_EMAILS_TO != '') { tep_mail('', SEND_EXTRA_ORDER_EMAILS_TO, EMAIL_TEXT_SUBJECT, $email_order, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS); } // load the after_process function from the payment modules $payment_modules->after_process(); $cart->reset(true); // unregister session variables used during checkout tep_session_unregister('sendto'); tep_session_unregister('billto'); tep_session_unregister('shipping'); tep_session_unregister('payment'); tep_session_unregister('comments'); tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'SSL')); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  10. spib

    PayPal_Shopping_Cart_IPN

    Hi Greg, I'm having real problems getting this working. I'm using a modified 2.2MS2 installation with Paypal IPN 2.0. IPN is enabled at paypal as is autoreturn. The user can checkout no problem. They are auto-returned to my site correctly and the checkout_success.php page shows the correct details for their order. However, the order remains in state 'Pending Payment'. The only emails I receive are one from the buyer (via paypal) to say the payment was made. I also receive 3 or so identical debug emails like this ------------------------------------------------------ PayPal ORIGINAL POST ------------------------------------------------------ txn_type=cart payment_date=03:42:22 Apr 05, 2004 PDT last_name=Spibey payment_gross= mc_currency=GBP business=paypal@xxxx.co.uk payment_type=instant num_cart_items=1 payer_status=verified verify_sign=AsXE9E09mkfnZJv1zekutIasjwXLAK91ajMMbzg-q68z6yZeAICkF8Bi payer_email=xxxxxx@hotmail.com tax=0.00 txn_id=89U5897588871734S first_name=James receiver_email=paypal@xxxx.co.uk payer_id=EERK6KN4JY6FY receiver_id=UJ2NKM8MRJRBE payment_status=Completed payment_fee= mc_fee=0.01 mc_gross=0.01 item_name1=Red XXL custom=11 item_number1= notify_version=1.6 quantity1=1 tax1=0.00 ------------------------------------------------------ PayPal Reconstructed Post ------------------------------------------------------ cmd=_notify-validate txn_type=cart payment_date=03%3A42%3A22+Apr+05%2C+2004+PDT last_name=Spibey payment_gross= mc_currency=GBP business=paypal%40xxx.co.uk payment_type=instant num_cart_items=1 payer_status=verified verify_sign=AsXE9E09mkfnZJv1zekutIasjwXLAK91ajMMbzg-q68z6yZeAICkF8Bi payer_email=xxxxxx%40hotmail.com tax=0.00 txn_id=89U5897588871734S first_name=James receiver_email=paypal%40xxxx.co.uk payer_id=EERK6KN4JY6FY receiver_id=UJ2NKM8MRJRBE payment_status=Completed payment_fee= mc_fee=0.01 mc_gross=0.01 item_name1=Red+XXL custom=11 item_number1= notify_version=1.6 quantity1=1 tax1=0.00 I also sometimes receive an email which says An unknown POST from 64.4.241.140 was received. Are you running any tests? Do you any suggestions for what could be wrong?
  11. spib

    Master Products - MS2

    BTW, I eventually got this working on my own Basically, because of the layout of the database, you can't do it through 1 SQL query. What I ended up doing instead was just selecting the masters out first, then for each master do a sub-query for all it's children and then print those out. I realise it's not terribly efficient but I still get page load times of less than 1s and my customer is very happy :)
  12. spib

    Master Products - MS2

    Matti, Any chance you could help me with this problem http://forums.oscommerce.com/index.php?sho...ndpost&p=336121 when you have time? Even if it is just some pointers about the SQL that would be useful. Cheers
  13. spib

    Master Products - MS2

    Hi Matti, Great contribution. I spent the best part of a day getting it integrated and applying the mods from this thread but now it's in it's working great. However, I have two small problems I need to fix. The first is that I want to acheive this layout as suggested in an earlier post How would I go about it? I'm not too hot on SQL so I'm not sure how to get the products listed in the correct way to acheive this. The other problem is the 'Bestsellers' info box. I want this to group the counts for the slaves together to get a count for the master. So it would change this Product B in Red 20 Product A in Blue 15 Product A in Red 10 Product B in Blue 2 to this Product A 25 Product B 22 Thanks for any help you can offer. James
  14. spib

    Faster Page Loads, Less DB queries

    Great contribution! The instructions aren't great though. He talks about 'PATH_TO_FOLDER_OUTSIDE_OF_ROOT_THAT_HAS_WRITE_PERMISSIONS'.By this he means put this file outside of your apache htdocs directory (so put it in /apache/ or something). Also, Since os_commerce puts all it's file details in filenames.php, I thought I'd do the same. So in admin/includes/filenames.php and catalog/includes/filenames.php add define ('FILENAME_AND_PATH_CONFIG', 'C:/Program Files/Apache Group/Apache/osc_cfg.php'); Then wherever he references 'PATH_TO_FOLDER_OUTSIDE_OF_ROOT_THAT_HAS_WRITE_PERMISSIONS/configs_from_db.php' replace it with FILENAME_AND_PATH_CONFIG If you are having problems because you have single quotes in one of your config variables, do the following:- In admin/configuration.php, replace $con_value = $configuration['cfgValue']; with $con_value = addcslashes($configuration['cfgValue'], "'");
  15. spib

    PayPal_Shopping_Cart_IPN

    Greg, forget all that. It suddenly started working some time today. I checked my email and there were two ipn payments processed. It is so wierd because I haven't even touched my server since this morning. The only thing I can think of is that something was wrong with the server I'm hosted on and they've since fixed it. Anyway, thanks for all your help. Fantastic contribution!
×