Zen Cart What Payment Gateways Are Best For Zen Cart?

As a Zen Cart store owner, there are a lot of things you need to consider, especially if you are just starting your online business, or even setting up a website for your existing store. Whatever your specific circumstance, however, one of the most important decisions you will make is what payment gateway you will use. Payment gateways are authorized, secure third parties that act as a conduit between you, and whatever payment method your customers use. You will need to choose a payment gateway, and get it working with your Zen Cart store before you can start accepting payments, so this is pretty high-priority.

Not all payment gateways are compatible with Zen Cart. Here are the ones that work natively with Zen Cart:

– Authorize.net AIM (SIM is also supported, but AIM is recommended for its security benefits)
– PayPal Website Payments Standard (IPN)
– PayPal Express Checkout
– PayPal Website Payments Pro
– LinkPoint API
– YourPay API
– C.O.D.
– Check/MoneyOrder

Out of these, we use and recommend Authorize.net AIM. Depending on your unique circumstances, you may need or want to use a different payment gateway, but this is the one you should probably go with if you are unsure.

There are also a lot of addon gateways available in the Free Addons area of the Zen Cart website. Most of these have been added by third party contributors from the Zen Cart community, built to work with many different versions of zen cart. Before you use any of these, be sure to make sure that they are compatible with the version of Zen Cart your store is currently running. It is also a good idea to take a look at their requirements to make sure that you can use them with your current webserver configuration.

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart Customer’s Downloads Did Not Activate

This Zen Cart tutorial is meant to help zen cart users and store owners better understand the process behind the purchase and activation of downloadable products, since it is actually not as straight forward as one might think. It is still a very simple process, but on occasion, you might have that one confused customer who pays for a downloadable product, and does not get access to the activation link immediately afterward.

First of all, it is important for you to know that in zen cart stores that have been set up properly, download links are not made available to your customers until you have received payment for the product. Most payment modules commonly used with zen cart are configured so that new orders which contain downloadable products are automatically marked as ‘Orders Status: Pending’. In a nutshell, this means that your zen cart store will assume that you have not received your payment, and therefore, it should not give out the download link to the customer, until you tell it differently.

After you have verified through your payment gateway that the money has been safely transferred, you can activate the download links for your customer. This is very easy do do. Just log in to your zen cart admin area, and select the correct order. Click on Edit, and scroll down to the bottom of the page. Here, you will find a menu, where you can change the order’s status from ‘pending’ to ‘processing’. This tells your zen cart that you have received your payment, and it is okay to let the customer download the product. They will now be able to do this by navigating to their ‘My Account’ page and selecting the order.

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart Use The Same PayPal Account For Multiple Sites – Part One

Zen Cart provides many different payment options, and still more ways that these options can be configured. One of the most used out of them all is the option to allow customers to pay for items on your site via paypal. If you own multiple zen cart ecommerce stores, however, you may find yourself wondering if you can use one paypal account to accept payments through all of them. The answer to this question is, of course, yes. Even better, it’s not that hard to do.

When you are setting up the PayPal parameters for any specific Zen Cart site, you must provide API credentials for your PayPal account. This applies to Express Checkout, Website Payments Pro, Payments Advanced, Payflow Link, and Payments Pro. In order to connect your paypal account to more than one website, nearly all you need to do is supply the same API credentials to all of the stores you want to accept payments through. Zen Cart will automatically notify PayPal of the address of your store. Then, when a payment is submitted, the correct store will be sent the transaction updates. Each store will only have the orders placed on that store.

The only setup step you need to make is to ensure that the ‘Instant Payment Notification’, or IPN setting is enabled in your PayPal account. You can find it in your paypal profile, under Website Payment Receiving Preferences.

There are still, however, a few adjustments you might want to make to this setup. There are a lot of people who might wonder what to do about specifying the Return URL or Notification URL. This is a simple matter of configuring the URLs to the appropriate address for each of your stores.

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart Disable The Shipping Estimator In The Shopping Cart

Zen Cart natively comes with a lot of cool and useful functionalities enabled. This is one of the things that makes it such a powerful and customizable ecommerce platform. Sometimes, however, these native functionalities can clutter up the layout of a page in your zen cart. If you look at my website, any of my zen cart custom designs, or pre-made templates, then you will see that I favor simple, clean, easy to navigate designs, especially for ecommerce businesses. Aside from being more visually appealing, these kinds of designs can also increase customer conversion rates. Busier, more cluttered designs can confuse visitors to your website, and distract them from your products. In this zen cart tutorial, we will teach you how to turn off one of the less essential features that zen cart provides, in order to offer your customers a cleaner, easier to use design. The feature we will be discussing is the shipping estimator.

