<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Payment Systems Blog &#187; Design</title>
	<atom:link href="http://www.paymentsystemsblog.com/topics/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paymentsystemsblog.com</link>
	<description>David D. Bergert</description>
	<lastBuildDate>Sat, 10 Apr 2010 13:32:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>2007-2008 </copyright>
		<managingEditor>podcast@paymentsystemsblog.com (Dave Bergert)</managingEditor>
		<webMaster>podcast@paymentsystemsblog.com (Dave Bergert)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords>Payment Systems, ISO8583, PABP, PA-DSS, PCI, Security, Credit, Debit</itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>Payment Systems Podcast is a podcast that address the subject of Payments Systems, their operations, development, security and other experiences related to payment processing.</itunes:summary>
		<itunes:author>Dave Bergert</itunes:author>
		<itunes:category text="Technology"/>
<itunes:category text="Business"/>
<itunes:category text="Technology">
	<itunes:category text="Software How-To"/>
</itunes:category>
		<itunes:owner>
			<itunes:name>Dave Bergert</itunes:name>
			<itunes:email>podcast@paymentsystemsblog.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://www.paymentsystemsblog.com/images/pspodcast.png" />
		<image>
			<url>http://www.paymentsystemsblog.com/images/pspodcast.png</url>
			<title>Payment Systems Blog</title>
			<link>http://www.paymentsystemsblog.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Payment Systems / Application Demos and Presentation thoughts</title>
		<link>http://www.paymentsystemsblog.com/2009/03/18/payment-systems-application-demos-and-presentation-thoughts/</link>
		<comments>http://www.paymentsystemsblog.com/2009/03/18/payment-systems-application-demos-and-presentation-thoughts/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 22:08:55 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[PA-DSS]]></category>
		<category><![CDATA[PABP]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2009/03/18/payment-systems-application-demos-and-presentation-thoughts/</guid>
		<description><![CDATA[




               Photo by The Eggplant




Over the last few months there has been various webEx, gotoMeeting, Live Meeting, etc of product demonstrations that I&#8217;ve been a part of as a participant.
Some General Thoughts:

If you are showing a web based application use a [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<table cellspacing="0" cellpadding="2" width="400" align="center" border="0">
<tbody>
<tr>
<td valign="top" width="400">
<p align="center"><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2009/03/131558305-f5a67adbc5.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="300" alt="131558305_f5a67adbc5" src="http://www.paymentsystemsblog.com/wp-content/uploads/2009/03/131558305-f5a67adbc5-thumb.jpg" width="400" border="0" /></a>               <br /><em>Photo by </em><a href="http://www.flickr.com/photos/eggplant/131558305/"><em>The Eggplant</em></a></p>
</td>
</tr>
</tbody>
</table></div>
<p>Over the last few months there has been various webEx, gotoMeeting, Live Meeting, etc of product demonstrations that I&#8217;ve been a part of as a participant.</p>
<p>Some General Thoughts:</p>
<ul>
<li>If you are showing a web based application use a SSL Certificate and https:// If you are going to show a web-interface that you log in with a username and password or shows account numbers please do this- you can used a self-signed cert, but I get nervous about demo&#8217;s without this- It is just sloppy not to do.</li>
<li>Mask Account Numbers when they are displayed.<em>&#160;</em>I get really nervous about this type of stuff and question your security posture.</li>
<li>Don&#8217;t use account numbers and PIN as authentication method, (although there are certain instances where this is acceptable) don&#8217;t make this the default option.</li>
<li>If you are showing a payment system &#8211; understand what PABP and PA-DSS are &#8211; and if you have customers that are &quot;PCI Complaint&quot; running it, this isn&#8217;t the same to me.</li>
<li>Show a finished product, links that go to &quot;Not yet completed&quot; or pages that are not consistent in look and feel confuse me. </li>
<li>When I ask how many &#8216;Live Customers&#8217; use this product, I want to know about in production, not in the sales pipeline. </li>
<li>If it is a MS Windows/SQL Server based product, don&#8217;t list Windows Std. Edition and MSSQL Standard Edition as required software &#8211; We need enterprise level software, there is a huge delta in TCO in licensing fees.</li>
</ul>
<p>Things to do right:</p>
<ul>
<li>Simulate a live transaction against a simulator or other tool showing that it is a real system and is functional. </li>
<li>Walk me through the life-cycle of certain processes that I care about. </li>
<li>Be able to explain &quot;how you would implement X&quot; or modify Y, or how your system deals with &quot;Z&quot;</li>
<li>I know that a product won&#8217;t solve all of my needs, so I&#8217;m looking for synergies with your team to be partners with a relationship to get your product to fit my needs. </li>
<li>Be able to speak my language, and have a few competent people driving the demo. </li>
<li>Show me how &quot;someone would use this&quot; application in the real world.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2009/03/18/payment-systems-application-demos-and-presentation-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steps to setup a successful endpoint integration</title>
		<link>http://www.paymentsystemsblog.com/2009/03/03/steps-to-setup-a-successful-endpoint-integration/</link>
		<comments>http://www.paymentsystemsblog.com/2009/03/03/steps-to-setup-a-successful-endpoint-integration/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 14:49:51 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[OLS]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2009/03/03/steps-to-setup-a-successful-endpoint-integration/</guid>
		<description><![CDATA[ 
We connect and interface to about 20 different endpoints, each has its own message formats, connection methodologies, protocols, and different implementations of payment transactions sets, encryption and key management considerations, On-Line vs Offline transactions, Store and Forward (SAF), and flat file based reconciliation and clearing files among other details.
Here is a basic list of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2009/03/secret-of-my-success.jpg"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="244" alt="secret_of_my_success" src="http://www.paymentsystemsblog.com/wp-content/uploads/2009/03/secret-of-my-success-thumb.jpg" width="161" align="left" border="0" /></a> </p>
<p><a href="http://www.olsdallas.com">We</a> connect and interface to about 20 different endpoints, each has its own message formats, connection methodologies, protocols, and different implementations of payment transactions sets, encryption and key management considerations, On-Line vs Offline transactions, Store and Forward (SAF), and flat file based reconciliation and clearing files among other details.</p>
<p>Here is a basic list of steps that we perform that assist us in getting the endpoint integration right:</p>
<p>1) Acquire the Host Message Format specifications and communication/protocol specifications that describe the communication and connection e.g: 2||4 byte length header, other header(s), length in network or host byte order, etc. and&#160; <strong>read&#160; and understand them</strong>.&#160; Perform this same task for batch flat file based formats and file transfers.</p>
<p>2) Request sample dumps/files of some messages as well as for online transactions, network traces that show the communication bytes of the message, manually parse them and map them back to the spec. These should include samples of request/response exchanges.&#160; [These should be from a test system.]&#160; Examples often reveal nuances not documented or kept up to date in the spec. </p>
<p>3) Determine which message set and transactions are in play, There are many types of transactions that will be different depending on the type (e.g Debit, Credit, Gift) and characteristics of the transaction (e.g Manual, Swiped, MOTO). You need to determine which ones map to your business requirements and which ones will be used.</p>
<p>4) Request and/or develop certification scripts for your implementation (it helps to see what the other side thinks is important).</p>
<p>5) Schedule a walkthrough &#8211; <strong>This is the key event</strong>: the probability of our success is increased by scheduling and holding one or more walkthroughs.&#160; The idea is to comb through the spec(s) and complementary material page by page, field by field and get complete alignment on the task.&#160; It&#8217;s the absolute truth that the real nature of the interface comes out in the walkthrough.&#160; </p>
<p>6) Develop and test your code to the specs and sample messages dumps. (Which is a small part of the project)</p>
<p>7) Use tools such as <a href="http://www.paymentsystemsblog.com/2009/03/03/payment-systems-tools-netcat/">netcat</a>&#160; and wireshark as well as your application logs to confirm that you are sending what you think you are, and can provide detailed information to someone on the &#8216;other&#8217; end of the endpoint to help troubleshoot integration. Don&#8217;t assume that you think you are sending what your think your code does, verify it locally first.</p>
<p> <img src='http://www.paymentsystemsblog.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Develop a good or rather great working relationships with someone on the &#8216;other&#8217; end of the endpoint, that can help assist with message format questions, perform traces, and check what you are sending to what they expect, and setup regular communication throughout the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2009/03/03/steps-to-setup-a-successful-endpoint-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When End-to-End Encryption is really not End-to-End.</title>
		<link>http://www.paymentsystemsblog.com/2009/01/20/when-end-to-end-encryption-is-really-not-end-to-end/</link>
		<comments>http://www.paymentsystemsblog.com/2009/01/20/when-end-to-end-encryption-is-really-not-end-to-end/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 03:04:31 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Breach]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[HSM]]></category>
		<category><![CDATA[PA-DSS]]></category>
		<category><![CDATA[PABP]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[Point of Sale]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2009/01/20/when-end-to-end-encryption-is-really-not-end-to-end/</guid>
		<description><![CDATA[I&#8217;m reading a lot about solutions that implement end-to-end encryption, where account numbers and track data is encrypted and can utilize a Hardware Security Module (HSM) and DUKPT or other encryption algorithms from the point-of-sale. I thought it important to share what data is actually encrypted in the payment system.
&#160;
Here is a list in no [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m reading a lot about solutions that implement end-to-end encryption, where account numbers and track data is encrypted and can utilize a Hardware Security Module (HSM) and DUKPT or other encryption algorithms from the point-of-sale. I thought it important to share what data is actually encrypted in the payment system.</p>
<p>&#160;</p>
<p>Here is a list in no particular order: </p>
<p><strong><em>Gateways:</em></strong></p>
<ul>
<li><a title="http://merchantwarehouse.com/merchantware" href="http://merchantwarehouse.com/merchantware">MerchantWarehouse MerchantWare</a> </li>
<li><a href="http://www.shift4.com/">Shift4</a> &#8211; <a href="http://www.shift4.com/4go.htm">4go</a> </li>
<li><a href="http://www.elementps.com/">Element Payment Services</a> </li>
<li><a href="http://www.trustcommerce.com">Trust Commerce</a> &#8211; <a href="http://www.trustcommerce.com/tcsmartproducts.php">TC Smart</a> </li>
<li><a href="https://www.nmi.com/newsmedia/index.php?ann_id=33">Network Merchants, Inc.</a> </li>
<li><a href="https://www.eprocessingnetwork.com/">eProcessing Network</a> </li>
</ul>
<p><em>(contact me and I&#8217;ll add you if you are not listed)</em></p>
<p>&#160;</p>
<p>Most of these are ISO&#8217;s that sell you a merchant account and access to their gateway that uses &quot;end-to-end&quot; encryption and that it will shift the PCI and PA-DSS burden from you to them, if you are a merchant, some claim you don&#8217;t even need to go through PCI compliance because you don&#8217;t have access to the card numbers or the encryption keys to decrypt the cards (Please also see <a href="http://storefrontbacktalk.com/story/010709taylorgateway">this post</a> on this subject).&#160; This is all really good stuff, I&#8217;ve written about <a href="http://www.paymentsystemsblog.com/2008/03/27/encrypted-traffic-from-within-the-pci-zone/">End-to-End Encryption before</a> and am a big proponent of it. This can help prevent &quot;sniffers&quot; and card capturing malware from capturing track data and account numbers in the clear as they traverse your internal network. Attackers would either need to install card skimmers or gain access to encryption keys, or use brute force methods against captured encrypted data to capture data at your store.</p>
<p><strong>But it isn&#8217;t really End-to-End Encryption.</strong></p>
<p>Let look at two examples:</p>
<ol>
<li>A typical small merchant using a payment gateway </li>
<li>A large retailer or processor/gateway that uses a payment switch </li>
</ol>
<p>&#160;</p>
<h4>A typical small merchant that uses a payment gateway:</h4>
<table cellspacing="0" cellpadding="2" width="400" border="0">
<tbody>
<tr>
<td valign="top" width="400"><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2009/01/slide2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="Slide2" src="http://www.paymentsystemsblog.com/wp-content/uploads/2009/01/slide2-thumb.png" width="404" border="0" /></a></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<h4>A large retailer or processor/gateway that uses a payment switch</h4>
<table cellspacing="0" cellpadding="2" width="400" border="0">
<tbody>
<tr>
<td valign="top" width="400"><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2009/01/slide1.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="Slide1" src="http://www.paymentsystemsblog.com/wp-content/uploads/2009/01/slide1-thumb.png" width="404" border="0" /></a> </td>
</tr>
</tbody>
</table>
<p><em>( uses leased lines to connect directly to a Payment Processor (FDR, Chase/PaymentTech, Fifth Third, MPS, etc ) or Interchange Network (VisaNet, BankNet, etc )</em></p>
<p>Let&#8217;s say that you are using a gateway or even a switch that supports an encrypted message format from the point-of-sale (POS). The area in <font color="#ff0000"><strong>RED</strong></font><font color="#000000"> in each diagram shows where the account number traverses the payment networks in clear text. At the small merchant example from the Gateway to the rest of the network &#8211; the account number and track data and CVV2/CVC2 data is sent in the clear. In the direct connect model with the Payment Switch (which actually just operates as a local gateway) from the payment switch to the rest of the network. <strong>So End-to-End is really not End-to-End at all</strong>. (it depends on where you define end <img src='http://www.paymentsystemsblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; This should also explain why End-to-End Encryption in its current state would not of prevented the breach at <a href="http://www.paymentsystemsblog.com/2009/01/20/heartland-payment-systems-breach/">Heartland Payment Systems</a> &#8211; as a processor they need to connect and communicate over the interchange networks using TCP/IP connection and ISO-8583 messages to these endpoints.</font></p>
<p>&#160;</p>
<p>Why is this ?&#160; The Payment interchange networks and message formats that processors and the Interchange networks use does not support this in their current message formats (primarily ISO-8583) There is no room in the current implementations of Visa&#8217;s Base1, MasterCard&#8217;s MIP, or FDR&#8217;s message formats for example. Data Elements can be added to support this, but would require massive changes to Payment Systems infrastructures and systems.</p>
<p>&#160;</p>
<p>Does any one have any solutions for this ? Please provide comments below &#8212; I&#8217;ll provide a follow-up blog post with some of my ideas.</p>
<p>&#160;</p>
<p>Remember that End-to-End is really not End-to-End, it may shift or transfer some of the compliance &quot;burden&quot;&#160; from the merchant to that of the processor, but still exists in clear text on private networks and at processors.&#160; Oh, and tokenization and secure card vaults would work the same way here, the cards need to be translated to their raw value to ride the payment networks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2009/01/20/when-end-to-end-encryption-is-really-not-end-to-end/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Batch vs. Real-Time Processing in e-commerce environments</title>
		<link>http://www.paymentsystemsblog.com/2008/12/17/batch-vs-real-time-processing-in-e-commerce-environments/</link>
		<comments>http://www.paymentsystemsblog.com/2008/12/17/batch-vs-real-time-processing-in-e-commerce-environments/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 16:36:20 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Payment]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2008/12/17/batch-vs-real-time-processing-in-e-commerce-environments/</guid>
		<description><![CDATA[I was having a discussion recently about payment processing in e-commerce environments, specifically Batch versus Real-Time Authorizations. Batch processing has a one-a-day connotation, or that it is simply file based.&#160; Why would you not want to send transactions real-time was the question to me?&#160; 
My Answer:&#160; Any time you are not face to face with [...]]]></description>
			<content:encoded><![CDATA[<p>I was having a discussion recently about payment processing in e-commerce environments, specifically Batch versus Real-Time Authorizations. Batch processing has a one-a-day connotation, or that it is simply file based.&#160; Why would you not want to send transactions real-time was the question to me?&#160; </p>
<p><em>My Answer:&#160; Any time you are not face to face with a customer or if there is a delay before the customer receives the product or service, you should do Near-Time authorizations with the intent of not allowing the mechanics of the authorization impact the customer.</em></p>
<p>Let me explain:</p>
<p>It comes down to the customer checkout experience as well as to help prevent <a href="http://www.google.com/search?hl=en&amp;client=firefox-a&amp;channel=s&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;hs=3bJ&amp;q=shopping+cart+abandonment&amp;btnG=Search">shopping cart abandonment</a> the payment process should not be an impediment to the customer ordering an item. Especially if there is a glitch, communication issue, or any other outage in the authorization process including late or slow replies. You don&#8217;t want your customer to get frustrated during the order process, because they will go some where else to shop.</p>
<p>What is an alterative approach ?</p>
<p>Take the order, log it in a Database with a status of &quot;Payment Pending&quot; or &quot;Authorization Pending&quot;&#160; Have a batch process or scheduled task or cron job that runs on a periodic basis to loop through the list of Orders with Pending Payment Statuses, Securely acquire the required authorization data elements required for the authorization request <strong><em>(Considerations need to be made regarding the retention of CVV2 subsequent to the authorization request, and how the authorization data is managed between the order and authorization request ) </em></strong>and perform Near-Time Authorizations for these orders. Approval responses update the Order Records in the Database, and &quot;errors&quot; and are placed to try again at the next run (Consider Reversals and Duplicate Transaction Checking here on error responses to protect your customers open-to-buy) Declines are noted as Payment Failed, and you send a payment email allowing your customer be notified that the authorization failed, and prompt them to update their payment information on a Secure Account Web Page or call you to provide it over the phone. (Note this method wont work if you are doing any 3D-Secure &#8211; Verified by Visa, MC Secure Code , stuff &#8212; Which I&#8217;ve used I think 2 times in the last 5 years.)</p>
<p>&#160;</p>
<p>Our you could do it real time and put a message on your cart to your customer, &quot;Please Try Again Later&quot; when an issue occurs with your payment gateway or processor &#8212; They will Try Again Later, somewhere else.</p>
<p>&#160;</p>
<p>In retail environments (or in e-commerce environments with large volume) where real-time is required, you need a redundant payment switch that can handle multiple outbound connections to your processors primary and secondary authorization centers (geographical diversity in their data centers) that run on separate connections (routers, outbound copper, and different telcos)&#160; but also read <a href="http://www.andyorrock.com/2008/07/no-circuit-dive.html">this</a> here, Andy talks about this in a little more detail, and talks about geographical diversity that runs though a common <a href="http://en.wikipedia.org/wiki/Central_office">CO</a> in an issue that a client had with an authorization provider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2008/12/17/batch-vs-real-time-processing-in-e-commerce-environments/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>mobile commerce &#8211; sms text notifications</title>
		<link>http://www.paymentsystemsblog.com/2008/10/09/mobile-commerce-sms-text-notifications/</link>
		<comments>http://www.paymentsystemsblog.com/2008/10/09/mobile-commerce-sms-text-notifications/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 13:59:48 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[mcommerce]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2008/10/09/mobile-commerce-sms-text-notifications/</guid>
		<description><![CDATA[If you have ever used Obopay or even social networking site Facebook, chances are that you have interacted with your mobile phone with these sites in some manner with your phone.&#160; Obopay, is a little more obvious, but you receive text notifications when you send or received money on your mobile.&#160; Facebook sends text messages [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2008/10/picture-20.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 15px 0px 0px; border-right-width: 0px" height="244" alt="Picture 20" src="http://www.paymentsystemsblog.com/wp-content/uploads/2008/10/picture-20-thumb.jpg" width="222" align="left" border="0" /></a>If you have ever used <a href="https://tools.obopay.com/buttons/ooqKxS_ao_10">Obopay</a> or even social networking site <a href="http://www.facebook.com/">Facebook</a>, chances are that you have interacted with your mobile phone with these sites in some manner with your phone.&#160; Obopay, is a little more obvious, but you receive text notifications when you send or received money on your mobile.&#160; Facebook sends text messages to your registered mobile phone number for you to validate your account, Obopay also uses multi-factor authentication to validate the user of its website using a phone call and spoken code, or a text with a message and a code that need to type in a webpage. This is called <a href="http://www.financetech.com/featured/showArticle.jhtml?articleID=202600483">Out-of-Band Authentication</a> and your bank may have implemented something similar for its Internet banking.</p>
<p>&#160;</p>
<p>Yesterday, I researched and implemented text notifications when you perform an Reload or Add Money transaction on our issuing platform to your prepaid card using an interface to a <a href="http://en.wikipedia.org/wiki/SMS_gateway">SMS Gateway</a>. Check it out below: I&#8217;m using my <a href="http://www.amazon.com/gp/product/B001BZJ54U?ie=UTF8&amp;tag=dbergertcom-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B001BZJ54U">Nokia E71</a> here.</p>
<p>&#160;</p>
<div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:026cef26-6c0d-4651-87eb-a63cf80176b9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<div id="b7d89b84-09ee-49e4-8cb7-099a876de2ea" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=YQApNYVVDDk" target="_new"><img src="http://www.paymentsystemsblog.com/wp-content/uploads/2008/10/video81c57ae24194.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('b7d89b84-09ee-49e4-8cb7-099a876de2ea'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/YQApNYVVDDk\&quot;&gt;&lt;\/param&gt;&lt;param name=\&quot;wmode\&quot; value=\&quot;transparent\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/YQApNYVVDDk\&quot; type=\&quot;application/x-shockwave-flash\&quot; wmode=\&quot;transparent\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2008/10/09/mobile-commerce-sms-text-notifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product Release Cycle</title>
		<link>http://www.paymentsystemsblog.com/2008/07/31/product-release-cycle/</link>
		<comments>http://www.paymentsystemsblog.com/2008/07/31/product-release-cycle/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 13:35:51 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Systems]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2008/07/31/product-release-cycle/</guid>
		<description><![CDATA[I&#8217;ll just say it; I&#8217;m proud of our release cycle for OLS.Switch.
&#160;
It has been my experience (YMMV) both first hand running an authorization host/switch (issuing and acquiring) and as an IT Security Auditor and QSA &#8211; that either Core Banking applications or Payment Switches fall into one of the following when it relates to upgrades, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paymentsystemsblog.com/wp-content/uploads/2008/07/update.jpg"><img height="109" alt="update" src="http://www.paymentsystemsblog.com/wp-content/uploads/2008/07/update-thumb.jpg" width="123" /></a>I&#8217;ll just say it; I&#8217;m proud of our release cycle for <a href="http://www.olsswitch.com">OLS.Switch</a>.</p>
<p>&#160;</p>
<p>It has been my experience (<a href="http://en.wiktionary.org/wiki/your_mileage_may_vary">YMMV</a>) both first hand running an authorization host/switch (issuing and acquiring) and as an IT Security Auditor and QSA &#8211; that either Core Banking applications or Payment Switches fall into one of the following when it relates to upgrades, changes, or security updates:</p>
<ul>
<li>&quot;The Vendor set it up, we don&#8217;t touch it&quot; </li>
<li>&quot;We don&#8217;t patch it because we are afraid&quot; </li>
<li>&quot;We cringe everything we need to install a new release of the software&quot; </li>
<li>&quot;Last time we did an upgrade, we had x amount of downtime&quot; </li>
<li>&quot;It all goes smooth like clockwork&quot;&#160; <img src='http://www.paymentsystemsblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </li>
</ul>
<p>&#160;</p>
<p>During <a href="http://en.wikipedia.org/wiki/Vulnerability_assessment">Vulnerability Assessments</a> and <a href="http://en.wikipedia.org/wiki/Pen_test">Penetration Testing</a> on the Internal Networks that I performed&#8211; My observations from an operating system, database and application perspective &#8211; these systems are typically not keep current or run on a platform that the organization is not very familiar which and relies on outside support. The application was not cohesive to the rest of their operating environment: systems, technologies, and procedures.</p>
<p>&#160;</p>
<p>Installing new releases of our software (or rather our clients installing releases of new software) is something that does not make me cringe. (and I used to not sleep very well in the past)&#160; At least one of our clients seems to agree as well. (See Andy&#8217;s <a href="http://www.andyorrock.com/2008/07/a-very-simple-p.html">&quot;A very simple platform to support&quot;</a>)</p>
<p>&#160;</p>
<p>We just rolled out a new release that was quite large (see <a href="http://www.andyorrock.com/2008/07/flexible-spendi.html">Flexible Spending Accounts (New Initiatives, Part 3</a>) and had changes that impacted pretty much every transaction path due to partial authorization and credit reversal support, and required heavy regression testing. Our <a href="http://www.ambysoft.com/essays/agileLifecycle.html#Figure1">agile</a> based SDLC is a big help with this, we have very iterative development processes and frequent testing which also means less large bulking updates that break everything.</p>
<p>&#160;</p>
<p>Another success factor is our simplicity of upgrading our program code and binaries. It is really as simple as:</p>
<ul>
<li>Stop the OLS.Switch Service or Daemon </li>
<li>create a backup copy of the directory or file path where OLS.Switch is installed </li>
<li>Start the OLS.Switch Service or Daemon </li>
<li>Perform test transactions and monitor. </li>
<li>The Back-Out plan is to stop the service and revert back to the backup copy. </li>
</ul>
<p>&#160;</p>
<p>Further, System Implementation Design can have a big impact on Up-time;&#160; we run multiple independent application servers behind load balancers, that allows us to gracefully stop an application &#8211; which stops accepting new transactions when finishing to process those in its queue, and the load balancer stops routing transactions to this application server. Allowing an upgrade to be made while other application servers are still processing transactions. Uptime, not system uptime, but uptime processing transactions doesn&#8217;t have to suffer for &quot;scheduled maintenance&quot;, or security related patches and reboots.</p>
<p>&#160;</p>
<p>I think we have a low-risk upgrade/update path that our clients are very comfortable with &#8211; So in 7 months into the year &#8211; we have had a dozen releases to add additional functionality, address endpoint changes, and implement new transaction types.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2008/07/31/product-release-cycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stratus Book Offer: Fault-Tolerance for Dummies and Virtualization for Dummies</title>
		<link>http://www.paymentsystemsblog.com/2008/07/30/stratus-book-offer-fault-tolerance-for-dummies-and-virtualization-for-dummies/</link>
		<comments>http://www.paymentsystemsblog.com/2008/07/30/stratus-book-offer-fault-tolerance-for-dummies-and-virtualization-for-dummies/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 13:06:49 +0000</pubDate>
		<dc:creator>db</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Systems]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/2008/07/30/stratus-book-offer-fault-tolerance-for-dummies-and-virtualization-for-dummies/</guid>
		<description><![CDATA[

Stratus Technologies, famous for fault tolerant computers, the operating system VOS, and its newer ftServers line that can run Red Hat Enterprise Linux or Windows Server 2003 is giving away a book offer on Fault-Tolerance and/or Virtualization for dummies.&#160; Get your copies here.

Stratus has two Virtualization options one for its hardware, another product is a [...]]]></description>
			<content:encoded><![CDATA[</p>
<p><strong><img height="163" alt="Fault-Tolerance for Dummies and Virtualization for Dummies" src="http://www.stratus.com/images/library/dummies-no-button.gif" width="200" align="left" /></strong></p>
<p><strong><a href="http://www.stratus.com/index.htm">Stratus Technologies</a>, famous for <a href="http://en.wikipedia.org/wiki/Fault_tolerant">fault tolerant computers</a>, the operating system <a href="http://en.wikipedia.org/wiki/Stratus_VOS">VOS</a>, and its newer ftServers line that can run Red Hat Enterprise Linux or Windows Server 2003 is giving away a book offer on Fault-Tolerance and/or Virtualization for dummies.&#160; </strong><strong><a href="http://www.stratus.com/library/dummies-landing.htm">Get your copies here</a>.</strong></p>
<p><strong></strong></p>
<p><strong>Stratus has two Virtualization options one for its hardware, another product is a software solution for commodity boxes.&#160; 1) </strong><strong> VMWare, using the <a href="http://www.vmware.com/products/vi/">VMWare Infrastructure 3 on ESX</a>,&#160; 2) <a href="http://www.stratus.com/products/avance/index.htm">Avance</a>, which uses Citrix&#8217;s Xen and other HA components to build a pair of HA Virtual Servers.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2008/07/30/stratus-book-offer-fault-tolerance-for-dummies-and-virtualization-for-dummies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A PRAGMATIC VIEW OF PAYMENT PROCESSING PERFORMANCE &amp; SCALABILITY</title>
		<link>http://www.paymentsystemsblog.com/2008/05/28/a-pragmatic-view-of-payment-processing-performance-scalability/</link>
		<comments>http://www.paymentsystemsblog.com/2008/05/28/a-pragmatic-view-of-payment-processing-performance-scalability/#comments</comments>
		<pubDate>Wed, 28 May 2008 14:44:15 +0000</pubDate>
		<dc:creator>hbursi</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[oltp]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tps]]></category>

		<guid isPermaLink="false">http://www.paymentsystemsblog.com/?p=51</guid>
		<description><![CDATA[Payment Processing Application Performance
One of the frequent concerns about deploying any payment solution is “will it be able to process my transactions in a timely manner?” This is both an easy and hard question to answer. In some instances, a bad application design can lead to poor performance. In others, it is faulty system integration [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="Cambria;">Payment Processing Application Performance</span></h2>
<p class="MsoNormal" style="justify;"><span style="Calibri;">One of the frequent concerns about deploying any payment solution is “will it be able to process my transactions in a timely manner?”<span style="yes;"> </span>This is both an easy and hard question to answer. In some instances, a bad application design can lead to poor performance. In others, it is faulty system integration of one or more of the other components causing performance bottlenecks. Generally, there are several major components in the processing of a transaction that can significantly affect throughput and response time performance. </span></p>
<p class="MsoNormal" style="justify;"><span id="more-51"></span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">These major components are the network, the server hardware, the encryption hardware, the system software, and the application software. How well these pieces are integrated will always have a major impact on the overall performance of any given payment solution. For example, if a throughput rate of 25 transactions per second (TPS) is required and the hardware encryption device selected is only capable of 12 encryptions or decryptions per second, then the encryption device will be the bottleneck and no amount of software tuning can or will improve the throughput above 12 TPS. Unless the throughput of the encryption device is known, then performance degradations may manifest themselves as a software performance issue rather than a system integration issue.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">A payment processing software provider, unless they dictate specific requirements for some or all system components, has limited control over the effect on performance of all but the application software. Software providers will normally make recommendations for these components but cannot predicate the performance of their software products on these recommendations being followed.<span style="yes;"> </span>Most payment applications, if they measure performance, do so from time of request message arrival at the application level to time of response message departure from the application level. Some may measure overall response time only; others will measure internal processing and external “wait” time separately.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Historically, in order to have some semblance of control over as many factors as possible, payment applications were written for specific platforms. Usually these platforms were proprietary fault tolerant systems whose cost/performance ratios were degraded by the inherent overhead of providing hardware- and system software- level fault tolerance.<span style="yes;"> </span>In these instances, performance &#8212; up to a limiting point &#8212; could be bought at a premium price. Frequently these fault tolerant platforms required special software design and coding techniques to properly and fully take advantage of the fault tolerance attribute. <span style="yes;"> </span>And if other components in the path such as communications routers and connections are not redundant, the premium paid for fault tolerance is all for naught. </span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Generally, it pays to initially set aside specialty hardware arrangement considerations and focus first on the payment application design itself. Pursuit of high performance using a poorly written application on a premium proprietary platform will be a truly expensive undertaking.<span style="yes;"> </span>When confining the performance issue to the payment application itself, there are a few key software attributes that contribute to the tangible performance characteristics of an <a href="http://en.wikipedia.org/wiki/OLTP">online transaction processing</a> (‘OLTP’) application. These key attributes are code path length, code efficiency, database design, and encryption approach.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Code path length is relatively objective and refers to the lines of code which translate eventually into the number of machine instructions executed in the process path of a transaction. Longer paths tend to produce longer response times and lower levels of performance and, obviously, shorter paths produce the converse. </span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Code path efficiency is more subjective and refers to the art (or science, if that is your viewpoint) of finding the logic design that requires the least lines of code to perform a particular function and the least number of functions to complete a transaction processing flow.<span style="yes;"> </span>Generally, but not always, the more experienced designer and coder will produce better software. However, for payment processing, the addition of the experience level of understanding the nuances of OLTP (some deign to call this “real-time processing”) in general and payments OLTP in particular is another efficiency factor.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Database design and how it affects any kind of application is a well-published subject that we do not need to cover here. Suffice to say, a poor database design or a poor implementation of it will have significant impact on an OLTP application which is sweating minute changes in the milliseconds that a process path takes. Again, OLTP and payments experience goes a long way toward subjugating database design as a performance issue. Simply stated, data reads and writes must be efficient and kept to a minimum.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Encryption of in-flight or stored card data is a necessary security step in processing a payment. Without a doubt, it is an expensive process often best relegated to an off-server “single purpose computing device.” However, there are some board-level implementations that do work well if they do not steal primary server CPU cycles. In either case, once again, OLTP experience will mitigate the risk of a poorly implemented encryption design. </span></p>
<h2><span style="Cambria;">Payment Processing Application Scalability</span></h2>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Scalability is generally defined as the property of an application to improve its performance due to a change in scale of its hardware environment. Commonly, the hardware change usually involves either faster processors or more processors. It may also include chip or disk memory components with higher transfer rates. For OLTP applications, the environmental impact zone expands to include internal and external connectivity as well as database considerations. It does no good to scale the application if the encryption, database or communications processes cannot scale accordingly.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Many will look solely to an application for scalability when, in reality, it is also very much a system integration issue. Conversely, any application, including an OLTP application, can be designed to be non-scalable.<span style="yes;"> </span>One simple way is to make the application single-threaded … pretty much the “kiss of death” for an OLTP payment processing environment. </span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Assuming an OLTP application is multi-threaded and has an efficient code path, where can scalability go wrong? There is a multitude of ways. For example, improperly or poorly configured network routers can overload one processing path while underutilizing another path.<span style="yes;"> </span>Poorly configured servers with insufficient memory or processor power will invariably lead to poor performance.<span style="yes;"> </span>Using server clusters incorrectly can lead to load balancing and reliability issues. If they are not set up properly, database servers will severely impact an OLTP application’s ability to achieve even marginal performance. </span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">So, where does scalability really come from or how is it best achieved? Scalability fundamentally derives from the ability of an application to take advantage of a faster server or more servers or both. That means the applications will produce improved performance via increased transaction capacity, reduce response time or both. Assuming a reasonable design and execution, most applications (our earlier single-threaded example notwithstanding) will show linear improvements in performance relative to the change in server count and/or processing power. Running on multiple servers does require the application be replicable in some means or that the servers themselves provide the replication transparently. </span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">The multi-server approach to scalability will eventually become both complex and expensive as the number of servers increases. <span style="yes;"> </span>Increasing the processing power of a server seldom, if ever, creates any additional complexity. And, for commodity servers, Moore’s Law of computing power (2 times power increase every 18 months) comes into play and the additional expense of more processing power is not going to be significant.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">Another approach is using virtualization technology to create replication. <span style="yes;"> </span>A Virtual Machine (‘VM’) will, in most cases, create a veneer of replication even when the application is not conducive to duplication. However, the VM approach possesses a fatal flaw: it creates potential single points of failure for multiple instances of the application. This weakness can be mitigated by running the VM on a proprietary fault tolerant hardware platform or in some form of clustered environment. Obviously, this two-part approach adds additional hardware costs on top of the costs for the virtualization technology. And it is a complex solution that creates a number of integration issues to be resolved.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">For any payment processing application, replication creates a number of integration and configuration issues. As additional copies of the application are created, communications connections between the application and encryption devices, terminals (POS, ATM, Mobile, Kiosk, etc.) and gateways must be replicated. As connections are replicated, a decision must be made as to whether these are real or virtual connections. Juxtaposed to those choices are the decisions made on the various connection types in regards to failure points and backup paths.<span style="yes;"> </span>If a single physical communication line outage takes out three virtual connections to three separate applications instances, then all three application instances are a single point of failure by default.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">When factoring the communications connections along with encryption device and database connections and communications routers into the decision cycle, the complexity of the integration and configuration process increases exponentially.<span style="yes;"> </span>And we haven’t even begun to talk about the overhead of these extra connections. Stated simply, over-replication will often create more problems than it solves.</span></p>
<p class="MsoNormal" style="justify;"><span style="Calibri;">So, it is readily apparent that scalability for an OLTP application is far more than just a matter of tossing more and faster hardware into the performance pot. For OLTP applications in general and payment processing applications specifically, scalability is a delicate balance of server power and application replication. Knowing where that balance occurs comes from years of experience designing, supporting and managing payment processing environments. In another post, I will talk about how <a href="http://www.olsdallas.com">OLS </a>created a practical solution for the performance and scalability issues for a payments processing application.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paymentsystemsblog.com/2008/05/28/a-pragmatic-view-of-payment-processing-performance-scalability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
