Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Need help with payment method


Guest

Recommended Posts

Posted

During the check-out process, under Payment Method, I offer the choice between Credit Card and PayPal. I would like to add text or an image next to both of the payment options. Basically I would want to show it so people know which to choose based on how they are paying:

 

Credit Card (VISA and MasterCard)

Credit Card Owner:

Credit Card Number:

Credit Card Expiry Date:

 

PayPal (AMEX, Discover, eCheck)

 

Can this be done? I can't figure out which file to modify, I think I've search them all a few times. Any help is greatly appreciated.

thank you

Posted

Sure it's do-able

 

just modify the file catalog/checkout_payment.php

 

then you can either a images statically, or create a table and query the image path (more secure, and robust).

 

post question if you have problems

Posted

Great, now that I know that it can be done. How would I go about modifying catalog/checkout_payment.php to do this. I've played around with it, but I keep getting various errors. I'm new at php if you you couldn't tell.

Posted

Did you ever figure out how to make this change. I was trying to find out how to do the same thing; saw your post, but haven't seen a reply as to how. The line that needs edited seems somehow to get created through pixel_trans.gif (??) I also am a php newbie, and sure would like some help on this one.

Posted

I still haven't figured out how to add the text or images. Any help out there? :)

Posted

In your payment modules eg catalog/includes/modules/payment/paypal.php find the following set of code

 

    function selection() {

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

                  'module' => $this->title);

   }

 

and change to the following

 

    function selection() {

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

                  'module' => $this->title,

      'image' => '<img src="images/paypalcards.gif" border="0" align="absmiddle">');

   }

 

where paypalcards.gif is the image of the cards paypal accepts

 

Do the same in the other payment modules you want similar images to appear next to.

 

Then in checkout_payment.php find the following code

 

<?php echo $selection[$i]['module']; ?>

 

and change to

 

<?php echo $selection[$i]['module']; ?> <?php echo $selection[$i]['image']; ?>

 

Back up before you try!

Reddy to Rumble

 

Thank you osCommerce and all who Contribute to her!

Posted

Thanks Reddy. I'm sure this will work for paypal, but what file would you change for the credit card payment method? The code pattern your referencing shows up in cod.php, freecharge.php, paypalipn.php, moneyorder.php, secpay.php, paypal.php and nochex.php, but it does not appear in cc.php.

Posted

Here's the complete cc.php from catalog/includes/modules/payments

 

<?php

