Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

2CO


tanyamaria

Recommended Posts

Hi,

 

Everytime i go through 2CO payment , it sends me to another page with an error. [ Incorrect parameters were supplied, therefore this purchase cannot begin ]

 

I have no idea as to where I have gone wrong..

 

Can anyone please help me out.

 

Thanks

 

Tanya

Link to comment
Share on other sites

this is what i have in my catalog/includes/modules/payment/pm2checkout.php

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

 

<?php

/*

$Id: pm2checkout.php,v 1.19 2003/01/29 19:57:15 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright ? 2003 osCommerce

 

Released under the GNU General Public License

*/

 

class pm2checkout {

var $code, $title, $description, $enabled;

 

// class constructor

function pm2checkout() {

global $HTTP_POST_VARS, $order;

 

$this->code = 'pm2checkout';

$this->title = MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE;

$this->description = MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION;

$this->sort_order = MODULE_PAYMENT_2CHECKOUT_SORT_ORDER;

$this->enabled = ((MODULE_PAYMENT_2CHECKOUT_STATUS == 'True') ? true : false);

$this->tco_main_currency = MODULE_PAYMENT_2CHECKOUT_CURRENCY;

$this->tco_version = MODULE_PAYMENT_2CHECKOUT_VERSION;

$this->check_hash = ((MODULE_PAYMENT_2CHECKOUT_CHECK_HASH == 'True') ? true : false);

$this->secret_word = MODULE_PAYMENT_2CHECKOUT_SECRET_WORD;

$this->login_id = MODULE_PAYMENT_2CHECKOUT_LOGIN;

$this->demo = ((MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Demo') ? true : false);

 

 

if ($HTTP_POST_VARS['x_2checked'] == 'K' && (int)MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID2 > 0) {

$this->order_status = MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID2;

} else if ($HTTP_POST_VARS['x_2checked'] != 'K' && (int)MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID > 0) {

$this->order_status = MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID;

}

 

if (is_object($order)) $this->update_status();

 

// V2 related paramaters

if ($this->tco_version == 'V2') {

$this->form_action_url = 'https://www2.2checkout.com/2co/buyer/purchase';

// V1 related paramaters

} else {

$this->form_action_url = 'https://www.2checkout.com/cgi-bin/Abuyers/purchase.2c';

}

}

 

// class methods

function update_status() {

global $order;

 

if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_2CHECKOUT_ZONE > 0) ) {

$check_flag = false;

$check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_2CHECKOUT_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");

while ($check = tep_db_fetch_array($check_query)) {

if ($check['zone_id'] < 1) {

$check_flag = true;

break;

} elseif ($check['zone_id'] == $order->billing['zone_id']) {

$check_flag = true;

break;

}

}

 

if ($check_flag == false) {

$this->enabled = false;

}

}

}

 

function javascript_validation() {

return false;

}

 

function selection() {

global $order;

 

$selection = array('id' => $this->code,

'module' => $this->title

);

 

return $selection;

}

 

function pre_confirmation_check() {

return false;

}

 

function confirmation() {

global $HTTP_POST_VARS, $order, $currency, $currencies;

 

// IF the default currency at osCommerce is different from default currency at 2Checkout we have to deal with it

if (DEFAULT_CURRENCY != $this->tco_main_currency) {

 

// if the default currency at 2Checkout exist at osCommerce we have to convert the order_total amount into the 2CO currency

if ($currencies->is_set($this->tco_main_currency)) {

 

$cOrderTotal = $currencies->get_value($this->tco_main_currency) * $order->info['total'];

 

$title = $this->title . '<b><FONT class="messageStackWarning">' . MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION . $this->tco_main_currency . MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION2 . $currencies->get_value($this->tco_main_currency) . MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION3 . $this->tco_main_currency . ' ' . number_format($cOrderTotal, 2, '.', '') . MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION4 . '</FONT><br>' . sprintf(MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION5, $currency);

 

// if the default currency at 2Checkout doesn't exist at osCommerce we can go forward

} else {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_CURRENCY), 'SSL', true, false));

}

 

// IF the default currency at osCommerce is the same as the default currency at 2Checkout we go forward

} else {

 

// if the customer wants to pay in a currency supported by 2Checkout, OTHER then the default one, we have to inform him that the conversion "default currency --> choosen currency" will be made at 2CO rate and the total amount in the choosen currency may be different at 2CO then the total amount he see on osCommerce shop.

if ($currency != $this->tco_main_currency) {

$title = $this->title . sprintf(MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION6, $currency, $currency);

 

// if the customer wants to pay in same currency as the default one, then everything is clear

} else {

$title = $this->title;

}

 

}

 

$confirmation = array('title' => $title);

return $confirmation;

}

 

