Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Non SSL with 2checkout and new Checkout procedure


Mr. Ree

Recommended Posts

Posted

Greets all.

 

I managed to get the new checkout working with may pre WWII modified store. I have lost some sales due to the need for the customer to enter a CC # in my non-secure page to pass to 2checkout .com.

 

This is the pm2checkout.php file that I ended up with and works for my site. It replaces the entire content of catalog/includes/modules/pm2checkout.php. It passes the customers name to 2checkout and then 2checkout asks for the CC#, experation and 3 digits at that point.

 

All always kids, BACKUP the original, and always practice safe sex. :lol:

 

<?php

/*

 $Id: pm2checkout.php,v 1.13 2002/11/01 05:03:50 hpdl Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2002 osCommerce



 Released under the GNU General Public License

*/



 class pm2checkout {

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



// class constructor

   function pm2checkout() {

     global $HTTP_POST_VARS;



     $this->code = 'pm2checkout';

     $this->title = MODULE_PAYMENT_2CHECKOUT_TEXT_TITLE;

     $this->description = MODULE_PAYMENT_2CHECKOUT_TEXT_DESCRIPTION;

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



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

   }



// class methods

   function javascript_validation() {

     $js = '  if (payment_value == "' . $this->code . '") {' . "n" .

           '    var cc_number = document.checkout_payment.pm_2checkout_cc_number.value;' . "n" .

           '    if (cc_number == "" || cc_number.length < ' . CC_NUMBER_MIN_LENGTH . ') {' . "n" .

           '      error_message = error_message + "' . MODULE_PAYMENT_2CHECKOUT_TEXT_JS_CC_NUMBER . '";' . "n" .

           '      error = 1;' . "n" .

           '    }' . "n" .

           '  }' . "n";



     return $js;

   }



   function selection() {

     global $order;



     for ($i=1; $i < 13; $i++) {

       $expires_month[] = array('id' => sprintf('%02d', $i), 'text' => strftime('%B',mktime(0,0,0,$i,1,2000)));

     }



     $today = getdate(); 

     for ($i=$today['year']; $i < $today['year']+10; $i++) {

       $expires_year[] = array('id' => strftime('%y',mktime(0,0,0,1,1,$i)), 'text' => strftime('%Y',mktime(0,0,0,1,1,$i)));

     }



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

                        'module' => $this->title,

                        'fields' => array(array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_FIRST_NAME,

                                                'field' => tep_draw_input_field('pm_2checkout_cc_owner_firstname', $order->billing['firstname'])),

                                          array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER_LAST_NAME,

                                                'field' => tep_draw_input_field('pm_2checkout_cc_owner_lastname', $order->billing['lastname']))));

     return $selection;

   }



   function pre_confirmation_check() {

     global $HTTP_POST_VARS;

/* Remove pre confirmation checks 

     include(DIR_WS_CLASSES . 'cc_validation.php');



     $cc_validation = new cc_validation();

     $result = $cc_validation->validate($HTTP_POST_VARS['pm_2checkout_cc_number'], $HTTP_POST_VARS['pm_2checkout_cc_expires_month'], $HTTP_POST_VARS['pm_2checkout_cc_expires_year']);



     $error = '';

     switch ($result) {

       case -1:

         $error = sprintf(TEXT_CCVAL_ERROR_UNKNOWN_CARD, substr($cc_validation->cc_number, 0, 4));

         break;

       case -2:

       case -3:

       case -4:

         $error = TEXT_CCVAL_ERROR_INVALID_DATE;

         break;

       case false:

         $error = TEXT_CCVAL_ERROR_INVALID_NUMBER;

         break;



     }



     if ( ($result == false) || ($result < 1) ) {

       $payment_error_return = 'payment_error=' . $this->code . '&error=' . urlencode($error) . '&pm_2checkout_cc_owner_firstname=' . urlencode($HTTP_POST_VARS['pm_2checkout_cc_owner_firstname']) . '&pm_2checkout_cc_owner_lastname=' . urlencode($HTTP_POST_VARS['pm_2checkout_cc_owner_lastname']) . '&pm_2checkout_cc_expires_month=' . $HTTP_POST_VARS['pm_2checkout_cc_expires_month'] . '&pm_2checkout_cc_expires_year=' . $HTTP_POST_VARS['pm_2checkout_cc_expires_year'];



       tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, $payment_error_return, 'SSL', true, false));

     }



     $this->cc_card_type = $cc_validation->cc_type;

     $this->cc_card_number = $cc_validation->cc_number;

     $this->cc_expiry_month = $cc_validation->cc_expiry_month;

     $this->cc_expiry_year = $cc_validation->cc_expiry_year;

   }

*/

}



   function confirmation() {

     global $HTTP_POST_VARS;

/*

     $confirmation = array('title' => $this->title . ': ' . $this->cc_card_type,

                           'fields' => array(array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_OWNER,

                                                   'field' => $HTTP_POST_VARS['pm_2checkout_cc_owner_firstname'] . ' ' . $HTTP_POST_VARS['pm_2checkout_cc_owner_lastname']),

                                             array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_NUMBER,

                                                   'field' => substr($this->cc_card_number, 0, 4) . str_repeat('X', (strlen($this->cc_card_number) - 8)) . substr($this->cc_card_number, -4)),

                                             array('title' => MODULE_PAYMENT_2CHECKOUT_TEXT_CREDIT_CARD_EXPIRES,

                                                   'field' => strftime('%B, %Y', mktime(0,0,0,$HTTP_POST_VARS['pm_2checkout_cc_expires_month'], 1, '20' . $HTTP_POST_VARS['pm_2checkout_cc_expires_year'])))));



     return $confirmation;

   }

*/}



   function process_button() {

     global $HTTP_POST_VARS, $order;



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

                              tep_draw_hidden_field('x_amount', number_format($order->info['total'], 2)) .

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

                              tep_draw_hidden_field('x_test_request', ((MODULE_PAYMENT_2CHECKOUT_TESTMODE == 'Test') ? 'Y' : 'N')) .

                              //tep_draw_hidden_field('x_card_num', $this->cc_card_number) .

                              //tep_draw_hidden_field('cvv', $HTTP_POST_VARS['pm_2checkout_cc_cvv']) .

                              //tep_draw_hidden_field('x_exp_date', $this->cc_expiry_month . substr($this->cc_expiry_year, -2)) .

                              tep_draw_hidden_field('x_first_name', $HTTP_POST_VARS['pm_2checkout_cc_owner_firstname']) .

                              tep_draw_hidden_field('x_last_name', $HTTP_POST_VARS['pm_2checkout_cc_owner_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'));



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

     }

   }



   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', '0', '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', '0', 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', 'Test', 'Transaction mode used for the 2Checkout service', '6', '0', 'tep_cfg_select_option(array('Test', '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', '0', 'tep_cfg_select_option(array('True', 'False'), ', now())");

   }



   function remove() {

     $keys = '';

     $keys_array = $this->keys();

     for ($i=0; $i<sizeof($keys_array); $i++) {

       $keys .= "'" . $keys_array[$i] . "',";

     }

     $keys = substr($keys, 0, -1);



     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in (" . $keys . ")");

   }



   function keys() {

     return array('MODULE_PAYMENT_2CHECKOUT_STATUS', 'MODULE_PAYMENT_2CHECKOUT_LOGIN', 'MODULE_PAYMENT_2CHECKOUT_TESTMODE', 'MODULE_PAYMENT_2CHECKOUT_EMAIL_MERCHANT');

   }

 }

