Call us Toll-Free:
1-800-218-1525
Live ChatEmail us

Authorize.net is Down

Adrian Singer, July 3    --    Filed under Get Online
Authorize.net, the largest payment gateway in the US, lost power to their Seattle data center early this morning.

SJC data center cannot handle the load and as a result, all payments are declining

Twitter is full with users reporting Authorize.net outages:



Expected resolution time is 2 hours.

If you're using the SPI shopping cart and have defined more than a single payment gateway, the system will automatically divert charges to your secondary payment gateway.

Otherwise, if you only have Authorize.net, contact your SPI account manager and we'll instruct you how to easily resubmit all declines once Authorize.net is back online.

-

This outage is the third major outage this week and once again goes to show the importance of multihomed hosting.

Rackspace is down... Multihomed hosting rulez

Adrian Singer, June 29    --    Filed under Get Online
Rackspace, one of the largest tier-1 hosting providers, is down today, affecting tens of thousands of websites, including some celebrity sites like Justin Timberlake and many others...



Here at SPI, we believe in multi-homed hosting.

Our client sites are hosted with Rackspace, NTT Verio, Softlayer and iWeb... all at the same time.

They're all great hosting providers, but as our friends at Pingdom frequently report, if things can go wrong they will.

Replicating our client sites across multiple data-centers with multiple non-related hosting providers, is the only way to deliver true 100% uptime across the board.

If your site needs to be up and running at all times, contact us today. We'd love to help.

Basic Web 2.0 Website Template

Dawn Rossi, June 24    --    Filed under Basics
10 years ago, a typical website included about 6 pages, with a home, about us, contact, privacy policy, terms & conditions and FAQ page.

While these are still Must have pages, nowadays, every decent website is expected to feature a blog / forum, photos, videos, social network links and do a better job of "telling the company's story", showing the people behind the site.

I was looking for a simple "push-button" solution to create a skeleton of such a site, but couldn't find one.

SPI does offer thousands of pre-made website templates, as well as custom website development, but I wanted a simple fully-functional template to help new clients get a quick-start with their websites.

Since I couldn't find any existing solution, I went ahead and created one, that covers it all:



* a complete website with a clean "Web 2.0" look&feel,
* Wordpress blog,
* vBulletin Forum,
* Social-network links,
* Navigation menu and
* Contact form

You can use my template to get this setup live, in 30 minutes or less.

Step 1: Register your profile on the social networks

Signup for Facebook, Youtube, Twitter, Digg, LinkedIn, TwitThis and FeedBurner.