function process_button() {

global $HTTP_POST_VARS, $order, $currency, $currencies;

 

// IF the default currency at osCommerce is different from default currency at 2Checkout we have to deal with it

if (DEFAULT_CURRENCY != $this->tco_main_currency) {

 

// if the default currency at 2Checkout exist at osCommerce we have to convert the order_total amount into the 2CO currency

if ($currencies->is_set($this->tco_main_currency)) {

 

$cOrderTotal = $currencies->get_value($this->tco_main_currency) * $order->info['total'];

 

// if the default currency at 2Checkout doesn't exist at osCommerce we can go forward

}

 

// IF the default currency at osCommerce is the same as the default currency at 2Checkout we go forward

} else {

$cOrderTotal = $order->info['total'];

}

 

 

$process_button_string = '';

 

$process_button_string .= tep_draw_hidden_field('x_login', MODULE_PAYMENT_2CHECKOUT_LOGIN) .

tep_draw_hidden_field('x_amount', number_format($cOrderTotal, 2, '.', '')) .

tep_draw_hidden_field('x_invoice_num', date('YmdHis'));

 

$process_button_string .= tep_draw_hidden_field('x_first_name', $order->customer['firstname']) .

tep_draw_hidden_field('x_last_name', $order->customer['lastname']) .

tep_draw_hidden_field('x_address', $order->customer['street_address']) .

tep_draw_hidden_field('x_city', $order->customer['city']) .

tep_draw_hidden_field('x_state', $order->customer['state']) .

tep_draw_hidden_field('x_zip', $order->customer['postcode']) .

tep_draw_hidden_field('x_country', $order->customer['country']['title']) .

tep_draw_hidden_field('x_email', $order->customer['email_address']) .

tep_draw_hidden_field('x_phone', $order->customer['telephone']) .

tep_draw_hidden_field('x_ship_to_first_name', $order->delivery['firstname']) .

tep_draw_hidden_field('x_ship_to_last_name', $order->delivery['lastname']) .

tep_draw_hidden_field('x_ship_to_address', $order->delivery['street_address']) .

tep_draw_hidden_field('x_ship_to_city', $order->delivery['city']) .

tep_draw_hidden_field('x_ship_to_state', $order->delivery['state']) .

tep_draw_hidden_field('x_ship_to_zip', $order->delivery['postcode']) .

tep_draw_hidden_field('x_ship_to_country', $order->delivery['country']['title']) .

tep_draw_hidden_field('x_receipt_link_url', tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .

tep_draw_hidden_field('x_email_merchant', ((MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT == 'True') ? 'TRUE' : 'FALSE'));

 

// V2 related paramaters

 

$process_button_string .= tep_draw_hidden_field('id_type', '1');

 

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {

$prod_no = $i + 1;

$process_button_string .= tep_draw_hidden_field('c_prod_' . $prod_no, tep_get_prid($order->products[$i]['id']) . ',' . $order->products[$i]['qty']);

$process_button_string .= tep_draw_hidden_field('c_name_' . $prod_no, $order->products[$i]['name']);

if ($order->products[$i]['model'] == '') {

$process_button_string .= tep_draw_hidden_field('c_description_' . $prod_no, HEADING_PRODUCTS);

} else {

$process_button_string .= tep_draw_hidden_field('c_description_' . $prod_no, $order->products[$i]['model']);

}

$process_button_string .= tep_draw_hidden_field('c_price_' . $prod_no, number_format($order->products[$i]['price'],2));

}

 

$process_button_string .= tep_draw_hidden_field('fixed', 'Y') .

tep_draw_hidden_field('tco_currency', $currency);

 

if (MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Demo') {

$process_button_string .= tep_draw_hidden_field('demo', 'Y');

}

 

 

 

 

return $process_button_string;

}

 

 

function before_process() {

global $HTTP_POST_VARS;

 

if ($HTTP_POST_VARS['x_response_code'] != '1') {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE), 'SSL', true, false));

}

 

// check the md4 hash

if ($this->check_hash == true && $this->demo == false) {

$compare_string = $this->secret_word . $this->login_id . $HTTP_POST_VARS['x_trans_id'] . $HTTP_POST_VARS['x_amount'];

// make it md5

$compare_hash1 = md5($compare_string);

// make all upper

$compare_hash1 = strtoupper($compare_hash1);

$compare_hash2 = $HTTP_POST_VARS['x_MD5_Hash'];

 

if ($compare_hash1 != $compare_hash2) {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_HASH_MESSAGE), 'SSL', true, false));

}

}

 

}

 

function after_process() {

return false;

}

 

function get_error() {

global $HTTP_GET_VARS;

 

$error = array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR,

'error' => stripslashes(urldecode($HTTP_GET_VARS['error'])));

 

return $error;

}

 

function check() {

if (!isset($this->_check)) {

$check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_2CHECKOUT_STATUS'");

$this->_check = tep_db_num_rows($check_query);

}

return $this->_check;

}

 

 

