Jump to content

Archived

This topic is now archived and is closed to further replies.

vesaire

Blank page at checkout_process.php

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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');

 

?>

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

×