The Zen Cart shipping estimator is located in the shopping cart area of your website. In general, this is a useful tool which allows users to view their shipping cost before checkout. With a clean layout in mind, however, it can be done away with quite easily, and this simple change can have a significant, positive impact on the customer’s overall impression of your zen cart store. And we all know how important impressions are to a customer’s confidence in any business they are thinking of buying from, especially online.

To turn the shipping estimator off, log in to your Zen Cart Admin area, and navigate to Configuration –> Shipping/Packaging. Find the field labeled ‘Shipping Estimator Display Settings for Shopping Cart’. Select this field, and simple select ‘Off’. Save your modifications, and go see the change on the front end of your website!

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart Set Up A Table-Based Shipping Method

In Zen Cart, store owners are provided with several various shipping cost calculation methods. One of the more popular of these is the ‘table Rate’ shipping cost estimation method. It’s high popularity can, for the most part, be attributed to it’s flexibility. In this zen cart tutorial, we will explain how the table rate shipping method is used.

The first thing you will need to do is enable the table rate shipping method. To do this, open your zen cart admin, and navigate to Modules –> Shipping. Select the ‘Table Rate’ field, and click ‘edit’ or ‘install’ as the circumstances dictate. Set ‘Enable Table Method’ to ‘true’, and update.

The next step is to input your specifications for how the table rate will function. The first thing you will do is input the shipping cost, which should be based on the total cost/weight of items, as well as the item count. This information should be put into the ‘Shipping Table’ field, and should be formatted along these lines: 25:8.50, 50:5.50

After this, you must select the table method which will be used to determine the parameters for the estimation of the shipping cost. Three options are provided: Weight, price, and item. Then, input the handling fee that will be charged to the customer. If there is none, then set this field to zero. Moving on down the list of fields, the next thing you need to do is set the tax class which will be applied to the shipping fee. After you have selected the appropriate class, go on to the tax basis. This field indicates the basis on which shipping tax will be calculated, and there are three options to choose from.

Finally, select the shipping zone, and set the sort order. Press confirm to save your changes, and you’re done!

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart Payment Without A Paypal Account

Many Zen Cart users set up their stores so they can recieve PayPal Payments Standard from their customers. However, this method of payment does not allow customers to pay using their credit cards without having a paypal account of their own. In this case, if your customer does not already have a paypal account, they will be required to create one before they can complete the checkout process. This is a great inconvenience to shoppers, to the point that they probably won’t return to your store, and may not even bother completing their current purchase. Luckily, this can be remedied fairly easily. In this Zen Cart tutorial, we will teach you how to make it so your customers can buy from you without having a paypal account.

In your PayPal account profile, navigate to ‘Payment Receiving Preferences’, and find the ‘Account Optional’ setting. Set it to ‘on’. This will enable customers to pay for their orders via credit card without a paypal account. It should be noted, however, that this option is not available for all locations. In some locations, or countries, PayPal requires users to have a PayPal account before making a transaction, so if your customer’s IP Address is coming from one of these areas, they will simply have to create a PayPal account before finishing their order.

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Do you want your business to be able to process credit cards, but aren’t sure how to go about it? Or maybe you already have a credit card processing system, but have been dissatisfied with it’s performance, or that of the company it came from. If either of these are the case, contact us about setting you up with a professional, PCI compliant system. You can submit an email through our websites contact form, or at info@picaflor-azul.com.

Zen Cart Disable Purchase of Products Based on Shipping Zone

Your zen cart store sells a wide variety of products. Some of these products you do not want to ship to certain zones. This Easy Help Zen Cart Tutorial swill show you how to disable the purchase of certain products based on the shipping zone of the purchaser.

In your favorite plain text editor open the includes/modules/shipping/zones.php file. This is a zen cart core file so be sure to back it up and make a note that you have changed the file for future upgrades.

Find this:


     $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $shipping_method,
                                                     'cost' => $shipping_cost)));

Change it to:


