Hello dropbop,

Have you tried this:
Code:
 zen_draw_hidden_field('ap_shippingcharges', number_format($order->info['shipping_cost'], 2, '.', '')) .
I've made some changes to alertpay.php in includes/modules/payment

No error with shipping when it is zero.
Tax shows
Item name shows
Payment status true / false shows in admin: You can know choose false / true
No more problem with Payment Zone

Problem: When using discount coupon. Discount is not taken off.

You can test this code for: includes/modules/payment/alertpay.php

Code:
<?php
/*
  $Id: alertpay.php,v 1.2 2010/07/22
  
  Released under the GNU General Public License
 
  Alertpay module Created By Gray Appleton
  This update by Peter Humphrey
   
  This free contribution made by request.
  If you have found this script usefull a small
  donation by Alertpay to applehobbys################## 
  would be greatly appreciated.
    
*/
						   	
								
							

  class alertpay {

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

// class constructor 
    function alertpay() { 
      global $order; 
      $this->code = 'alertpay'; 
      $this->title = MODULE_PAYMENT_ALERTPAY_TEXT_TITLE; 
      $this->description = MODULE_PAYMENT_ALERTPAY_TEXT_DESCRIPTION; 
      $this->sort_order = MODULE_PAYMENT_ALERTPAY_SORT_ORDER; 
      $this->enabled = ((MODULE_PAYMENT_ALERTPAY_STATUS == 'True') ? true : false); 

      if ((int)MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID > 0) { 
        $this->order_status = MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID; 
      } 
      $this->form_action_url = 'https://www.alertpay.com/PayProcess.aspx'; 

      if (is_object($order)) $this->update_status(); 
    }  
    
 function update_status() {
      global $db;
      global $order;

      if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_ALERTPAY_ZONE > 0) ) {
        $check_flag = false;
        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_ALERTPAY_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id");
        while (!$check->EOF) {
          if ($check->fields['zone_id'] < 1) {
            $check_flag = true;
            break;
          } elseif ($check->fields['zone_id'] == $order->billing['zone_id']) {
            $check_flag = true;
            break;
          }
          $check->MoveNext();
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
    }

// class methods
    function javascript_validation() {
      return false;
    }

    function selection() {
      return array('id' => $this->code,
                   'module' => $this->title);
    }

    function pre_confirmation_check() {
      return false;
    }

    function confirmation() {
      return false;
    }

    function process_button() {
      global $db, $order, $currencies;
      
      //alertpay accepted currency
      $alert_cur = array('CAD', 'EUR', 'GBP', 'USD', 'AUD' , 'SEK' , 'CHF' , 'HKD' , 'NZD' , 'NOK' , 'ZAR' , 'SGD'  );
      $CUR = $order->info['currency'];
      if (!in_array($CUR,$alert_cur)) {
        $CUR = 'CAD';
      }
	  
	     //to show complete list of product on alertpay payment gateway page
	   for($i=0;$i<count($order->products);$i++)
		{
			if($i > 0 ) $postfix = "_".$i;			
			$hiddenBox .= zen_draw_hidden_field('ap_itemname'.$postfix, $order->products[$i]['name']) .
			zen_draw_hidden_field('ap_amount'.$postfix, $order->products[$i]['price']) .
			zen_draw_hidden_field('ap_quantity'.$postfix, $order->products[$i]['qty']);
		}
    
	  
    
       $process_button_string = zen_draw_hidden_field('ap_merchant', MODULE_PAYMENT_ALERTPAY_ACCOUNT) .
                               zen_draw_hidden_field('ap_currency', $CUR) .
                             zen_draw_hidden_field('ap_taxamount', number_format($order->info['tax'], 2, '.', '')) .
                               zen_draw_hidden_field('ap_purchasetype', 'Item') .
		
		// prefills the customers details in alertpay payment page					   
							   
							zen_draw_hidden_field('ap_fname', $order->customer['firstname']) .	 
		                    zen_draw_hidden_field('ap_lname', $order->customer['lastname']) .	   
							zen_draw_hidden_field('ap_contactemail', $order->customer['email_address']) .	   
							zen_draw_hidden_field('ap_zippostalcode', $order->billing['postcode']) .	
							zen_draw_hidden_field('ap_city', $order->billing['city']) .
							zen_draw_hidden_field('ap_country', $order->billing['country']) .
							zen_draw_hidden_field('ap_stateprovince', $order->billing['state']) .
							zen_draw_hidden_field('ap_addressline1', $order->billing['street_address']) .
							zen_draw_hidden_field('ap_addressline2', $order->billing['suburb']) .
							zen_draw_hidden_field('ap_contactphone', $order->customer['telephone']) .
							
		// end prefill data		
						
						$hiddenBox .
								   
		//pass shipping information to alertpay payment gateway
			zen_draw_hidden_field('ap_shippingcharges', number_format($order->info['shipping_cost'], 2, '.', '')) .
				
							
							   
                               zen_draw_hidden_field('ap_returnurl', zen_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')) .
                               zen_draw_hidden_field('ap_cancelurl', zen_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
							   

      return $process_button_string;
    }

    function before_process() {
      return false;
    }

    function after_process() {
      return false;
    }

    function output_error() {
      return false;
    }

    function check() {
      global $db;
      if (!isset($this->_check)) {
        $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_PAYMENT_ALERTPAY_STATUS'");
        $this->_check = $check_query->RecordCount();
      }
      return $this->_check;
    }

    function install() {
      global $db;
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Alertpay Module', 'MODULE_PAYMENT_ALERTPAY_STATUS', 'True', 'Do you want to accept Alertpay payments?', '6', '3', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now());");
      $db->Execute("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_ALERTPAY_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('General product description.', 'MODULE_PAYMENT_ALERTPAY_PRODUCT_TYPE', '', 'Needed to complete Alertpay process.', '6', '5', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Alertpay Account Number', 'MODULE_PAYMENT_ALERTPAY_ACCOUNT', '[email protected]', 'Your Alertpay account number to which the payment is to be made.', '6', '4', now())");
      $db->Execute("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_ALERTPAY_ZONE', '0', 'If a zone is selected, only enable this payment method for that zone.', '6', '2', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
      $db->Execute("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_ALERTPAY_ORDER_STATUS_ID', '0', 'Set the status of orders made with this payment module to this value', '6', '0', 'zen_cfg_pull_down_order_statuses(', 'zen_get_order_status_name', now())");
    }

    function remove() {
      global $db;
      $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
      return array('MODULE_PAYMENT_ALERTPAY_STATUS', 'MODULE_PAYMENT_ALERTPAY_SORT_ORDER', 'MODULE_PAYMENT_ALERTPAY_PRODUCT_TYPE', 'MODULE_PAYMENT_ALERTPAY_ACCOUNT', 'MODULE_PAYMENT_ALERTPAY_ZONE', 'MODULE_PAYMENT_ALERTPAY_ORDER_STATUS_ID');
    }
  }
?>