Record your username (you'll need it later)

Step 2: Create Logo, Banner & Avatar

You're going to need a unique logo design and nice banner for your new website. Use these image specs and file names -

Top logo logo.png Dimensions: 240x88
Footer logo logo-footer.png Dimensions: 170x66
Post avatar post-avatar.png Dimensions: 24x51
Menu avatar menu-avatar.png Dimensions: 19x23
Top banner top-banner.png Dimensions: 728x90

Step 3: Install Website template

Download the web 2.0 website template

Extract it to your main website folder

The template includes easy to modify top.php, bottom.php and sidebar.php files, that control the header, menu system, footer and sidebar links. These three files are included on all pages.

Note: You can get the latest version of WordPress here. To keep this process streamlined, I've included WordPress as part of the zip file.

Step 4: Install Wordpress

WordPress is located under the /blog folder

Open the /blog/wp-config.php file and update it with your database settings (You'll have to change DB_NAME, DB_USER, DB_PASSWORD, DB_HOST)

If you installed the latest version of WordPress (as opposed to use the version included in the zip file), you'll have to make these additional changes:

(a) Install WordPress by pointing your browser to http://www.YOURDOMAIN.com/blog/wp-admin/install.php and follow the on screen instructions

(b) Update blog/wp-content/themes/default/header.php to:


require_once($_SERVER['DOCUMENT_ROOT']."/top.php"); 

(c) Update blog/wp-content/themes/default/footer.php to:


require_once($_SERVER['DOCUMENT_ROOT']."/sidebar.php");
require_once(
$_SERVER['DOCUMENT_ROOT']."/bottom.php");

(d) Update blog/wp-content/themes/default/sidebar.php to:


return;

(e) Update blog/wp-content/themes/default/index.php to:


<?php
get_header
(); ?>

  <div id="content" class="narrowcolumn" role="main">

  <?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

      <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
        <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php
        the_title_attribute
(); ?>"><?php the_title(); ?></a></h2>
        <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>

        <div class="entry">
          <?php the_content('Read the rest of this entry »'); ?>
        </div>

        <p class="postmetadata">

          <ul class="foot">
            <li class="alpha"><?php edit_post_link('Edit', '', ' | '); ?> <?php
            comments_popup_link
('No Comments »',
           
'1 Comment. Join the discussion »', '% Comments »'); ?>  </li>
            <li class="beta">
              <ul class="liaison">
                <li class="rss"><a href="<?=$RSSURL?>">RSS</a></li>
<li class="twitter"><script type="text/javascript" src="/js/twitthis.js"></script>
<script type="text/javascript">document.write('<a href="javascript:;" onclick="TwitThis.pop();">TwitThis</a>');</script></li>
                <li class="email"><a href="/contact">Email</a></li>
              </ul>
            </li>
          </ul>

        </p>
      </div>

    <?php endwhile; ?>

    <div class="navigation">
      <div class="alignleft"><?php next_posts_link('« Older Entries') ?></div>
      <div class="alignright"><?php previous_posts_link('Newer Entries »') ?></div>
    </div>

  <?php else : ?>

    <h2 class="center">Not Found</h2>
    <p class="center">Sorry, but you are looking for something that isn't here.</p>
    <?php get_search_form(); ?>

  <?php endif; ?>

  </div>

<?php get_footer(); ?>

Step 5: Install vBulletin

Purchase a license to vBulletin ($180) and download it from http://members.vbulletin.com

Extract vbulletin to a /forum folder on your server, then follow these steps:

(a) Rename includes/config.php.new to includes/config.php and update 'dbname', 'servername', 'username', 'password' with your database details.

(b) Open www.YOURDOMAIN.com/forum/install/install.php in your browser and follow the on-screen instructions (you'll need your vBulletin customer number to continue)

(c) Update the fetch_gzipped_text() function under forum/includes/functions.php to:


function fetch_gzipped_text($text, $level = 1)
{
return
$text;
}

(d) Open forum/global.php and locate this section in the file:


eval('$headinclude = "' . fetch_template('headinclude') . '";');
eval(
'$header = "' . fetch_template('header') . '";');
eval(
'$footer = "' . fetch_template('footer') . '";');

Replace these 3 lines with this section:


@ob_start();   
require(
"../top.php");
$buf = @ob_get_contents();
@
ob_end_clean(); 
eval(
'$header = "$buf";'); 
@
ob_start();     
require(
"../sidebar.php");
$buf = @ob_get_contents();   
@
ob_end_clean(); 
@
ob_start();       
require(
"../bottom.php");
$buf .= @ob_get_contents();
@
ob_end_clean();
eval(
'$footer = "$buf";');
eval(
'$headinclude = "";');


Step 6: Update images

Update the images in the /images folder with the ones you created in step 2

Step 7: Update company name, links

Update config.php with your company name, tagline, keywords and social network usernames.

It's important to set all the usernames as these will get populated on all of your pages. If you don't want to use a specific network, make sure you update bottom.php and top.php

-

In the future, I will update this template to include a built-in image gallery, the SPI FAQ service, the SPI Helpdesk service, Customer back-office and a video links manager.

How to Add a New Order under a Customer

Adrian Singer, June 23    --    Filed under SoftwareProjects Products
In a previous post, I explained How to Edit Order details, updating the shipping-address, price, credit-card or product for an existing order.

Today, I'd like to cover How to Add a new Order under an existing customer

This is helpful when you're looking to -

* Process orders offline
OR
* Credit a customer with a "Free order"

-

Step 1: Access Customer Manager

Login to your SPI account account and click on the Customer Manager. Search for the customer, for whom you'd like to add the new order.

If the customer doesn't exist yet, use "Add Customer" to add a new customer record.

Step 2: Click on New Order

Scroll down and click on the 'New Order' button.



Step 3: Edit Order Details

Select the product, store and shipping information (if applicable)



Turn-on the 'Free Order' checkbox to designate this order as a free one, for which the customer will never be charged.

Note: Orders added using this interface do NOT credit affiliates any commissions.

Step 4: (Optional) Charge customer

If you'd like to immediately charge the customer for this new order, complete adding the new order, then click on the order ID to enter the 'Edit Order details' screen.

Follow steps 4 and 5 here, to process the charge.



Note: If the new order caused the customer to have an outstanding balance and you don't process the charge yourself, the charge will be processed daily when the recurring-payments script runs.

Detecting the UTF-8 Signature in text files

Mike Peters, June 21    --    Filed under Programming
One common trap a lot of new developers fall into is editing php source files with an editor that saves text-files as Unicode.

Notepad for example, will automatically save a text-file as Unicode as soon as it detects the first character in the file that is a Unicode character.

Other editors can be configured to either save files as Unicode or plain Ascii text.

What's wrong with Unicode PHP source files?

A unicode text file will load up normally in your text editor, but there are 3 hidden characters added at the top of the file, to indicate this is a Unicode file.

These characters are: xEF xBB xBF

The big problem here is that php doesn't recognize these characters and will simply display them on the screen. Because these characters are the very first thing displayed on the screen, unless you have output-buffering turned on, your Unicode source file will be unable to store any session variables.

Example

Consider this innocent PHP script, that displays a message if this is a user's first visit to the site -


session_start
();
if (!isset(
$_SESSION['beenhere']))
{
echo
"Welcome! This is your first visit to the site";
}
$_SESSION['beenhere'] = "true";

Saving this PHP script in an editor that saves text-files as Unicode, will result in something that looks like this -


^xEF^xBB^xBF
session_start
();
if (!isset(
$_SESSION['beenhere']))
{
echo
"Welcome! This is your first visit to the site";
}
$_SESSION['beenhere'] = "true";

The end-user will see 3 strange looking characters at the top of the page, but more importantly since these characters are output before the call to session_start(), session_start will fail and no session variables will ever be stored.

If you're using session variables widely, this simple thing can completely break the functionality of your pages.

How to detect UTF-8 Signatures in source files

To detect the UTF-8 signature, save this bash script as 'checkutf.sh':


for i in `find ./ -type f -name '*.php'`; do hexdump -C $i | head -n1 | grep -i 'ef bb bf' && echo $i; done

Be sure to chmod 755 checkutf.sh

Then you can run checkutf.sh from any folder where you'd like to verify no files have the UTF-8 signature. This bash script will recursively check all files under the current directory and all subdirectories, displaying all instances where files contain the UTF-8 signature at the top of the file.

View 1 Comment(s)

Why was the payment declined?

Adrian Singer, June 10    --    Filed under Conversion
Driving traffic is key, but how do you reduce payment decline rates?

SoftwareProjects Shopping Cart now offers 5 reports to help you trouble-shoot the reasons for declined payments early on, so that you can resolve any issues right away.

1. Payment Decline-rate Trends

Decline rates typically hover around 10%, however they do vary by industry. Monitor your decline-rate trend regularly.



2. Declines by Credit-card Type

A simple misconfiguration with your merchant account provider, can easily cause all American Express or Discover payments to get rejected.

3. Declines by Error Code

Are you getting too many AVS (Address Verification Service) declines? It may be time to review your AVS settings

4. Declines by Country

Helpful in detecting fraud attempts.

5. Declines by Affiliate

Find the affiliates that are generating the highest percentage of declines.



-

In addition to these reports, you can always view and download a complete list of all payment declines under 'Order Manager' - 'Register'

How to create a new user + Password in FreeBSD / RedHat

Dawn Rossi, June 9    --    Filed under Programming
To create a new user programatically, create the user directory and assign password, use this syntax:


/usr/bin/ssh root@REMOTEHOSTNAME echo "PASSWORD" | /usr/sbin/pw useradd USERNAME -d 'PATH' -s /sbin/ftponly -w yes -c comment -h 0

REMOTEHOSTNAME - The remote machine you're creating this user under
PASSWORD - Password to assign to the new user account
USERNAME - User name to login with
PATH - New user directory
/sbin/ftponly - Replace with the full path of the new user shell
« Previous Posts

About Us  |  Contact us  |  Privacy Policy  |  Terms & Conditions