vesaire Posted June 5, 2003 Posted June 5, 2003 I had modified checkout_process.php and uploaded the server but started to act in a strange wa. I get through all steps during checkout but when I came to step checkout_process my browser only shows a blank page and order is not completed. Urgent help needed, Thanks in advance Ugur
mposse Posted June 9, 2003 Posted June 9, 2003 Hello guys Have you discovered the reason for this problem, I am having the same and I can not solve it. Any ideas? Thank you
mdfst13 Posted June 9, 2003 Posted June 9, 2003 Did you modify checkout_process.php as well? It might help if you could post your modified copy. It might also help if you could post what appears in the Address bar of the browser when the blank page is showing. Either of those things might make it easier to pin down the problem Good luck, Matt I love deadlines. I like the whooshing sound they make as they fly by. ---Douglas Adams
mposse Posted June 9, 2003 Posted June 9, 2003 I didn't change anything on the checkout process code, just added an extra stylesheet and some other cosmetic modifications. Checkout process version is /* $Id: checkout_process.php,v 1.123 2003/02/13 01:58:24 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce Released under the GNU General Public License */ I activated Authorize.net with default configurations and the system hit the dll and returns an error (of course) but at least work. But if I use linkpoint (Tim Wasson's contrib) it will not do anything. I got a blank page at /catalog/checkout_process.php (after hitting confirm order button) There is something though that I noticed when sending the payment information from checkout_payment.php to checkout_confirmation.php: In the status bar of my browser (ie) I saw an alert icon for a few seconds. It looks like there is some error on the pages that the request calls. The payment confirmation page looks allright, but when I click on confirm order, I am forwarded to the checkout process page with nothing on it. I have look at all the code and everything seems ok, I am so new to php and so, I may be overlooking a lot of things. I have not access to php.ini and I am testing it online (in the real server) I don't know if there is any other info that may be useful, please let me know Martin
mposse Posted June 9, 2003 Posted June 9, 2003 Hi I found that my hosting provider doesn't support cURL. May it be the reason of all the problem? Any of you think that they may be related? I mean the blank page and curl not installed on the server. Any help on this issue will be greatly appreciated. I had been trying to solve this problem for the last 4 days with no luck. Thank you Martin
vesaire Posted June 11, 2003 Author Posted June 11, 2003 I suspect that this problem is something related with email sending process because when I turned of emails from admin checkout is completed. Then I re-modified the email script but htis time did not remove the /n signs. I do not know what that means but solved the problem. I am using MS1 on a W2000 server with IIS5.0 I am using a shared hosting. Hope these helps? P.S. Am I right for the above solution?
mposse Posted June 11, 2003 Posted June 11, 2003 Hello fellows! I found that the problem is realted to cURL, it is not installed in the server and error reporting is turned off in php.ini, so when you try to initiate cURL, the system just stops. I am trying to use the binaries now ('usr/local/bin/curl') and the process returns an error but at least the page is not blank anymore. I will keep you all posted. Martin
mposse Posted June 11, 2003 Posted June 11, 2003 Well, I just don't know. I had been following the logic on the code into lpphp.php file (php wrapper from linkpoint), and it seems that when it tryes to run curl, it gets an error. this is the exec line I have $result = exec ("'".$cpath." -s -S -E ".$key." -m 120 -d ".$xml." ".$host."'", $retarr, $retnum); Originaly the variables where embeded into the string like this one $result = exec ("'$cpath' -v -s -S -E '$key' -m 120 -d '$xml' '$host'", $retarr, $retnum); But I supossed that in that way, the final string would be "'$cpath' -v -s -S -E '$key' -m 120 -d '$xml' '$host'" which doesn't make any sence to me and I believe would not be correct for the exec command Now, the translation for my string is "/usr/local/bin/curl -s -S -E 000000.pem -m 120 -d <$xml> https://secure.linkpt.net:1139/LSGSXML" where <$xml> is an string with the xml code (all the form information) And I keep receiving the same error "There has been an error processing you credit card, please try again.: Could not execute curl" at the top of the screen. Am i using the path to curl incorrectly? I also had to comment some variable translation code, because I had some variables with name incorrect, and comenting the code solved the problem. It seemed to me that the gateway was expecting 'bzip' as a variable name and the script was sending 'zip'. I found that the traslation was changing the name of the variables and I just commented it out. It doesn't seem to be the problem anyways. This is the block I commented out /*$ftranslate["gateway"]="invalid_a"; $ftranslate["hostname"]="host"; $ftranslate["port"]="port"; $ftranslate["storename"]="configfile"; $ftranslate["orderID"]="oid"; $ftranslate["amount"]="chargetotal"; $ftranslate["cardNumber"]="cardnumber"; $ftranslate["cardExpMonth"]="expmonth"; $ftranslate["cardExpYear"]="expyear"; $ftranslate["name"]="bname"; $ftranslate["address"]="baddr1"; $ftranslate["city"]="bcity"; $ftranslate["state"]="bstate"; $ftranslate["zip"]="bzip"; $ftranslate["country"]="bcountry"; $ftranslate["trackingID"]="refrencenumber"; $ftranslate["backOrdered"]="invalid_b"; $ftranslate["keyfile"]="keyfile";*/ By the way, I am using MS1 with Tim Wasson's Linkpoint payment module and the wrapper from Linkpoint website. Thank you for all your help. Martin
exotikas Posted March 14, 2011 Posted March 14, 2011 Hi, I have the same problem. My site was working normally, when I modified the file checkout_proccess.php, I uploed it, The order proccess seems to be completed (the email sends, and order is registered) but in the explore put a BLANK PAGE the url is checkout_proccess.php instead of checkout_sucessful.php (like before) I uploaded my backup file but the error seems to be same. I using oscommerce 2.3.1 the rest of oscommerce files are working perfect. I tried to desactive HTML emails in the admin opcions, and I received the email in text format as well HTML format and orders are registered. I tried to desactive send emails, and the order is registered well but always showing the blank page. Please someone help me! Follow the code of checkout_proccess.php <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2007 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 there is nothing in the customers cart, redirect them to the shopping cart page if ($cart->count_contents() < 1) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } // if no shipping method has been selected, redirect the customer to the shipping method selection page if (!tep_session_is_registered('shipping') || !tep_session_is_registered('sendto')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', '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; // Stock Check $any_out_of_stock = false; if (STOCK_CHECK == 'true') { for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) { $any_out_of_stock = true; } } // Out of Stock if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } } $payment_modules->update_status(); if ( ($payment_modules->selected_module != $payment) || ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL')); } require(DIR_WS_CLASSES . 'order_total.php'); $order_total_modules = new order_total; $order_totals = $order_total_modules->process(); // load the before_process function from the payment modules $payment_modules->before_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'], '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' => trim($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'], 'shipping_module' => $shipping['id'], '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 = ''; 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 ---- $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 //--- Beginning of addition: Ultimate HTML Emails ---// if (EMAIL_USE_HTML == 'true') { require(DIR_WS_MODULES . 'UHtmlEmails/Green/checkout_process.php'); $email_order = $html_email; }else{//Send text email //--- End of addition: Ultimate HTML Emails ---// $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 .= $order->info['payment_method'] . "\n\n"; if (isset($payment_class->email_footer)) { $email_order .= $payment_class->email_footer . "\n\n"; } } //--- Beginning of addition: Ultimate HTML Emails ---// } if(ULTIMATE_HTML_EMAIL_DEVELOPMENT_MODE === 'true'){ //Save the contents of the generated html email to the harddrive in .htm file. This can be practical when developing a new layout. $TheFileName = 'Last_mail_from_checkout_process.php.htm'; $TheFileHandle = fopen($TheFileName, 'w') or die("can't open error log file"); fwrite($TheFileHandle, $email_order); fclose($TheFileHandle); } //--- End of addition: Ultimate HTML Emails ---// 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'); ?>
exotikas Posted April 1, 2011 Posted April 1, 2011 I fix the problem. I looked at the error_log file and a txt indicated that there had problems in one file, proved to be an invisible character at the end of the language definition file for checkout_sucefull.php page. I hope you can apply to any other user with mysterious problem, resolve to look at the error log file. -------------------------- Arregle el problema. Mire el archivo error_log y ahi indicaba un txt que tenia problemas, resulto ser un caracter invisible al final del archivo de definicion de idioma para pagina checkout_sucefull.php. Espero que le sirva para cualquier otro usuario que tenga problema tan misterioso, resuelva mirar el archivo error log.
evagarbo Posted July 22, 2012 Posted July 22, 2012 I am using Ultimate Emails on a 2.3.1 install the checkout process works fine in english but when I check out in swedish I get a blank page on checkout_process.php I have added this on checkout_process.php: //--- Beginning of addition: Ultimate HTML Emails ---// if (EMAIL_USE_HTML == 'true') { require(DIR_WS_MODULES . 'UHtmlEmails/Green/checkout_process.php'); $email_order = $html_email; }else{//Send text email //--- End of addition: Ultimate HTML Emails ---// Not sure what can be wrong?
Recommended Posts
Archived
This topic is now archived and is closed to further replies.