// check cart for Zone 2
$chk_cat = 0;
$chk_cat += $_SESSION['cart']->in_cart_check('products_id','115');
$chk_cat += $_SESSION['cart']->in_cart_check('products_id','112');
echo '$dest_zone: ' . $dest_zone . ' $chk_cat: ' . $chk_cat . '<br />';
if ($dest_zone == 2 and $chk_cat > 0) {
  echo '<br />Products blocked in cart! ' . $chk_cat . '<br />';
} else {
      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $shipping_method,
                                                     'cost' => $shipping_cost)));
}

      if ($this->tax_class > 0) {

Now, Zone 2 will not display if products_id 115 or 112 are in the cart.

If you need additional Products, just add another line, with the products_id:


$chk_cat += $_SESSION['cart']->in_cart_check('products_id','XXX');

Where XXX is the products_id.

If you need help with your zen cart web site please contact us for a quote.

Picaflor Azul specializes in responsive zen cart design. Contact us to convert your current zen cart to a responsive design, or to have a fantastic new custom design made just for your business.

zen cart plus picaflor azul equals success

Zen Cart Add Shipping Weight to Always Free Shipping Items for Certain Zones

In zen cart, products marked as “Always Free Shipping” are free shipping for everyone, regardless of the Zone set on the FREE SHIPPING! freeshipper module unless you add custom php code to manage which zones get free shipping. Say, for example, that you have a zone for the lower 48 states. Someone from Alaska purchases a “Always Free Shipping” item. At checkout the item will have a weight of 0 so the shipping amount will be $0 or very low depending on your shipping settings. This Easy Help Zen Cart Tutorial will show you how to add some custom php code that will allow you have the “Always Free Shipping” items set as free shipping to just one zone with anyone outside of the zone seeing regular calculated shipping prices.

In your favorite plain text editor open the includes/classes/shipping.php file. This is a zen cart core file so be sure to back it up and make a note that you have changed this file for future upgrades.

Find this:


function calculate_boxes_weight_and_tare() {
    global $total_weight, $shipping_weight, $shipping_quoted, $shipping_num_boxes;

Immediately after, add this:


// bof: allow 1 zone only for Always Free Shipping
// add zone to FREE SHIPPING! freeshipper
    global $db, $order, $cart;
        $valid_zone_id = 21;
        $check_flag = false;
http://www.zen-cart.com/showthread.php?214171-Shipping-Weight-on-Free-Shipping-Items

        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . $valid_zone_id . "' and zone_country_id = '" . $order->delivery['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->delivery['zone_id']) {
            $check_flag = true;
            break;
          }
          $check->MoveNext();
        }

        if ($check_flag == false) {
          $total_weight += $_SESSION['cart']->free_shipping_weight;
        }
// bof: allow 1 zone only for Always Free Shipping

So you have this:


  function calculate_boxes_weight_and_tare() {
    global $total_weight, $shipping_weight, $shipping_quoted, $shipping_num_boxes;

// bof: allow 1 zone only for Always Free Shipping
// add zone to FREE SHIPPING! freeshipper
    global $db, $order, $cart;
        MODULE_SHIPPING_FREESHIPPER_ZONE;
        $check_flag = false;
        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . $valid_zone_id . "' and zone_country_id = '" . $order->delivery['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->delivery['zone_id']) {
            $check_flag = true;
            break;
          }
          $check->MoveNext();
        }

        if ($check_flag == false) {
          $total_weight += $_SESSION['cart']->free_shipping_weight;
        }
// bof: allow 1 zone only for Always Free Shipping

    $this->abort_legacy_calculations = FALSE;
    $this->notify('NOTIFY_SHIPPING_MODULE_PRE_CALCULATE_BOXES_AND_TARE');
    if ($this->abort_legacy_calculations) return;

For UPS shipping, edit the file includes/modules/shipping/ups.php.

Find this:


 if (zen_get_shipping_enabled($this->code)) {
      $this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false);
    }

Change it to this:


Code:
    // disable only when entire cart is free shipping
// bof: disabled for Always Free Shipping 1 zone to always show additional methods
//    if (zen_get_shipping_enabled($this->code)) {
      $this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false);
//    }
// eof: disabled for Always Free Shipping 1 zone to always show additional methods

If you need help with your zen cart web site please contact us for a quote.

Picaflor Azul specializes in responsive zen cart design. Contact us to convert your current zen cart to a responsive design, or to have a fantastic new custom design made just for your business.

zen cart plus picaflor azul equals success

Zen Cart How to Disable P O Box Addresses for the UPS Shipping Module

If your zen cart uses the UPS shipping module but you do not want your customers to be able to enter a PO Box address, you will have to add some custom code to your zen cart UPS shipping module. This Easy Help Zen Cart Tutorial will show you how to add custom php code to your UPS module so that your customers can not enter PO Box addresses.

In your favorite plain text editor open the includes/modules/shipping/ups.php file. Be sure to back up this file in case you make a mistake and need to restore the back up to your zen cart in a hurry.

Find this:


      // disable only when entire cart is free shipping
      if (zen_get_shipping_enabled($this->code)) {
        $this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false);
      }

