OSCOMMERCE SUPPORT CALL 702-453-3332

 

Help - Search - Members - Calendar
Full Version: Help! About Moneybookers Ipn !
osCommerce Community Support Forums > osCommerce Online Merchant v2.x > Contributions / Add-Ons > Payment Modules > Other
komondor
I install this Modules !

http://www.oscommerce.com/community/contri...ch,moneybookers

when I test it ! en error in it !

Fatal error: Call to a member function on a non-object in /home/name/public_html/checkout_moneybookersipn.php on line 19

checkout_moneybookersipn.php code
CODE
<?php
/*
$Id: checkout_moneybookersipn.php

Copyright (c) 2007 Datalink UK t/a as Holbi

http://www.holbi.co.uk

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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 ($osC_Customer->isLoggedOn() == false) {
        $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));

        tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

if ($osC_Session->exists('sendto') == false) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

if (tep_not_null(MODULE_PAYMENT_INSTALLED) && ($osC_Session->exists('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) && $osC_Session->exists('cartID') && ($cart->cartID != $osC_Session->value('cartID'))) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

include(DIR_WS_LANGUAGES . $osC_Session->value('language') . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($osC_Session->value('payment'));

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($osC_Session->value('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' => $osC_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 = '" . $osC_Session->value('languages_id') . "'
                                and poval.language_id = '" . $osC_Session->value('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 = '" . $osC_Session->value('languages_id') . "' and poval.language_id = '" . $osC_Session->value('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]) .
'&currency=' . $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);
?>
pas75
just replace the old code in checkout_moneybookersipn.php to this code -

CODE
<?php
/*
$Id: checkout_moneybookersipn.php

Copyright (c) 2007 Datalink UK t/a as Holbi

http://www.holbi.co.uk

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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]) .
'&currency=' . $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);
?>


Hopefully this will resolve your issue but i checked this contributions and same error is in other 3 files. So after fixing this file, you have to fix other 3 files in same way.
komondor
WOW! thanks very much !

But error still in other two files

(1)checkout_moneybookersipn_after.php

CODE
<?php
/*
$Id: moneybookers_ipn.php

Copyright (c) 2007 Datalink UK t/a as Holbi

http://www.holbi.co.uk

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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

        tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

if ($osC_Session->exists('sendto') == false) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

if (tep_not_null(MODULE_PAYMENT_INSTALLED) && ($osC_Session->exists('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) && $osC_Session->exists('cartID') && ($cart->cartID != $osC_Session->value('cartID'))) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

include(DIR_WS_LANGUAGES . $osC_Session->value('language') . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($osC_Session->value('payment'));

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($osC_Session->value('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
$osC_Session->remove('sendto');
$osC_Session->remove('billto');
$osC_Session->remove('shipping');
$osC_Session->remove('payment');
$osC_Session->remove('comments');

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'NONSSL'));
?>



(2)checkout_moneybookersipn_cancel.php

CODE
<?php
/*
$Id: checkout_moneybookersipn_cancel.php

Copyright (c) 2007 Datalink UK t/a as Holbi

http://www.holbi.co.uk

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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 ($osC_Customer->isLoggedOn() == false) {
        $navigation->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_PAYMENT));

        tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

if ($osC_Session->exists('sendto') == false) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

if (tep_not_null(MODULE_PAYMENT_INSTALLED) && ($osC_Session->exists('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) && $osC_Session->exists('cartID') && ($cart->cartID != $osC_Session->value('cartID'))) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

include(DIR_WS_LANGUAGES . $osC_Session->value('language') . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($osC_Session->value('payment'));

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($osC_Session->value('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 . "'");
}

?>
IRINeL
checkout_moneybookersipn_cancel.php

CODE
<?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: vmalyshev@holbi.co.uk

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


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 . "'");
}

?>
sup3rstar
I have a problem too with MoneyBookers IPN ( "official") payment module.

I install it but i can configure it. When (from my admin area) try to edit just disappear !

I don't know php, what i did was to replace what they said in read me file but they were 2 files:

_general

and

_filenames

that we have to replace but they didn't said what line etc..just give the code..and what i did? I put it where i thout it fits better but i don't think i replace them well since i canno't install the module.

Can somebody who know php and already install this post those 2 files _general & _filenames here please.

Thnak you in advance
ajundra
does anybody have a working version of this file: checkout_moneybookersipn_after.php

my version works except this sequence here:

CODE

// unregister session variables used during checkout
$osC_Session->remove('sendto');
$osC_Session->remove('billto');
$osC_Session->remove('shipping');
$osC_Session->remove('payment');
$osC_Session->remove('comments');


your help is much appreciated.

thanks,
roberto
netpios
Hi

Somebody might have already responded somewhere. However, as I just figured out what's wrong with this contribution, I'm posting the results here to help the community:

This module is probably written for OSC v.2.2 MS3 or RC1 .. or whatever else but above v.2.2 MS2 which is my version and some other people who are crying for help here.
For adapting this module to MS2, you should update 4 files:

checkout_moneybookersipn.php
checkout_moneybookersipn_after.php
checkout_moneybookersipn_cancel.php
moneybookers_notify.php

In the above files, search and make the following changes:

$osC_Customer->isLoggedOn() >> To
tep_session_is_registered('customer_id')

$osC_Session->exists('sendto') >> To
tep_session_is_registered('sendto')

$osC_Session->exists('payment') >> To
tep_session_is_registered('payment')

$osC_Session->exists('cartID') >> To
tep_session_is_registered('cartID')

$osC_Session->value('cartID') >> To
$cartID

$osC_Session->value('language') >> To
$language

$osC_Session->value('payment') >> To
$payment

$osC_Session->value('shipping') >> To
$shipping

$osC_Session->value('languages_id') >> To
$languages_id

$osC_Customer->id >> To
$customer_id

$osC_Session->remove() >> To
tep_session_unregister()

This should resolve any problem. If not, please post back.

-Max
Megadart
Hi

Is there anyway to test it like the Sandbox and PayPal ?

Thank you for your help

regards

Michael
projectwonderful
hi i having error on checkout_moneybookersipn_after.php

Fatal error: Call to a member function on a non-object in /www/htdocs/w0097fce/shop/checkout_moneybookersipn_after.php on line 20

CODE
<?php
/*
$Id: moneybookers_ipn.php

Copyright © 2007 Datalink UK t/a as Holbi

[url=http://www.holbi.co.uk]http://www.holbi.co.uk[/url]

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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

        tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}

if ($osC_Session->exists('sendto') == false) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

if (tep_not_null(MODULE_PAYMENT_INSTALLED) && ($osC_Session->exists('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) && $osC_Session->exists('cartID') && ($cart->cartID != $osC_Session->value('cartID'))) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
}

include(DIR_WS_LANGUAGES . $osC_Session->value('language') . '/' . FILENAME_CHECKOUT_PROCESS);

// load selected payment module
require(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment($osC_Session->value('payment'));

// load the selected shipping module
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping($osC_Session->value('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
$osC_Session->remove('sendto');
$osC_Session->remove('billto');
$osC_Session->remove('shipping');
$osC_Session->remove('payment');
$osC_Session->remove('comments');

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SUCCESS, '', 'NONSSL'));
?>
projectwonderful
well i just fixed it myself...

checkout_moneybookersipn_after.php

CODE
<?php
/*
$Id: moneybookers_ipn.php

Copyright (c) 2007 Datalink UK t/a as Holbi

http://www.holbi.co.uk

Author: Vladislav B. Malyshev
e-mail: vmalyshev@holbi.co.uk

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 the customer is not logged on, redirect them to the shopping cart page
  if (!tep_session_is_registered('customer_id')) {
    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
  }

if ($sendto != false) {
        tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}

      if (defined('MODULE_PAYMENT_INSTALLED') && tep_not_null(MODULE_PAYMENT_INSTALLED)) {
        $this->modules = explode(';', MODULE_PAYMENT_INSTALLED);
}

// 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;

$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'));
?>
netpios
Hello,

For some reason, I didn't get any message from the forum informing me that you've posted...

Anyway .. I don't have a good news either .. I actually don't know if there's anything like PayPal Sandbox for Moneybookers.
I haven't contacted Moneybookers yet to see how we're supposed to test ...
What I will probably do is using another account to send money back and forth between Moneybookers account to see the module is functional. Keep in mind that they don't allow multiple accounts per user .. u can use a friend's account for that matter.

If you have any info regarding this .. let me know.

Thanks.


QUOTE (Megadart @ Jan 19 2008, 09:02 AM) *
Hi

Is there anyway to test it like the Sandbox and PayPal ?

Thank you for your help

regards

Michael
leveera
Installed IPN module with no problem for OSC2.2M2 with all above changes.

I only noted the Moneybookers orders status (moneybookers before process, moneybookers processed
.... ) are displayed only on English pages in admin.

Is a solution to have status displayed in other languages?

Sergei
draculakos
just to help some people you have to make this corrections if you use RC2 version with the constribution "Moneybookers Oscommerce 2.2 ms2"

in the checkout_moneybookersipn_after.php and checkout_moneybookersipn_cancel.php
$osC_Session->value('shipping') >> To
$shipping
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.