Jump to content
Sign in to follow this  
komondor

Help! About Moneybookers Ipn !

Recommended Posts

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

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

Edited by komondor

Share this post


Link to post
Share on other sites

just replace the old code in checkout_moneybookersipn.php to this 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.

Share this post


Link to post
Share on other sites

WOW! thanks very much !

 

But error still in other two files

 

(1)checkout_moneybookersipn_after.php

 

<?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

 

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

?>

Share this post


Link to post
Share on other sites

checkout_moneybookersipn_cancel.php

 

<?php
/*
$Id: checkout_moneybookersipn_cancel.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:

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

?>

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

does anybody have a working version of this file: checkout_moneybookersipn_after.php

 

my version works except this sequence here:

 

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

Share this post


Link to post
Share on other sites

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


M.Kh.

#############

Project Coordinator

#############

Share this post


Link to post
Share on other sites

Hi

 

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

 

Thank you for your help

 

regards

 

Michael


-------------------

Surf-Timer

Internet Kiosk Software

www.surf-timer.com

Share this post


Link to post
Share on other sites

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

 

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

Edited by projectwonderful

Share this post


Link to post
Share on other sites

well i just fixed it myself...

 

checkout_moneybookersipn_after.php

 

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

Share this post


Link to post
Share on other sites

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.

 

 

Hi

 

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

 

Thank you for your help

 

regards

 

Michael


M.Kh.

#############

Project Coordinator

#############

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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


I am Maintaining :

Product_Short_Description (i added it on specials.php and in shopping_cart.php)

City Shipping Rates With Admin (fixed the error that was giving wrong total shipping charges)

I had Created :

UTF bug fix on standard reviews system (admin & block)

Corrupted character on mysql with utf-8

Share this post


Link to post
Share on other sites

Hello,

 

I have installed the OScommerce 2.2RC2a and I am getting an error. When I click on edit in the admin area it just disappears. Can someone help?

 

BJB

Share this post


Link to post
Share on other sites

Hey there,

 

There's one more thing you have to do in checkout_moneybookersipn_after.php file

 

BEFORE EDITING

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

 

which gonna redirect the customer after purchasing from moneybookers to checkout_payment.php !! this gonna make the customer confused like he didn't purchase the item so he will try to purchased over and over and makes a duplicate orders !!

 

so just change this to

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

This is gonna redirect him from moneybookers to checkout_success.php after purchasing which allows the customer to continue normally

 

hope this helps

 

cheers

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×