/*

 $Id: cc.php,v 1.7 2003/02/10 20:48:40 wilt Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2002 osCommerce



 Released under the GNU General Public License

*/



 class cc {

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



// class constructor

   function cc() {

     global $order;



     $this->code = 'cc';

     $this->title = MODULE_PAYMENT_CC_TEXT_TITLE;

     $this->description = MODULE_PAYMENT_CC_TEXT_DESCRIPTION;

     $this->sort_order = MODULE_PAYMENT_CC_SORT_ORDER;

// BOF: WebMakers.com Added: Free Payments and Shipping

if ( tep_get_free_charger($this->code) ) {

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

}

// EOF: WebMakers.com Added: Free Payments and Shipping

     if ((int)MODULE_PAYMENT_CC_ORDER_STATUS_ID > 0) {

       $this->order_status = MODULE_PAYMENT_CC_ORDER_STATUS_ID;

     }



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

   }



// class methods

   function update_status() {

     global $order;



     if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_CC_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_CC_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() {

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

           '    var cc_owner = document.checkout_payment.cc_owner.value;' . "n" .

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

           '    if (cc_owner == "" || cc_owner.length < ' . CC_OWNER_MIN_LENGTH . ') {' . "n" .

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

           '      error = 1;' . "n" .

           '    }' . "n" .

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

           '      error_message = error_message + "' . MODULE_PAYMENT_CC_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_CC_TEXT_CREDIT_CARD_OWNER,

                                                'field' => tep_draw_input_field('cc_owner', $order->billing['firstname'] . ' ' . $order->billing['lastname'])),

                                          array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_NUMBER,

                                                'field' => tep_draw_input_field('cc_number')),

                                          array('title' => MODULE_PAYMENT_CC_TEXT_CREDIT_CARD_EXPIRES,

                                                'field' => tep_draw_pull_down_menu('cc_expires_month', $expires_month) . ' ' . tep_draw_pull_down_menu('cc_expires_year', $expires_year))));



     return $selection;

   }



   function pre_confirmation_check() {

     global $HTTP_POST_VARS;



     include(DIR_WS_CLASSES . 'cc_validation.php');



     $cc_validation = new cc_validation();

     $result = $cc_validation->validate($HTTP_POST_VARS['cc_number'], $HTTP_POST_VARS['cc_expires_month'], $HTTP_POST_VARS['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) . '&cc_owner=' . urlencode($HTTP_POST_VARS['cc_owner']) . '&cc_expires_month=' . $HTTP_POST_VARS['cc_expires_month'] . '&cc_expires_year=' . $HTTP_POST_VARS['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;

   }



   function confirmation() {

     global $HTTP_POST_VARS;



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

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

                                                   'field' => $HTTP_POST_VARS['cc_owner']),

                                             array('title' => MODULE_PAYMENT_CC_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_CC_TEXT_CREDIT_CARD_EXPIRES,

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



     return $confirmation;

   }



   function process_button() {

     global $HTTP_POST_VARS;



     $process_button_string = tep_draw_hidden_field('cc_owner', $HTTP_POST_VARS['cc_owner']) .

                              tep_draw_hidden_field('cc_expires', $HTTP_POST_VARS['cc_expires_month'] . $HTTP_POST_VARS['cc_expires_year']) .

                              tep_draw_hidden_field('cc_type', $this->cc_card_type) .

                              tep_draw_hidden_field('cc_number', $this->cc_card_number);



     return $process_button_string;

   }



   function before_process() {

     global $HTTP_POST_VARS, $order;



     if ( (defined('MODULE_PAYMENT_CC_EMAIL')) && (tep_validate_email(MODULE_PAYMENT_CC_EMAIL)) ) {

       $len = strlen($HTTP_POST_VARS['cc_number']);



       $this->cc_middle = substr($HTTP_POST_VARS['cc_number'], 4, ($len-8));

       $order->info['cc_number'] = substr($HTTP_POST_VARS['cc_number'], 0, 4) . str_repeat('X', (strlen($HTTP_POST_VARS['cc_number']) - 8)) . substr($HTTP_POST_VARS['cc_number'], -4);

     }

   }



   function after_process() {

     global $insert_id;



     if ( (defined('MODULE_PAYMENT_CC_EMAIL')) && (tep_validate_email(MODULE_PAYMENT_CC_EMAIL)) ) {

       $message = 'Order #' . $insert_id . "nn" . 'Middle: ' . $this->cc_middle . "nn";

       

       tep_mail('', MODULE_PAYMENT_CC_EMAIL, 'Extra Order Info: #' . $insert_id, $message, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

     }

   }



   function get_error() {

     global $HTTP_GET_VARS;



     $error = array('title' => MODULE_PAYMENT_CC_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_CC_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 Credit Card Module', 'MODULE_PAYMENT_CC_STATUS', 'True', 'Do you want to accept credit card 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 ('Split Credit Card E-Mail Address', 'MODULE_PAYMENT_CC_EMAIL', '', 'If an e-mail address is entered, the middle digits of the credit card number will be sent to the e-mail address (the outside digits are stored in the database with the middle digits censored)', '6', '0', 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_CC_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0' , 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_CC_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', '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 ('Set Order Status', 'MODULE_PAYMENT_CC_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'tep_cfg_pull_down_order_statuses(', 'tep_get_order_status_name', now())");

   }



   function remove() {

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

   }



   function keys() {

     return array('MODULE_PAYMENT_CC_STATUS', 'MODULE_PAYMENT_CC_EMAIL', 'MODULE_PAYMENT_CC_ZONE', 'MODULE_PAYMENT_CC_ORDER_STATUS_ID', 'MODULE_PAYMENT_CC_SORT_ORDER');

   }

 }

?>

 

Thanks for the help!

Jim

Posted

Its only slightly different, change

 

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

                        'module' => $this->title,

 

to..........

 

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

                        'module' => $this->title, 

                        'image' => '<img src="images/cards.gif" border="0" align="absmiddle">',

Reddy to Rumble

 

Thank you osCommerce and all who Contribute to her!

Posted

Reddy to Rumble

It works great. Thanks for all you help.

Jim

Archived

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

×
×
  • Create New...