function install() {

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable 2CheckOut Module', 'MODULE_PAYMENT_2CHECKOUT_STATUS', 'True', 'Do you want to accept 2CheckOut payments?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Login/Store Number', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', '18157', 'Login/Store Number used for the 2CheckOut service', '6', '2', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Transaction Mode', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'Demo', 'Transaction mode used for the 2Checkout service', '6', '3', 'tep_cfg_select_option(array(\'Demo\', \'Production\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Merchant Notifications', 'MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT', 'True', 'Should 2CheckOut e-mail a receipt to the store owner?', '6', '4', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort order of display.', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '5', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Payment Zone', 'MODULE_PAYMENT_2CHECKOUT_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '6', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Procesed 2CO Order Status', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID', '0', 'Set the status of orders successfully processed by 2Checkout to this value', '6', '7', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values ('Pending 2CO Order Status', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID2', '0', 'Set the status of orders still pending to be processed by 2Checkout to this value', '6', '8', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('2CO Currency', 'MODULE_PAYMENT_2CHECKOUT_CURRENCY', 'USD', 'What is the currency of your 2CO account?<br><b><font color=red>Be careful!</font></b> Make sure your default currency here into the osCommerce shop is the SAME as your currency used into your 2CO account. <br> By default both 2CO and osC uses USD.', '6', '9', 'tep_cfg_select_option(array(\'USD\', \'EUR\', \'AUD\', \'CAD\', \'CHF\', \'DKK\', \'GBP\', \'HKD\', \'JPY\', \'NOK\', \'NZD\', \'SEK\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Check MD5 hash', 'MODULE_PAYMENT_2CHECKOUT_CHECK_HASH', 'False', 'Should the 2CheckOut MD5 hash facilty to be checked?', '6', '10', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Secret Word', 'MODULE_PAYMENT_2CHECKOUT_SECRET_WORD', 'PutYourOwn', 'Secret word for the 2CheckOut MD5 hash facility', '6', '11', now())");

tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('2Checkout version', 'MODULE_PAYMENT_2CHECKOUT_VERSION', 'V2', 'Which version of 2Checkout system do you use?<br>If you don\'t know probably this default seting is good for you.', '6', '12', 'tep_cfg_select_option(array(\'V1\', \'V2\'), ', now())");

}

 

function remove() {

tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

}

 

function keys() {

return array('MODULE_PAYMENT_2CHECKOUT_STATUS', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT', 'MODULE_PAYMENT_2CHECKOUT_ZONE', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID', 'MODULE_PAYMENT_2CHECKOUT_ORDER_STATUS_ID2', 'MODULE_PAYMENT_2CHECKOUT_SORT_ORDER', 'MODULE_PAYMENT_2CHECKOUT_CURRENCY', 'MODULE_PAYMENT_2CHECKOUT_CHECK_HASH', 'MODULE_PAYMENT_2CHECKOUT_SECRET_WORD', 'MODULE_PAYMENT_2CHECKOUT_VERSION');

}

 

}

?>

 

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

 

And this is what i have in my catalog/includes/languages/english/modules/payment/pm2checkout.php

 

 

<?php

/*

$Id: pm2checkout.php,v 1.3 2002/11/18 14:45:23 project3000 Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

*/

 

define('MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE', '2CheckOut');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION', 'Credit Card Test Info:<br><br>CC#: 4111111111111111<br>Expiry: Any');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_TYPE', 'Type:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER', 'Credit Card Owner:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME', 'Credit Card Owner First Name:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME', 'Credit Card Owner Last Name:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER', 'Credit Card Number:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES', 'Credit Card Expiry Date:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER', 'Credit Card Checknumber:');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_CHECKNUMBER_LOCATION', '(located at the back of the credit card)');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER', '* The credit card number must be at least ' . CC_NUMBER_MIN_LENGTH . ' characters.\n');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_MESSAGE', 'There has been an error processing your credit card. Please try again.');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_HASH_MESSAGE', 'Your payment seems to come from other site then 2CheckOut . Please do not continue the checkout procedure AND contact us!');

 

define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR_CURRENCY', 'There has been an error processing your order due to currency conflict between the store and 2Checkout.com. Please contact the store owner!');

define('MODULE_PAYMENT_2CHECKOUT_TEXT_ERROR', 'Credit Card Error!');

 

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION', ' - Prices will be converted to ');

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION2', ' at our exchange rate (');

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION3', ') and the total amount (');

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION4', ') will be sent to the payment gateway in that currency.');

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION5', 'The payment gateway will convert the total amount in the <i> %s </i> as you choosen at their own conversion rate. So please check the total amount at the payment gateway page before order completion.');

define('MODULE_PAYMENT_2CHECKOUT_CURRENCY_CONVERSITION6', ' - <b><FONT class="messageStackWarning"> If 2Checkout.com support the <i> %s </i> currency it will convert the total amount in the <i> %s </i> at their own conversion rate.</FONT></b> So please check the total amount at the payment gateway page before order completion.');

?>

 

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...