?>

 

Later,

 

Mr. Ree

Mr. Ree

How to find answers to OSC Common Questions

1. Look at http://wiki.oscommerce.com

2. Search http://www.oscommerce.com/forums/

3. Post a request in http://www.oscommerce.com/forums/

  • 5 months later...
Posted

Hi,

 

I think I might want to use 2co with no ssl. :)

Mr. Ree, Could you give me some live sample shop who use the above mod?

I go to puretexan.com, but seem the mod does not implemented there.

Please advice.

Posted

Hi Imlek,

 

You are correct about not using that mod any longer, that post was from November. 8)

 

Soon after I got my own SSL and watched my sales increase drastically.

 

I did that because 2CO sucks, terrible support, withheld funds, had no clue what they were doing. Maybe it got better since then but I doubt it. YMMV. I walked away from the rest of the term I had paid for and it was worth it.

 

Do your self a favor, get an SSL cert for your site. Not only does it make life a lot easier and cost less in the long run, but gives a more professional look to your store and gives your clients more security. Even though I did the SSL their are still clients that have a phobia about entering their CC # in a web browser. So they call me and I do it for them. :P

 

Get the money is the name of the game, if you can't go the $100 or so for the SSL use paypal and rethink the capital needed to really be in business.

 

Best of luck to you!