Immediately after, add this:


// bof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb']
if (!IS_ADMIN_FLAG) {
global $order;
$street_address = $order->delivery['street_address'];
// BEGIN PO Box Ban street address
    if ( preg_match('/PO BOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/BOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/POBOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/P\.O\./si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/P\.O/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/PO\./si', $street_address) ) {
      $error = true;
    }

$suburb = $order->delivery['suburb'];
// BEGIN PO Box Ban suburb
    if ( preg_match('/PO BOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/BOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/POBOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/P\.O\./si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/P\.O/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/PO\./si', $suburb) ) {
      $error = true;
    }

    if ($error) {
      $this->enabled = false;
    }
}
// eof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb']

So you should have this:


      // disable only when entire cart is free shipping
      if (zen_get_shipping_enabled($this->code)) {
        $this->enabled = ((MODULE_SHIPPING_UPS_STATUS == 'True') ? true : false);
      }

// bof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb']
if (!IS_ADMIN_FLAG) {
global $order;
$street_address = $order->delivery['street_address'];
// BEGIN PO Box Ban street address
    if ( preg_match('/PO BOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/BOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/POBOX/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/P\.O\./si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/P\.O/si', $street_address) ) {
      $error = true;
    } else if ( preg_match('/PO\./si', $street_address) ) {
      $error = true;
    }

$suburb = $order->delivery['suburb'];
// BEGIN PO Box Ban suburb
    if ( preg_match('/PO BOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/BOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/POBOX/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/P\.O\./si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/P\.O/si', $suburb) ) {
      $error = true;
    } else if ( preg_match('/PO\./si', $suburb) ) {
      $error = true;
    }

    if ($error) {
      $this->enabled = false;
    }
}
// eof: block PO BOX addresses in $order->delivery['street_address'] or $order->delivery['suburb']

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

Save your changes and upload the file to your server making sure that you overwrite the file already on your server. Test by trying to checkout in your zen cart using the UPS shipping module and a PO Box shipping address.

If you need help with your zen cart web site please contact us for a quote.

zen cart plus picaflor azul equals success

Zen Cart How to Set Free Site Wide Shipping for Certain Customers

You have a zen cart business that uses group discounts for special customer groups. One of your customer groups is a group for resellers. This group gets free shipping on all items in your store. This Easy Help Zen Cart Tutorial will show you how to add custom php code to your shipping module file to give site wide free shipping for one customer group.

In your favorite plain text editor, open the includes/modules/shipping/freeoptions.php file. Be sure to back this file up and make a note that you have edited it for future upgrades since it is a zen cart core file.

Find this:


   // disable only when entire cart is free shipping
      if (zen_get_shipping_enabled($this->code)) {
          $this->enabled = ((MODULE_SHIPPING_FREEOPTIONS_STATUS == 'True') ? true : false);
      }

Add this code on the next line:


// bof: offer only to customers in resellers group
  if (!IS_ADMIN_FLAG) {
    if ($_SESSION['customer_id'] > 0) {
      global $db;
      $group_id_resellers = 1;
      $sql = "SELECT customers_group_pricing from " . TABLE_CUSTOMERS . " WHERE customers_id = '" . $_SESSION['customer_id'] . "'";
      $chk_group_id = $db->Execute($sql);
      if ($chk_group_id->fields['customers_group_pricing'] != $group_id_resellers) {
        $this->enabled = false;
      }
    } else {
      $this->enabled = false;
    }
  }
// eof: offer only to customers in resellers group

So you have this:


      // disable only when entire cart is free shipping
      if (zen_get_shipping_enabled($this->code)) {
          $this->enabled = ((MODULE_SHIPPING_FREEOPTIONS_STATUS == 'True') ? true : false);
      }

// bof: offer only to customers in resellers group
  if (!IS_ADMIN_FLAG) {
    if ($_SESSION['customer_id'] > 0) {
      global $db;
      $group_id_resellers = 1;
      $sql = "SELECT customers_group_pricing from " . TABLE_CUSTOMERS . " WHERE customers_id = '" . $_SESSION['customer_id'] . "'";
      $chk_group_id = $db->Execute($sql);
      if ($chk_group_id->fields['customers_group_pricing'] != $group_id_resellers) {
        $this->enabled = false;
      }
    } else {
      $this->enabled = false;
    }
  }
// eof: offer only to customers in resellers group

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

Save your changes and upload the files to your server making sure that you overwrite the files already on your server.

If you need help with your zen cart web siteplease contact us for a quote.

zen cart plus picaflor azul equals success