Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Help with a specific contribution.


Guest

Recommended Posts

Payment Surcharge

 

This is the contribution i am refering to.

 

Has two files to upload.

 

<?php

/*

  $Id: ot_surcharge.php,v 1.0 2003/06/19 01:13:43 hpdl wib $

 

  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com

 

  Copyright © 2002 osCommerce

 

  Released under the GNU General Public License

*/

 

  class ot_surcharge {

    var $title, $output;

 

    function ot_surcharge() {

      $this->code = 'ot_surcharge';

      $this->title = MODULE_PAYMENT_TITLE;

      $this->description = MODULE_PAYMENT_DESCRIPTION;

      $this->enabled = MODULE_PAYMENT_STATUS;

      $this->sort_order = MODULE_PAYMENT_SORT_ORDER;

      $this->include_shipping = MODULE_PAYMENT_INC_SHIPPING;

      $this->include_tax = MODULE_PAYMENT_INC_TAX;

      $this->percentage = MODULE_PAYMENT_PERCENTAGE;

      $this->minimum = MODULE_PAYMENT_MINIMUM;

      $this->calculate_tax = MODULE_PAYMENT_CALC_TAX;

//      $this->credit_class = true;

      $this->output = array();

    }

 

    function process() {

    global $order, $currencies;

 

      $od_amount = $this->calculate_fee($this->get_order_total());

      if ($od_amount>0) {

      $this->addition = $od_amount;

      $this->output[] = array('title' => $this->title . ':',

                              'text' => '<b>' . $currencies->format($od_amount) . '</b>',

                              'value' => $od_amount);

    $order->info['total'] = $order->info['total'] + $od_amount;

}

    }

 

 

  function calculate_fee($amount) {

    global $order, $customer_id, $payment;

    $od_amount=0;

    $od_pc = $this->percentage; //this is percentage

    $do = false;

    if ($amount > $this->minimum) {

    $table = split("[,]" , MODULE_PAYMENT_TYPE);

    for ($i = 0; $i < count($table); $i++) {

          if ($payment == $table[$i]) $do = true;

        }

    if ($do) {

// Calculate tax reduction if necessary

    if($this->calculate_tax == 'true') {

// Calculate main tax reduction

      $tod_amount = round($order->info['tax']*10)/10*$od_pc/100;

      $order->info['tax'] = $order->info['tax'] + $tod_amount;

// Calculate tax group deductions

      reset($order->info['tax_groups']);

      while (list($key, $value) = each($order->info['tax_groups'])) {

        $god_amount = round($value*10)/10*$od_pc/100;

        $order->info['tax_groups'][$key] = $order->info['tax_groups'][$key] + $god_amount;

      }

    }

    $od_amount = round($amount*10)/10*$od_pc/100 + .35;//percentage plus base fee

    $od_amount = $od_amount + $tod_amount;

    }

    }

    return $od_amount;

  }

 

 

  function get_order_total() {

    global  $order, $cart;

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

// Check if gift voucher is in cart and adjust total

    $products = $cart->get_products();

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

      $t_prid = tep_get_prid($products[$i]['id']);

      $gv_query = tep_db_query("select products_price, products_tax_class_id, products_model from " .

 

TABLE_PRODUCTS . " where products_id = '" . $t_prid . "'");

      $gv_result = tep_db_fetch_array($gv_query);

      if (ereg('^GIFT', addslashes($gv_result['products_model']))) {

        $qty = $cart->get_quantity($t_prid);

        $products_tax = tep_get_tax_rate($gv_result['products_tax_class_id']);

        if ($this->include_tax =='false') {

          $gv_amount = $gv_result['products_price'] * $qty;

        } else {

          $gv_amount = ($gv_result['products_price'] + tep_calculate_tax($gv_result

 

['products_price'],$products_tax)) * $qty;

        }

        $order_total=$order_total - $gv_amount;

      }

    }

    if ($this->include_tax == 'false') $order_total=$order_total-$order->info['tax'];

    if ($this->include_shipping == 'false') $order_total=$order_total-$order->info['shipping_cost'];

    return $order_total;

  }

 

 

    function check() {

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

        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where

 

configuration_key = 'MODULE_PAYMENT_STATUS'");

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

      }

 

      return $this->check;

    }

 

    function keys() {

      return array('MODULE_PAYMENT_STATUS',

 

'MODULE_PAYMENT_SORT_ORDER','MODULE_PAYMENT_PERCENTAGE','MODULE_PAYMENT_MINIMUM', 'MODULE_PAYMENT_TYPE',

 

'MODULE_PAYMENT_INC_SHIPPING', 'MODULE_PAYMENT_INC_TAX', 'MODULE_PAYMENT_CALC_TAX');

    }

 

    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 ('Display Total', 'MODULE_PAYMENT_STATUS', 'true', 'Do you want to enable the Order

 

Payment Fee?', '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

 

('Sort Order', 'MODULE_PAYMENT_SORT_ORDER', '888', 'Sort order of display.', '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 ('Include Shipping', 'MODULE_PAYMENT_INC_SHIPPING', 'true', 'Include Shipping in

 

calculation', '6', '5', '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, set_function

 

,date_added) values ('Include Tax', 'MODULE_PAYMENT_INC_TAX', 'true', 'Include Tax in calculation.',

 

'6', '6','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

 

('Surcharge Percentage', 'MODULE_PAYMENT_PERCENTAGE', '3', 'Amount of Surcharge(percentage).', '6', '7',

 

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 ('Calculate Tax', 'MODULE_PAYMENT_CALC_TAX', 'false', 'Re-calculate Tax on

 

surcharged amount.', '6', '5','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

 

('Minimum Amount', 'MODULE_PAYMENT_MINIMUM', '', 'Minimum order before fee', '6', '2', now())");

      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key,

 

configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values

 

('Payment Type', 'MODULE_PAYMENT_TYPE', 'moneyorder', 'Payment Type to pay surcharge', '6', '2', 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 .

 

")");

    }

  }

?>

 

AND

 

<?php

 

/*

 

  $Id: ot_surcharge.php,v 1.0 2003/6/19 23:09:49 wib Exp $

 

 

 

  osCommerce, Open Source E-Commerce Solutions

 

  http://www.oscommerce.com

 

 

 

  Copyright © 2002 osCommerce

 

 

 

  Released under the GNU General Public License

 

*/

 

 

 

  define('MODULE_PAYMENT_TITLE', 'Payment Type Surcharge');

 

  define('MODULE_PAYMENT_DESCRIPTION', 'Payment Type Fee');

 

  define('SHIPPING_NOT_INCLUDED', ' [shipping not included]');

 

  define('TAX_NOT_INCLUDED', ' [Tax not included]');

 

?>

 

Seems that the code is not correctly adding hte Payment Surcharge Fee. I have set up the admin as stated in the readme.

 

Goes like this, I have free shipping on orders over $49.99. Fine, ok; that works. But i needed to add a handeling fee to make up for some of the lost shipping costs. So i setup the payment fee to take over on order over $49.99.

 

So at final "confirm Order" it shows the payment fee, but the fe is not correctly calculated. Its always off by a fw cents.

 

This only happens when trying to purchase a sale over $49.99. Sales below that price go throught just fine.

 

I get this error

There has been an error processing your credit card, please try again : CC-4019: Total charge amount did not match sum of the subtotal, shipping, tax and vattax amounts.

 

I have looked for other discussions on this issue with no prevail.

 

Someone please help.

 

If you are so kind; go to the SITE and fill up your basket. To check out use credit card # 4111111111111111 and expire date 05 05.

 

 

Thank you so much.

 

I am not a programmer and really need a hand with this one.

 

Ben

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...