Mr. Ree

How to find answers to OSC Common Questions

1. Look at http://wiki.oscommerce.com

2. Search http://www.oscommerce.com/forums/

3. Post a request in http://www.oscommerce.com/forums/

Posted

I use the 2Checkout module without the creditcard information on my websites. http://yourbasketstore.com is using the module without any problem. No SSL is needed!

 

Thomas

 

Hi,

 

I think I might want to use 2co with no ssl. :)

Mr. Ree, Could you give me some live sample shop who use the above mod?

I go to puretexan.com, but seem the mod does not implemented there.

Please advice.

Posted

But do the clients have to input the credit card number on a page without the Gold Lock in the corner?

 

That was the resistance I encountered.

 

The CVS for 2checkout may not require that now. I have not checked.

Mr. Ree

How to find answers to OSC Common Questions

1. Look at http://wiki.oscommerce.com

2. Search http://www.oscommerce.com/forums/

3. Post a request in http://www.oscommerce.com/forums/

Posted
I use the 2Checkout module without the creditcard information on my websites. http://yourbasketstore.com is using the module without any problem. No SSL is needed!

 

Thomas

 

Hi,

 

I think I might want to use 2co with no ssl. :)

Mr. Ree, Could you give me some live sample shop who use the above mod?

I go to puretexan.com, but seem the mod does not implemented there.

Please advice.

 

But what about the customer information (name, address, email, etc) that is stored in your database ? Those pages are normally SSL'd...its one extra feature that if not there might drive away your next customer.

Posted
But what about the customer information (name, address, email, etc) that is stored in your database...

 

I suppose that since a person can be pretty easily looked up on the net that is not as big an issue to some shoppers, but putting the credit card number is. I reserve the right to be wrong and I probably am.

 

Since we advertise in a few magazines, we get loads of calls from folks wanting to place orders because they do not even have internet. ;-) Others say they use it for email but would never buy anything over the net. These are normally older customers. We take them any way we can get them.

Mr. Ree

How to find answers to OSC Common Questions

1. Look at http://wiki.oscommerce.com

2. Search http://www.oscommerce.com/forums/

3. Post a request in http://www.oscommerce.com/forums/

Posted

Below is the module for 2Checkout without the credit card

 

Thomas

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

pm2checkout http://www.oscommerce.com/community/contributions,904

 

Mod to take out the credit card details for the 2checkout payment gateway

 

If you have a look at the files then it should be easy enough to do the changes for other gateways

 

This mod works for the latest snapshot catalog-20030119

 

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

 

But what about the customer information (name, address, email, etc) that is stored in your database...

 

I suppose that since a person can be pretty easily looked up on the net that is not as big an issue to some shoppers, but putting the credit card number is. I reserve the right to be wrong and I probably am.

 

Since we advertise in a few magazines, we get loads of calls from folks wanting to place orders because they do not even have internet. ;-) Others say they use it for email but would never buy anything over the net. These are normally older customers. We take them any way we can get them.

Posted

I use 2CHECKOUT but it show wrong price, when i use my own currencies as default, all the price come up too 2CHECKOUT in $ is wrong.

 

What can i do?

 

The price show 7 times more then it should be, this is because my default currencies is in Nkr and 1$ = 7Nkr

 

Where is the code too change so it not will multible X7 all total from my site too 2CHECKOUT?

Archived

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

×
×
  • Create New...