<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>neoverve | ProStores. e-commerce. blog.</title>
        <link>http://www.neoverve.com/</link>
        <description>ProStores | design. customization. hosting.</description>
        <language>en</language>
        <copyright>Copyright 2008</copyright>
        <lastBuildDate>Thu, 08 May 2008 16:17:42 -0800</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title><![CDATA[Why is shipping "Standard"... it should be "UPS Ground&reg;"]]></title>
            <description><![CDATA[<p>Do you experience an occasional order having the wrong shipping method applied?  Maybe a few orders came in with a shipping quote for "Standard"  that should have been quoted with "UPS Ground"?  There are quite few things that can cause this - shipping algorithms <em>are complicated</em> after all.</p>

<p>To start troubleshooting, begin with the ship to address on the order.  At least half of all shipping quotes gone slaunchways are due to the State and/or Provence being borked.  Does the ship to state on the order show the states' two letter code <strong>(CA)</strong> or is it typed out full <strong>(California)</strong>?  If it's typed out, that is a problem.  The ProStores system <em>requires</em> the two letter code for a state or Provence in any address &mdash; seems logical, since that's what all other systems require. </p>

<p>The frustrating part is the default checkout templates in your store use an input box for state.  In this input box, your shopper can type up to 10 characters.  Well, that's just silly &mdash; it's a problem waiting to happen.  Here is how you can change that silly input box into a select box that will force the correct two letter code.</p>

<p>In your "New Customer Checkout" template, find this code snippet in the source code:</p>
<pre><code>&lt;ss:edit source=&quot;$customer.state&quot; size=10/&gt;</code></pre>

<p>Replace it with this:</p>
<pre><code>&lt;ss:select name=&quot;$customer.state&quot; source=&quot;$system.states('*')&quot;&gt; 
	&lt;option value=&quot;Select&quot;&gt;Select&lt;/option&gt; 
&lt;/ss:select&gt;</code></pre>

<p>Almost done.  Now, you will need to edit all the other checkout templates too &mdash; and the select name you must use changes depending on the template.  The rest of the select code stays the same &mdash; you just need to change the $customer.state value in the name to something else on a few other templates.</p>

<p>For Ship To and Ship To Gift templates use:</p>
<pre><code>name=&quot;$address.state&quot;</code></pre>

<p>For Anonymous checkout templates use:</p>
<pre><code>name=&quot;$invoice.billToState&quot;</code></pre>

<p>Problem solved.  Now, your shopper can easily select the appropriate State or Provence from an easy select menu without having to type anything.  Thus, removing the opportunity for typing error.  You're welcome.</p>]]></description>
            <link>http://www.neoverve.com/prostores-tips-tricks/shipping/2008/05/#000076</link>
            <guid>http://www.neoverve.com/prostores-tips-tricks/shipping/2008/05/#000076</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category"><![CDATA[ProStores Tips &amp; Tricks]]></category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Shipping</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">code snippet</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">design</category>
            
            <pubDate>Thu, 08 May 2008 16:17:42 -0800</pubDate>
        </item>
        
        <item>
            <title>Pesky External Script Slowing Things Down?</title>
            <description><![CDATA[<p><strong>Problem:</strong> site stalls at some point while waiting on a script to load.</p>
<p><strong>Reason:</strong> The script is referencing a different domain than your own, and if that domain is taking a while to load, your page cannot proceed until it's loaded.  This is a problem.</p>
<p><strong>Solution:</strong>  If the location of the code itself is not important (i.e. code doesn't add any <em>visible</em> elements to the page), place it as far down on the page as possible.  That simple change will allow most of the page to load immediately for use - even though the offending slow script isn't done yet.</p>
<p><strong>Alternatively:</strong> If the code generates some sort of html and needs to be put in a specific place (i.e. live chat module or site seal) the following tip is very handy indeed.  It relies on the "domready" function of MooTools (a supertastic Javascript library) that will only start the slow script <em>after</em> the whole page has loaded.  We are using this on our <a href="http://www.neoverve.com/contact-us.html">contact us</a> page for the live chat and skype scripts.</p>

<p><strong>1.</strong> Download and install <a href="http://mootools.net/">MooTools</a> (it's awesome)</p>
<p><strong>2.</strong> Replace your module code with something like:</p>

<pre><code>&lt;div id="whereTheCodeEndsUp"&gt;&lt;/div&gt;</code></pre>

<p><strong>3.</strong> Place the "module" code near the bottom of the page inside of something like:</p>

<pre><code>&lt;div id="whereTheCodeStarts" style="display: none;"&gt;
	&lt;!-- Module Code here --&gt;
&lt;/div&gt;</code></pre>

<p><strong>4.</strong> Place the following code directly following the call for mootools.js:</p>

<pre><code>&lt;script language="JavaScript" type="text/javascript"&gt;
	window.addEvent('domready', function() {
	$('whereTheCodeEndsUp').innerHTML = $('whereTheCodeStarts').innerHTML;
	$('whereTheCodeStarts').innerHTML = "";
});
&lt;/script&gt;</code></pre>

<p>There are many different ways to accomplish this type of thing, but this is pretty quick — especially if you already have MooTools installed.</p>]]></description>
            <link>http://www.neoverve.com/ecommerce-tidbits/2008/05/#000075</link>
            <guid>http://www.neoverve.com/ecommerce-tidbits/2008/05/#000075</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">eCommerce Tidbits</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">code snippet</category>
            
            <pubDate>Thu, 01 May 2008 13:52:55 -0800</pubDate>
        </item>
        
        <item>
            <title>TopSales Too</title>
            <description><![CDATA[<blockquote><div><p>You guys have been great. The integration of Ingram Micro into our webstore was huge.  That alone saved us days of work — not to mention the support and know-how from your team along the way... what a difference compared to our previous provider.</p>
<p>We just wanted to say, THANK YOU for all your help.  We tell all our friends about your service.</p>
<p>— Harvey &amp; Rolondia, TopSales Too <a href="http://www.topsalestoo.com/" target="_blank">HP Laser Jet and Lexmark parts</a></p></div></blockquote>]]></description>
            <link>http://www.neoverve.com/testimonials/2008/04/#000074</link>
            <guid>http://www.neoverve.com/testimonials/2008/04/#000074</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Testimonials</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">testimonials</category>
            
            <pubDate>Wed, 23 Apr 2008 10:05:52 -0800</pubDate>
        </item>
        
        <item>
            <title>3 Basic Tips For New E-commerce Store Owners</title>
            <description><![CDATA[<h2>Build a Smart Catalog</h2>
<p>One of the most important jobs you have as an online entrepreneur is to create a store where people can easily shop for goods in an online environment.  Just like Mail Order, a well structured catalog is easy to use.  If they are going to enjoy shopping your store, the catalog has to be easy to browse.  The larger your product offering, the more of a challenge this will become.</p>

<p>Remember, your catalog is the way you present your products to the consumer.  It should not necessarily follow the same model in which you purchase these products or store them in your warehouse.  Basically always look at the catalog from your consumers point of view rather than your own. </p>

<p>Example: you buy all your stuff wholesale and have all the SKU's memorized.  Obviously, the easy was is to make customers search by SKU... wrong.  They want to browse by category or price range or brand name — maybe even season or type.  Keep this in mind as you create your online catalog and refine it as you go.</p>

<h2>Write Just Enough, But Not Too Much</h2>
<p>Spend extra time naming and describing both your products and categories.  For example: Instead of having a category called "Shirts" filled with 117 shirts, consider breaking it up a bit.  How about 4 or 5 categories like "Mens Short Sleeve Tee's", "Ladies Tank Tops", "Kids Long Sleeve Shirts", etc... this makes your store easier for the user and better for search engines at the same time.</p>

<h2>Don't Forget About the Shipping</h2>
<p>Shipping can make or break a sale and/or your wallet.  Many new online store owners are taken by surprise when they have to setup, plan or even execute a shipment.  The more planning upfront you do with shipping, the better.</p>

<p>Try to mirror your real world warehouse experience.  The closer you can get your online store setup to match your real-world shipping methods, the happier you and your shoppers will be in the end. Setting up a quality shipping table or ensuring an accurate shipping quote from an integrated shipper should be right up there with your catalog when it comes to planning and setup.</p>
]]></description>
            <link>http://www.neoverve.com/ecommerce-tidbits/2008/04/#000073</link>
            <guid>http://www.neoverve.com/ecommerce-tidbits/2008/04/#000073</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">eCommerce Tidbits</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">tips</category>
            
            <pubDate>Mon, 21 Apr 2008 17:12:08 -0800</pubDate>
        </item>
        
        <item>
            <title>ProStores Formmail Script</title>
            <description><![CDATA[<p>ProStores has a built in mail processor that it uses to send messages - like the Email a Friend feature for example.  The cool part is, you can use the form mail processing that is built in to send your own forms - perhaps a "Contact Us" form or an "Ask a Question" form.</p>

<p>You can use the code below on any ProStores template to create a form that sends a message.</p>
<pre>
<code>
&lt;form name=&quot;emailfriend&quot; method=&quot;POST&quot; action=&quot;Send.bok&quot;&gt;

	&lt;p&gt;FROM&lt;/p&gt;
	&lt;p&gt;Name &lt;input type=&quot;text&quot; name=&quot;$$email.senderName&quot; value=&quot; &quot;&gt;&lt;/p&gt;
	&lt;p&gt;E-Mail &lt;input type=&quot;text&quot; name=&quot;$$email.senderEmail&quot; value=&quot; &quot;&gt;&lt;/p&gt;

	&lt;p&gt;TO&lt;/p&gt;
	&lt;p&gt;Name &lt;input type=&quot;text&quot; name=&quot;$$email.recipientName&quot; value=&quot; &quot;&gt;&lt;/p&gt;
	&lt;p&gt;E-Mail &lt;input type=&quot;text&quot; name=&quot;$$email.recipientEmail&quot; value=&quot; &quot;&gt;&lt;/p&gt;

	&lt;hr size=&quot;1&quot;/&gt;
	&lt;p&gt;MESSAGE&lt;br&gt;&lt;textarea name=&quot;$$email.message&quot; cols=&quot;40&quot; rows=&quot;3&quot; wrap=&quot;virtual&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;
	&lt;p&gt;&lt;input type=&quot;submit&quot; value=&quot;Send&quot;&gt;&lt;/p&gt;

&lt;/form&gt;
</code>
</pre>
<p>The ".bok" on the action may not be needed - it depends on the type of ProStores installation in which your store lives.]]></description>
            <link>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000072</link>
            <guid>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000072</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
                <category domain="http://www.sixapart.com/ns/types#category"><![CDATA[ProStores Tips &amp; Tricks]]></category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">formmail</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">forms</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mail</category>
            
            <pubDate>Fri, 18 Apr 2008 14:22:20 -0800</pubDate>
        </item>
        
        <item>
            <title>Case Study: Tribal Hollywood</title>
            <description><![CDATA[<p>Key ingredients for Tribal Hollywood project:<br />
</p><ul><li>Brand image - creating a graphical theme that connects with their target market</li><li>Recreating the successful in-store sales experience online</li><li>Up sell and add-on opportunities</li><li>Search Engine Optimization</li></ul>

<blockquote><div><p>Our image is Tribal and Urban. It's tribal symbols combined with the style and coolness of a hot Hollywood nightclub. It's tattoo imagery... but not rocker.</p></div></blockquote>

<p>The guys over at Tribal Hollywood were able to describe what they wanted with a refreshing clarity.  By using lots of texture and style we were able to create the shopping environment Tribal wanted.  This was going to be an important part of connecting with their audience.</p>

<span class="mt-enclosure mt-enclosure-image"><img alt="study-th-home.jpg" src="http://www.neoverve.com/assets/images/study-th-home.jpg" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="504" /></span>

<p>Category pages needed different ways to present products - similar to the physical location.  The ProStores template language (SSML) allowed us to create certain page styles for certain categories. For example, the Pendants page should have a different layout than the Ed Hardy Watches.</p>

<span class="mt-enclosure mt-enclosure-image"><img alt="study-th-listsub.jpg" src="http://www.neoverve.com/assets/images/study-th-listsub.jpg" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" width="504" /></span>

<p>The biggest challenge was the add-on options for the Pendants.  To be able to add many different necklace styles to all the different pendants was a tall order for sure.  Our programmers worked some black magic and created an easy, insightful way for the shopper to get just what they want.</p>

<span class="mt-enclosure mt-enclosure-image"><img alt="th_detail.jpg" src="http://www.neoverve.com/assets/images/th_detail.jpg" class="mt-image-center" style="margin: 0pt auto 20px; text-align: center; display: block;" height="615" width="460" /></span><div><br /></div>]]></description>
            <link>http://www.neoverve.com/prostores-case-studies/2008/04/#000071</link>
            <guid>http://www.neoverve.com/prostores-case-studies/2008/04/#000071</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ProStores Case Studies</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">case studies</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">prostores</category>
            
            <pubDate>Fri, 18 Apr 2008 08:28:40 -0800</pubDate>
        </item>
        
        <item>
            <title>Aboriginal Boomerang</title>
            <description><![CDATA[<p><img src="http://www.neoverve.com/assets/images/IMGA0265-thumb-600x255.jpg" alt="Aboriginal Boomerang" height="255" width="600" /></p>

<blockquote><div><p>Dear neoverve,<br />In honor of a Tribal website well done, we want to present you with this authentic, hand-made Aboriginal Boomerang. Thank You!<br /><br />— Grant &amp; Kent, <a href="http://www.tribalhollywood.com/" target="_blank">Tribal Hollywood</a></p></div></blockquote>

<p>Glad you like the site guys!  It's one of our favorites too - our super-speed designer-stud <strong>Tom Le</strong> really drove it home. The whole team <strong>loves</strong> hearing about successes when our sites drive business into a physical store location — bridging the gap between <span class="Apple-style-span" style="font-style: italic;">e</span>-stores and <span class="Apple-style-span" style="font-style: italic;">the</span>-stores.  <strong>The boomerang</strong> you sent is ACE!</p>]]></description>
            <link>http://www.neoverve.com/testimonials/2008/04/#000063</link>
            <guid>http://www.neoverve.com/testimonials/2008/04/#000063</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Testimonials</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">testimonials</category>
            
            <pubDate>Fri, 11 Apr 2008 11:17:49 -0800</pubDate>
        </item>
        
        <item>
            <title>XTE 3.0 Token in PHP from scratch</title>
            <description><![CDATA[
<p>
The documentation provided for the ProStores XTE (XML Transaction Engine) authentication scheme is pretty thorough, so I will assume that you are familiar with the variables, and how to receive them into your application.  That being said, here is a way to create an XTE 3.0 token using PHP.
</p>


<pre><code class="prettyprint">

$entry_url = {$_GET variable};
$app_id = {$_GET variable or hardcoded};
$secret = {$_GET variable or hardcoded};
$timestamp = time();

$entry_url_pre_sig = &quot;$secret&amp;appid=$app_id&amp;ts=$timestamp&quot;;
$entry_url_sig = md5($entry_url_pre_sig);

$complete_entry_url = &quot;$entry_url/getInfo?appid=$app_id&quot; . &quot;&amp;ts=$timestamp&quot; . &quot;&amp;sig=$entry_url_sig&quot;;

$result = http_post_send($complete_entry_url, 80, '', 'text/xml', '');        
$responseXML = str_replace('&amp;#174;', &quot;&quot;, $result['body']); 
$tree = GetXMLTree($responseXML);

$xml_api = $tree[&quot;XTE&quot;][0][&quot;RESPONSE&quot;][0][&quot;XMLAPI&quot;][0][&quot;VALUE&quot;];
$rest_api_non_secure = $tree[&quot;XTE&quot;][0][&quot;RESPONSE&quot;][0][&quot;RESTAPINONSECURE&quot;][0][&quot;VALUE&quot;];

$api_ticket = $_GET['ticket'];

$get_token_pre_sig = &quot;$secret&amp;appid=$app_id&amp;ts=$timestamp&amp;ticket=$api_ticket&quot;;
$get_token_sig = md5($get_token_pre_sig);

$complete_token_url = $rest_api_non_secure . &quot;auth/getToken?appid=$app_id&quot; . &quot;&amp;ts=$timestamp&quot; . &quot;&amp;ticket=$api_ticket&quot; . &quot;&amp;sig=$get_token_sig&quot;;

$token_result = http_post_send($complete_token_url, 80, '', 'text/xml', '');        
$responseXML = str_replace('&amp;#174;', &quot;&quot;, $token_result['body']); 
$tree = GetXMLTree($responseXML);

$token = $tree[&quot;XTE&quot;][0][&quot;RESPONSE&quot;][0][&quot;TOKEN&quot;][0][&quot;VALUE&quot;];

echo &quot;Your sweet token = $token &quot;;

/*  These facilitate the transmission of data to the xte, and parsing the data into a nice array */

function http_post_send($url, $port, $body, $content_type, $cookie) {
	$url = ereg_replace(&quot;^http://&quot;, &quot;&quot;, $url);
	$host = substr($url, 0, strpos($url, &quot;/&quot;));
	$uri = strstr($url, &quot;/&quot;);
	$header = http_post_header($uri, $host, strlen($body), $content_type, $cookie);
	$socket = fsockopen($host, $port, $errno, $errstr);
	fputs($socket, $header.$body);
	$ret = array(&quot;header&quot; =&gt; array(), &quot;body&quot; =&gt; &quot;&quot;);
	$reading_header = true;
	$status = array(&quot;unread_bytes&quot; =&gt; 1);
	while ($status[&quot;unread_bytes&quot;] != 0){
		$chunk = fgets($socket);
		$status = socket_get_status($socket);
		if($reading_header){
			if ($chunk == &quot;\r\n&quot;){
				$reading_header = false;
			}
			else{
				$ret[&quot;header&quot;][] = $chunk;
			}
		} 
		else{
			$ret[&quot;body&quot;] .= $chunk;
		}
	}
	
	while ($more = fgets($socket)){
		$ret[&quot;body&quot;] .= $more;
	}
	
	fclose($socket);
	return $ret;
}

function http_post_header($uri, $host, $content_length, $content_type, $cookie) {
	$h  = &quot;POST $uri HTTP/1.0\n&quot;;
	$h .= &quot;Host: $host\n&quot;;
	$h .= &quot;User-Agent: Mozilla/4.0 [en] (Windows NT 5.0; U)\n&quot;;
	$h .= &quot;Accept: */*\n&quot;;
	$h .= &quot;Accept-Language: en-us\n&quot;;
	$h .= &quot;Accept-Encoding: gzip, deflate\n&quot;;
	$h .= &quot;Connection: Keep-Alive\n&quot;;
	$h .= &quot;Content-Type: $content_type\n&quot;;
	$h .= &quot;Content-Length: $content_length\n&quot;;
	$h .= &quot;\n&quot;;
	return $h;
}

function GetXMLTree($data) { 
	$parser = xml_parser_create('ISO-8859-1');
	xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); 
	xml_parse_into_struct($parser, $data, $vals, $index); 
	xml_parser_free($parser); 
	
	$tree = array(); 
	$i = 0; 
	$tree[$vals[$i]['tag']][] = GetChildren($vals, $i); 
	return $tree; 
} 


function GetChildren($vals, &amp;$i){ 
	$children = array();
	if(isset($vals[$i]['value'])){ 
		$children['VALUE'] = $vals[$i]['value']; 
	}
	while(++$i &lt; count($vals)){ 
		switch ($vals[$i]['type']){ 
			case 'cdata': 
				if(isset($children['VALUE'])){
					$children['VALUE'] .= $vals[$i]['value'];
				}
				else{
					$children['VALUE'] = $vals[$i]['value'];
				}
				break;
			case 'complete': 
				if(isset($vals[$i]['attributes'])) {
					$children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
					$index = count($children[$vals[$i]['tag']])-1;
				
					if(isset($vals[$i]['value'])){ 
						$children[$vals[$i]['tag']][$index]['VALUE'] = $vals[$i]['value'];
					}
					else{
						$children[$vals[$i]['tag']][$index]['VALUE'] = '';
					} 
				} 
				else{
					if(isset($vals[$i]['value'])){ 
						$children[$vals[$i]['tag']][]['VALUE'] = $vals[$i]['value'];
					} 
					else{
						$children[$vals[$i]['tag']][]['VALUE'] = '';
					} 
				}
				break; 
			case 'open': 
				if(isset($vals[$i]['attributes'])){
					$children[$vals[$i]['tag']][]['ATTRIBUTES'] = $vals[$i]['attributes'];
					$index = count($children[$vals[$i]['tag']])-1;
					$children[$vals[$i]['tag']][$index] = array_merge($children[$vals[$i]['tag']][$index],GetChildren($vals, $i));
				} 
				else{
					$children[$vals[$i]['tag']][] = GetChildren($vals, $i);
				}
				break; 
			case 'close': 
				return $children; 
		} 
	} 
} 
</code>
</pre>]]></description>
            <link>http://www.neoverve.com/prostores-developer/2008/04/#000062</link>
            <guid>http://www.neoverve.com/prostores-developer/2008/04/#000062</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">ProStores Developer</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">XTE Transactions</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">authentication</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">md5</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">php</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">prostores sdk</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">token</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">xml</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">xte</category>
            
            <pubDate>Thu, 10 Apr 2008 09:29:48 -0800</pubDate>
        </item>
        
        <item>
            <title>Sweet &amp; Sour != XML</title>
            <description><![CDATA[<p>This post may stray from my usual uber-helpful code snippet.  But, it could save you unbelievable amounts of time so pay very close attention...</p>

<p>The ampersand character is known around here as the devil symbol.  Not the word "ampersand" mind you, but ---> <strong>&amp;</strong> <---- this evil guy.  Stay away from it unless you're using it to escape your HTML.  The word 'and' is only two characters longer.  In fact, in order to produce that symbol, you have to hold down the shift key,  and press 7 which definitely takes more energy and concentration.  So the next time your xml_parse_into_struct fails to push data into the array, check to see that your sweet &amp; sour chicken is both sweet <em>and</em> sour.</p>

<p><strong>P.S.</strong> all symbols are stupid.  Stay away from them.<br/>
<strong>P.P.S.</strong> Don't <em>ever</em> use Word for web text.  It's stupid, and has stupid characters.</p>]]></description>
            <link>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000061</link>
            <guid>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000061</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">ProStores Developer</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">XTE Transactions</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">ampersand</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">php</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">xml</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">xml_parse_into_struct</category>
            
            <pubDate>Wed, 09 Apr 2008 16:52:15 -0800</pubDate>
        </item>
        
        <item>
            <title>ProStores Software Failure</title>
            <description><![CDATA[<p>Several ProStores hosting customers experienced a critical error early Monday morning (04/07/2008). An error message appeared on the Store Front and in the Store Administration for affected customers, causing the store to be inoperable. We believe the issue was triggered by our regularly scheduled maintenance, but the error didn't occur until several hours after the maintenance was completed. We have not experienced any issues previously with regards to ProStores hosting or any of our other offerings due to routine server maintenance.</p>

<p>Since this was a software error and not an actual server/service down event, our automated monitoring systems were unable to detect the issue and alert our technical staff.</p>

<p>In addition, our telephone paging service was unavailable during the early morning on Monday. Therefore, the technical staff was not alerted to this issue until we opened our office at the start of the business day. Upon discovery of the problem, the issue was immediately escalated to top tier and the ProStores application was restored.</p>

<p>The application vendor of ProStores, Ebay, was alerted shortly thereafter and a proposed fix was sent to Neoverve. According to Ebay, there is a bug in the configuration where a section for multi-cast clustering is enabled by default.</p>

<p>An updated configuration fix will be completed today on all ProStores servers. We are also investigating a new paging system with multiple escalation support to be implemented immediately.</p>

<p>We fully understand the severity of the service interruption and apologize for its effect. All measures will be taken to ensure continuous service for our customers.</p>]]></description>
            <link>http://www.neoverve.com/system-updates/2008/04/#000060</link>
            <guid>http://www.neoverve.com/system-updates/2008/04/#000060</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">System Updates</category>
            
            
            <pubDate>Mon, 07 Apr 2008 15:00:23 -0800</pubDate>
        </item>
        
        <item>
            <title>Become.com order confirmation tracking code in ProStores</title>
            <description><![CDATA[ <p>Here is an example of the order confirmation code you receive from become.com - customized for use within your ProStores Order Confirmation template source code.</p>

<pre>
<code>

&lt;!-- Become.com --&gt;

&lt;ss:set name=&quot;a1&quot; value=&quot;https://partner.become.com/tracking/t.gif?merchantid=/*Your merchantID would go here*/&amp;order_id=&quot;/&gt;
&lt;ss:set name=&quot;a2&quot; value=&quot;$invoice.invoiceNumber&quot;/&gt;
&lt;ss:set name=&quot;a3&quot; value=&quot;&amp;order_value=&quot;/&gt;
&lt;ss:set name=&quot;a4&quot; value=&quot;$invoice.total&quot; format=&quot;none&quot;/&gt;
&lt;ss:set name=&quot;a5&quot; value=&quot;&amp;num_items=&quot;/&gt;
&lt;ss:set name=&quot;a6&quot; value=&quot;$invoice.itemCount&quot;/&gt;
&lt;ss:set name=&quot;aTotal&quot; value=&quot;$string.concat($a1, $string.concat($a2, $string.concat($a3, $string.concat($a4, $string.concat($a5, $a6)))))&quot;/&gt;

&lt;img src=&quot;$aTotal&quot; id=&quot;become_t&quot;/&gt; 
&lt;script type=&quot;text/javascript&quot; language=&quot;javascript&quot; src=&quot;https://partner.become.com/tracking/conversion.js&quot;&gt; &lt;/script&gt;

&lt;!-- Become.com --&gt;
</code>
</pre>]]></description>
            <link>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000059</link>
            <guid>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000059</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">analytics</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">order tracking</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">ssml</category>
            
            <pubDate>Fri, 04 Apr 2008 14:45:11 -0800</pubDate>
        </item>
        
        <item>
            <title>Coding a secure XTE call using PHP</title>
            <description><![CDATA[<p>
Sometimes a <em>secure</em> XTE call is necessary based on the type of information you plan to extract from ProStores and use in your PHP application.&nbsp; I know the big one that I need is anything having to do with credit card details.&nbsp; So, whether you are looking to retrieve those details, or if you would like to know how to process http data via a secure channel here's some info.
</p>

<p>One of the best functions I've found to process the proper http data is a built in function called fsockopen.&nbsp; You're basic URL call would look something like the following:
</p>

<pre>
<code class="prettyprint">
$socket = fsockopen("www.domain.com", 80); 
// 80 = port that you want to post through
</code>
</pre>

<p>Now if you wanted to go secure, you would need to change it up a smidge.</p>

<pre>
<code class="prettyprint">
$socket = pfsockopen("ssl://www.domain.com", 443); 
// 443 = secure port
</code>
</pre>

<p>Also, you'll need to make sure your PHP has openssl installed and configured.</p>]]></description>
            <link>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000058</link>
            <guid>http://www.neoverve.com/prostores-tips-tricks/coding-tips/2008/04/#000058</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Coding Tips</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">ProStores Developer</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">XTE Transactions</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">fsockopen</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">https</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">pfsockopen</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">php</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">prostores sdk</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">xte</category>
            
            <pubDate>Fri, 04 Apr 2008 13:53:35 -0800</pubDate>
        </item>
        
        <item>
            <title>Tribal Hollywood</title>
            <description><![CDATA[<blockquote><div><p>Thank you all for your tremendous effort to give us such a cool functioning and looking online store. We have really elevated what ProStores can do and have created a real differentiator versus our competitors. Your determination to achieve the best representation for our products and best customer experience is very appreciated.</p>
<p>— Grant &amp; Kent, <a href="http://www.tribalhollywood.com/" target="_blank">Tribal Hollywood</a></p></div></blockquote>]]></description>
            <link>http://www.neoverve.com/testimonials/2008/03/#000068</link>
            <guid>http://www.neoverve.com/testimonials/2008/03/#000068</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Testimonials</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">testimonials</category>
            
            <pubDate>Mon, 31 Mar 2008 13:56:18 -0800</pubDate>
        </item>
        
        <item>
            <title>Store Administration Homepage</title>
            <description><![CDATA[<embed src="http://blip.tv/play/hRCxmB4A" type="application/x-shockwave-flash" width="520" height="355" allowscriptaccess="always" allowfullscreen="true"></embed><p>Our first screencast - highlighting the Store Administration Home page of the ProStores software.</p>]]></description>
            <link>http://www.neoverve.com/prostores-screencasts/2008/03/#000057</link>
            <guid>http://www.neoverve.com/prostores-screencasts/2008/03/#000057</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">ProStores Screencasts</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">prostores</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">screencast</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">training</category>
            
            <pubDate>Mon, 31 Mar 2008 12:08:44 -0800</pubDate>
        </item>
        
        <item>
            <title>Nordal Enterprises</title>
            <description><![CDATA[<blockquote><div><p>Lady and Gentlemen,<br />Thank you for all your efforts on the website. It looks fantastic and has met all our expectations — and then some. We love working with Neoverve and appreciate all your professionalism and dedication to helping us develop quality driven E-commerce sites. We look forward to working with you on our next project.<br /><br />Respectfully submitted,<br /><br/>— Curt &amp; Sharon Nordal, Nordal Enterprises Inc.<br /><a href="http://www.saltwater-poolsystems.com/" target="_blank">saltwater-poolsystems.com</a>, <a href="http://www.poolsupplydeals.com/" target="_blank">poolsupplydeals.com</a></p></div></blockquote>]]></description>
            <link>http://www.neoverve.com/testimonials/2008/03/#000067</link>
            <guid>http://www.neoverve.com/testimonials/2008/03/#000067</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Testimonials</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">testimonials</category>
            
            <pubDate>Fri, 28 Mar 2008 13:36:02 -0800</pubDate>
        </item>
        
    </channel>
</rss>
