RobPaul Posted July 9, 2009 Share Posted July 9, 2009 Hi Osc Community Having a hard time setting up the money bookers module. Every time i get to the confirm order page, i click confirm order then the following message appears. Transaction not allowed invalid amount. Ive used all the updates that need to be installed but still this headache. When i click cancel on that page i receive another mystery message. Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/local/www/data-dist/mysite/htdocs/checkout_moneybookersipn_cancel.php on line 49 Line 49-50 require(DIR_WS_CLASSES . 'order.php'); $order = new order; These are all the files. Maybe i am mistaken but everything looks okay. checkout_moneybookersipn <?php /* $Id: checkout_moneybookersipn.php Copyright © 2007 Datalink UK t/a as Holbi http://www.holbi.co.uk Author: Vladislav B. Malyshev e-mail: [email protected] description: the file for creating the order before go to moneybookers. */ 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'], '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'], 'date_purchased' => 'now()', 'orders_status' => MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_BEFORE, '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' =>MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_BEFORE, '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; $total_weight = 0; $total_cost = 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($order->products[$i]['final_price'], $order->products[$i]['tax']) * $order->products[$i]['qty']; $total_cost += $order->products[$i]['final_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"; } // load the after_process function from the payment modules $payment_modules->after_process(); //for moneybookers if (MODULE_PAYMENT_MONEYBOOKERS_IPN_LANGUAGE == 'Selected Language') { $moneybookers_language = 'EN'; } else { $moneybookers_language = MODULE_PAYMENT_MONEYBOOKERS_IPN_LANGUAGE; } if (MODULE_PAYMENT_MONEYBOOKERS_IPN_CURRENCY == 'Selected Currency') { $moneybookers_currency = $currency; // echo "hehe1"; } else { // $moneybookers_currency = substr(MODULE_PAYMENT_MONEYBOOKERS_IPN_CURRENCY, 3); $moneybookers_currency = MODULE_PAYMENT_MONEYBOOKERS_IPN_CURRENCY; // echo MODULE_PAYMENT_MONEYBOOKERS_IPN_CURRENCY; // echo "hehe2"; } //echo $moneybookers_currency . "zuzu<br>"; if (!in_array($moneybookers_currency, array('EUR', 'USD', 'GBP', 'HKD', 'SGD', 'JPY', 'CAD', 'AUD', 'CHF', 'DKK', 'SEK', 'NOK', 'ILS', 'MYR', 'NZD', 'TWD', 'THB', 'CZK', 'HUF', 'SKK', 'ISK', 'INR'))) { $moneybookers_currency = 'EUR'; } //echo $moneybookers_currency . "zuzu2<br>"; //die(); $country_id = $order->billing['country']['id']; $country_moneybookers_ipn_query = "select countries_moneybookers from " . TABLE_COUNTRIES . " where countries_id = '" . $country_id . "'"; $country_moneybookers_ipn_res = tep_db_query($country_moneybookers_ipn_query); $country_moneybookers_ipn_data = tep_db_fetch_array($country_moneybookers_ipn_res); $country_moneybookers = $country_moneybookers_ipn_data['countries_moneybookers']; $trx_id = sprintf("%'820d", rand()); $update_order = "update " . TABLE_ORDERS . " set moneybookers_transaction_id = '" . $trx_id . "' where orders_id = '" . $insert_id . "'"; tep_db_query($update_order); $process_button_string = 'pay_to_email=' . MODULE_PAYMENT_MONEYBOOKERS_IPN_ID . '&language=' . $moneybookers_language. '&amount=' . number_format($order->info['total'] * $currencies->get_value($moneybookers_currency), $currencies->get_decimal_places($moneybookers_currency), '.', '') . '&amount2=' . number_format($order->info['shipping_cost'] * $currencies->get_value($moneybookers_currency), $currencies->get_decimal_places($moneybookers_currency), '.', '') . '&amount2_description=' . urlencode($order->info['shipping_method']) . '&amount3=' . number_format($order->info['tax'] * $currencies->get_value($moneybookers_currency), $currencies->get_decimal_places($moneybookers_currency), '.', '') . '&amount3_description=' . urlencode($order->info['tax_groups'][0]) . '¤cy=' . $moneybookers_currency . '&detail1_description=' . STORE_NAME . '&detail1_text=' . urlencode('Order # ' . $insert_id). '&transaction_id=' . $trx_id . '&firstname=' . $order->billing['firstname'] . '&lastname=' . $order->billing['lastname'] . '&address=' . $order->billing['street_address'] . '&postal_code=' . $order->billing['postcode'] . '&city=' . $order->billing['city'] . '&state=' . $order->billing['billing_state'] . '&country=' . $country_moneybookers . '&merchant_fields=' . urlencode('softwareprovider,distributor') . '&softwareprovider=' . 'holbi' . '&distributor=' . 'holbi' . '&pay_from_email=' . $order->customer['email_address'] . '&status_url=' . tep_href_link(FILENAME_MONEYBOOKERS_NOTIFY, '', 'SSL') . '&return_url=' . tep_href_link(FILENAME_CHECKOUT_CHECKOUT_MONEYBOOKERSIPN_AFTER, '', 'NONSSL') . '&cancel_url=' . tep_href_link(FILENAME_CHECKOUT_MONEYBOOKERSIPN_CANCEL, 'order_id=' . $insert_id, 'SSL'); /*tep_draw_hidden_field('pay_from_email', $order->customer['email_address']) .*/ $moneybookersurl = 'https://www.moneybookers.com/app/payment.pl'; if (strlen(MODULE_PAYMENT_MONEYBOOKERS_IPN_REFID) <= '5') {$moneybookersurl = $moneybookersurl . '?rid=3045110';} else {$moneybookersurl = $moneybookersurl . '?rid=' . MODULE_PAYMENT_MONEYBOOKERS_IPN_REFID;} //echo $moneybookersurl . "&" . $process_button_string; tep_redirect($moneybookersurl . "&" . $process_button_string); ?> Checkout_moneybookersipn_after <?php /* $Id: moneybookers_ipn.php Copyright © 2007 Datalink UK t/a as Holbi http://www.holbi.co.uk Author: Vladislav B. Malyshev e-mail: [email protected] description: the suport file. When we returns from moneybookers ok we remove cart and other data in this file */ include('includes/application_top.php'); // if the customer is not logged on, redirect them to the login page if ($osC_Customer->isLoggedOn() == false) { $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_SUCCESS)); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } if (tep_session_is_registered('sendto') == false) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } if (tep_not_null(MODULE_PAYMENT_INSTALLED) && (tep_session_is_registered('payment') == false)) { 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') && ($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; $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, '', 'NONSSL')); ?> checkout_moneybookersipn_cancel <?php /* $Id: checkout_moneybookersipn_cancel.php Copyright © 2007 Datalink UK t/a as Holbi http://www.holbi.co.uk Author: Vladislav B. Malyshev e-mail: [email protected] description: support file. it remove's order in case of cancel on moneybookers */ 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')== false) { $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT)); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } if (tep_session_is_registered('sendto') == false) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } if (tep_not_null(MODULE_PAYMENT_INSTALLED) && (tep_session_is_registered('payment') == false)) { 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') && ($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; if (phpversion() <= '4.0.6') { $_POST = $HTTP_POST_VARS; } if(!tep_not_null($_GET['order_id'])) { remove_order($_GET['order_id']); } tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'NONSSL')); function remove_order($order_id) { $order_query = tep_db_query("select products_id, products_quantity from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'"); while ($order = tep_db_fetch_array($order_query)) { tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = products_quantity + " . $order['products_quantity'] . ", products_ordered = products_ordered - " . $order['products_quantity'] . " where products_id = '" . (int)$order['products_id'] . "'"); } tep_db_query("delete from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '" . (int)$order_id . "'"); tep_db_query("delete from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$order_id . "'"); } ?> moneybookers_notify <?php /* $Id: moneybookers_ipn.php Copyright © 2007 Datalink UK t/a as Holbi http://www.holbi.co.uk Author: Vladislav B. Malyshev e-mail: [email protected] description: the file where moneybookers sends paymet confirmation */ /* include('mail.php'); ob_start(); // print_r($HTTP_POST_VARS); foreach ($HTTP_POST_VARS as $key => $value) { echo "Key: $key; Value: '$value'<br>\n"; } $email_order = ob_get_contents(); ob_end_clean(); my_sendmail_only_text('[email protected]', '[email protected]', 'what we have', $email_order); die(); */ include('includes/application_top.php'); if(!$language) $language = 'english'; include(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PROCESS); // load paypal_ipn payment module $payment = 'moneybookers_ipn'; require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment($payment); if (phpversion() <= '4.0.6') { $_POST = $HTTP_POST_VARS; } $order_id_select = "select orders_id from " . TABLE_ORDERS . " where moneybookers_transaction_id = '" . $_POST['transaction_id'] . "'"; $order_id_res = tep_db_query($order_id_select); $order_id_data = tep_db_fetch_array($order_id_res); $order_id = $order_id_data['orders_id']; require(DIR_WS_CLASSES . 'order.php'); $order = new order($order_id); foreach ($_POST as $key => $value) { $$key = $value; } /* //prepare details for checking on server $req = 'action=status_trn&email=' . urlencode(MODULE_PAYMENT_MONEYBOOKERS_IPN_ID) . "&password=" . md5(MODULE_PAYMENT_MONEYBOOKERS_IPN_PASSWORD) . "&trn_id=" . $transaction_id . "&mb_trn_id=" . $mb_transaction_id; */ //checking here if ($transaction_id && is_object($order) && $merchant_id = MODULE_PAYMENT_MONEYBOOKERS_IPN_REFID) { $transaction_status = $status; //checking on server has disabled now /* //checking on the server $url = 'https://www.moneybookers.com/app/query.pl'; if (strlen(MODULE_PAYMENT_MONEYBOOKERS_IPN_CURL_PATH) == 0) {//phpcurl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); $mb_response = split(chr(10),curl_exec($ch)); curl_close ($ch); } else {//system curl $command = MODULE_PAYMENT_MONEYBOOKERS_IPN_CURL_PATH . " -k -d \"$req\" " . $url; exec($command, $mb_response); } $request_flag = false; if (is_array($mb_response)) { $message = trim($mb_response[0]); if (strstr($message, "OK") ) { $value_string = $mb_response[1]; parse_str($value_string); if(is_numeric($status)) { $request_flag = true; $transaction_status =$status; } } } */ //$request_flag all the time true now. It was added for future updates. $md5_string = $merchant_id . $transaction_id . strtoupper(md5(MODULE_PAYMENT_MONEYBOOKERS_IPN_SECRET_WORD)) . $mb_amount . $mb_currency . $status; $result_of_md5 = strtoupper(md5($md5_string)); $request_flag = false; if ($result_of_md5 == $md5sig) $request_flag = 'True'; if ($request_flag) { switch($transaction_status) { case '-1'://cancel if (is_numeric(MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_CANCELLED) && (MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_CANCELLED > 0) ) { $order_status = MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_CANCELLED; } else { $order_status = DEFAULT_ORDERS_STATUS_ID; }; break; case '2'://ok if (is_numeric(MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_AFTER) && (MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_AFTER > 0) ) { $order_status = MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_AFTER; } else { $order_status = DEFAULT_ORDERS_STATUS_ID; }; break; case '1'://scheduled if (is_numeric(MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_SCHEDULED) && (MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_SCHEDULED > 0) ) { $order_status = MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_SCHEDULED; } else { $order_status = DEFAULT_ORDERS_STATUS_ID; }; break; case '0'://pending default: if (is_numeric(MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_PENDING) && (MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_PENDING > 0) ) { $order_status = MODULE_PAYMENT_MONEYBOOKERS_IPN_ORDER_STATUS_ID_PENDING; } else { $order_status = DEFAULT_ORDERS_STATUS_ID; }; break; } $sql_data_array = array('orders_status' => $order_status); tep_db_perform(TABLE_ORDERS,$sql_data_array,'update','orders_id='.$order_id); $customer_notification = (SEND_EMAILS == 'true') ? '1' : '0'; $sql_data_array = array('orders_id' => $order_id, 'orders_status_id' => $order_status, 'date_added' => 'now()', 'customer_notified' => $customer_notification); tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); if( ((int)$transaction_status == 0 || (int)$transaction_status == 2) && $customer_notification) { $products_ordered = ''; $subtotal = 0; $total_tax = 0; $total_weight = 0; $total_cost = 0; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { //------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); $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($order->products[$i]['final_price'], $order->products[$i]['tax']) * $order->products[$i]['qty']; $total_cost += $order->products[$i]['final_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 . ' ' . $order_id . "\n" . EMAIL_TEXT_INVOICE_URL . ' ' . tep_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $order_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"; if ($order->delivery['company']) { $email_order .= $order->delivery['company'] . "\n"; }; $email_order .= $order->delivery['name'] . "\n" . $order->delivery['street_address'] . "\n"; if ($order->delivery['suburb']) { $email_order .= $order->delivery['suburb'] . "\n"; }; $email_order .= $order->delivery['city'] . ', ' . $order->delivery['postcode'] . "\n"; if ($order->delivery['state']) { $email_order .= $order->delivery['state'] . ', '; }; $email_order .= $order->delivery['country'] . "\n"; } $email_order .= "\n" . EMAIL_TEXT_BILLING_ADDRESS . "\n" . EMAIL_SEPARATOR . "\n"; if ($order->billing['company']) { $email_order .= $order->billing['company'] . "\n"; }; $email_order .= $order->billing['name'] . "\n" . $order->billing['street_address'] . "\n"; if ($order->billing['suburb']) { $email_order .= $order->billing['suburb'] . "\n"; }; $email_order .= $order->billing['city'] . ', ' . $order->billing['postcode'] . "\n"; if ($order->billing['state']) { $email_order .= $order->billing['state'] . ', '; }; $email_order .= $order->billing['country'] . "\n\n"; $payment =& $payment; 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 (isset($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); } } tep_db_query("delete from " .TABLE_CUSTOMERS_BASKET. " where customers_id=".$order->customer['id']); tep_db_query("delete from " .TABLE_CUSTOMERS_BASKET_ATTRIBUTES. " where customers_id=".$order->customer['id']); echo "OK"; } } else { echo "FAIL"; }; ?> Tia Rob Quote Link to comment Share on other sites More sharing options...
germ Posted July 9, 2009 Share Posted July 9, 2009 // load the selected shipping module require(DIR_WS_CLASSES . 'shipping.php'); $shipping_modules = new shipping($shipping'); The last line should be $shipping_modules = new shipping($shipping); Quote If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you. "Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice." - Me - "Headers already sent" - The definitive help "Cannot redeclare ..." - How to find/fix it SSL Implementation Help Like this post? "Like" it again over there > Link to comment Share on other sites More sharing options...
RobPaul Posted July 9, 2009 Author Share Posted July 9, 2009 // load the selected shipping module require(DIR_WS_CLASSES . 'shipping.php'); $shipping_modules = new shipping($shipping'); The last line should be $shipping_modules = new shipping($shipping); Thanks for sorting that error out. Cancel works fine now. Its always helpful to have a fresh set of eyes look over something like that. Hope somebody is able to help with the main problem though. It must be something set up wrong in moneybookers account side. So confused... Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 11, 2009 Author Share Posted July 11, 2009 Anybody know what may be causing this error? Haven t heard back from moneybookers yet. Quote Link to comment Share on other sites More sharing options...
Jan Zonjee Posted July 11, 2009 Share Posted July 11, 2009 Anybody know what may be causing this error? Haven t heard back from moneybookers yet. In the file that is causing the error (checkout_moneybookersipn_cancel.php) there is a stray single quote on line 47 (in $shipping') $shipping_modules = new shipping($shipping'); Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 11, 2009 Author Share Posted July 11, 2009 In the file that is causing the error (checkout_moneybookersipn_cancel.php) there is a stray single quote on line 47 (in $shipping') $shipping_modules = new shipping($shipping'); Thank you. Germ already pointed that out for me though. Works great for the minor problem i had with returning back to checkout. It must be something in accounts but still no word from moneybookers about this problem. Quote Link to comment Share on other sites More sharing options...
Jan Zonjee Posted July 11, 2009 Share Posted July 11, 2009 Germ already pointed that out for me though. Oops, missed that completely. No clue about your other problem. Sorry. Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted July 11, 2009 Share Posted July 11, 2009 Hello, In the checkout_moneybookersipn.php try to change the line 306 //echo $moneybookersurl . "&" . $process_button_string; to echo $moneybookersurl . "&" . $process_button_string; exit(); and show the debug result here Stanislav Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 (edited) Will do that now. Edited July 12, 2009 by RobPaul Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 https://www.moneybookers.com/app/payment.pl...tion=Challenger Flashlights&detail1_text=Order+%23+19&transaction_id=88888888888839567853&firstname=Test&lastname=Name&address=1 street add&postal_code=8888&city=city&state=&country=SOU&merchant_fields=softwareprovider%2Cdistributor&softwareprovider=holbi&distributor=holbi&[email protected]&status_url=http://www.challengerflashlights.co.za/moneybookers_notify.php&return_url=http://www.challengerflashlights.co.za/checkout_moneybookersipn_after.php&cancel_url=http://www.challengerflashlights.co.za/checkout_moneybookersipn_cancel.php?order_id=19 Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted July 12, 2009 Share Posted July 12, 2009 Hello, Yes the amount is 0: amount=0&amount2=0&amount2_description=Table+Rate+%28Best+Way%29&amount3=0&amount3_description=¤cy=EUR before the line 274: $process_button_string = 'pay_to_email=' . MODULE_PAYMENT_MONEYBOOKERS_IPN_ID . add this: echo $order->info['total'].'-total '; echo $currencies->get_value($moneybookers_currency).'-getvalue '; echo $currencies->get_decimal_places($moneybookers_currency).'-get_decimal_places '; exit(); and show the debug result here Stanislav Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 Thanks for the quick reply. This is the response: 555.22-total -getvalue -get_decimal_places Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted July 12, 2009 Share Posted July 12, 2009 Thanks for the quick reply. This is the response: 555.22-total -getvalue -get_decimal_places Hello, replace the previous debug code with : print_r($currencies); echo 'print_r'; exit(); Stanislav Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 Here is the new code. currencies Object ( [currencies] => Array ( [ZAR] => Array ( [title] => Rand [symbol_left] => R [symbol_right] => [decimal_point] => . [thousands_point] => , [decimal_places] => 2 [value] => 1.00000000 ) ) ) print_r Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted July 12, 2009 Share Posted July 12, 2009 Hello, As you see your site know only ZAR while the module tries to pay in EUR you should go to the site admin -> Localization -> Currencies and add euro currency. Here is how it looks on my test site: Title: EuroCode: EUR Symbol Left: Symbol Right: EUR Decimal Point: . Thousands Point: , Decimal Places: 2 Last Updated: 04/07/2009 Value: 1.10360003 Example Output: $30.00 = 33.11EUR Note: If ZAR is set as default currency with value 1.00000000 on your site then the Value: for the EUR currency will be = EUR / ZAR Stanislav Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 Thank you for taking some time out to help me solve this issue. Works great for EUR unfortunately i need payments done in ZAR if possible. Do you know a way of making the module pay in ZAR instead of the site conforming to EUR? Quote Link to comment Share on other sites More sharing options...
Pektsekye Posted July 12, 2009 Share Posted July 12, 2009 Thank you for taking some time out to help me solve this issue. Works great for EUR unfortunately i need payments done in ZAR if possible. Do you know a way of making the module pay in ZAR instead of the site conforming to EUR? Hello, If moneybookers allow ZAR currency You should set in your site admin - > modules -> moneybookers module configuration then replace: if (!in_array($moneybookers_currency, array('EUR', 'USD', 'GBP', 'HKD', 'SGD', 'JPY', 'CAD', 'AUD', 'CHF', 'DKK', 'SEK', 'NOK', 'ILS', 'MYR', 'NZD', 'TWD', 'THB', 'CZK', 'HUF', 'SKK', 'ISK', 'INR'))) { $moneybookers_currency = 'EUR'; } with: if (!in_array($moneybookers_currency, array('EUR', 'USD', 'GBP', 'HKD', 'SGD', 'JPY', 'CAD', 'AUD', 'CHF', 'DKK', 'SEK', 'NOK', 'ILS', 'MYR', 'NZD', 'TWD', 'THB', 'CZK', 'HUF', 'SKK', 'ISK', 'INR', 'ZAR'))) { $moneybookers_currency = 'EUR'; } in the checkout_moneybookersipn.php Stanislav Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 12, 2009 Author Share Posted July 12, 2009 Looks like it is working. I will make sure to process a transaction during the week as it takes a little time to setup MB accounts in SA. I will then update this thread if all goes accordingly. To germ, Jan Zonjee and Pektsekye (Stanislav) Thank you for all the great support. Rob Quote Link to comment Share on other sites More sharing options...
RobPaul Posted July 29, 2009 Author Share Posted July 29, 2009 Setup a separate account on money bookers, did the transaction and everything worked just fine. Quote Link to comment Share on other sites More sharing options...
dr_lucas Posted August 1, 2009 Share Posted August 1, 2009 I have uploaded a new updated MoneyBookers module with Zillion bug fixes, check it out! Quote Did I help you? Click "Like" or "Thanks"! It's free of charge. :)My contributions:Total Configuration (newly updated 07/2018, for both osC 2.2 and 2.3.4.1 BS Frozen CE)User Tracking with Admin 1.0 (newly updated 07/2018)FedEx - Web Services v9, FAQ System , Who's Online Enhancement, Order Editor, MoneyBookers IPN, Ship in Cart (MS2), Admin Products Paging, Margin Report v1.00, 2Checkout INS / IPN (Instant Notification System) for MS2.2, Visitor Web Stats, Time Zone Offset - Adjust to match your location, Category Meta Tags Link to comment Share on other sites More sharing options...
ikul Posted August 2, 2009 Share Posted August 2, 2009 I have uploaded a new updated MoneyBookers module with Zillion bug fixes, check it out! I installed Your contribution from 26 Jul 2009 to clean installation of MS2.2 RC2a. It works good in Opera browser, but in IE when pressing "Confirm Order" button it opens whole site in the center part of original page instead of transferring me to moneybookers. What is the problem? Can You help me? Thank You! Quote Link to comment Share on other sites More sharing options...
dr_lucas Posted August 2, 2009 Share Posted August 2, 2009 Yes, it basically suppose to open IFRAME when you click confirm, not redirect you to Moneybookers, so Opera's behavior is the wrong one. This mod works with IFRAME before I updated it, check the previous uploads, it was added in a previous version. Quote Did I help you? Click "Like" or "Thanks"! It's free of charge. :)My contributions:Total Configuration (newly updated 07/2018, for both osC 2.2 and 2.3.4.1 BS Frozen CE)User Tracking with Admin 1.0 (newly updated 07/2018)FedEx - Web Services v9, FAQ System , Who's Online Enhancement, Order Editor, MoneyBookers IPN, Ship in Cart (MS2), Admin Products Paging, Margin Report v1.00, 2Checkout INS / IPN (Instant Notification System) for MS2.2, Visitor Web Stats, Time Zone Offset - Adjust to match your location, Category Meta Tags Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.