tag:blogger.com,1999:blog-37630912845445709212024-03-18T02:47:47.723-07:00SimplyTappThe official blog of SimplyTapp, the inventors of Host Card Emulation (HCE) technology, empowering issuers and developers to leverage mobile devices for proximity payments. Visit <a href="http://www.simplytapp.com">SimplyTapp.com</a> to learn more.Tom Fhttp://www.blogger.com/profile/11863511269790177365noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-3763091284544570921.post-28247626180998058482015-08-21T10:10:00.000-07:002015-08-21T10:10:13.386-07:00Apple Pay usage dips; banks, take note<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ho0Mf3Wz7qw/VddaeehI4nI/AAAAAAAAAe0/xo23r8PZdFE/s1600/Apple%2BPay%2BStock%2BPhoto_SimplyTapp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://3.bp.blogspot.com/-ho0Mf3Wz7qw/VddaeehI4nI/AAAAAAAAAe0/xo23r8PZdFE/s320/Apple%2BPay%2BStock%2BPhoto_SimplyTapp.jpg" width="320" /></a></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In a new report from</span><a href="http://www.pymnts.com/in-depth/2015/apple-pay-adoption-the-falling-side-of-the-bell-curve/#.VdJNlflVikr" style="text-decoration: none;"><span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">PYMNTS.com</span></a><span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, retail data analytics firm InfoScout is reporting Apple Pay usage has been on a steady decline since March 2015. Of the nearly 40 percent of consumers surveyed who said they had used Apple Pay to complete a transaction, only 23 percent still said “yes” three months later. What’s more, Apple Pay saw a 15 percent dip in committed users – down to 33 percent as of June 2015. </span></div>
<b id="docs-internal-guid-ff807b1e-5134-bdbe-8751-7ee4ae033276" style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">While many are dumbfounded, Apple’s steady decline is really not that surprising. What it instead reveals is the effectiveness of organic user growth over traditional marketing – a critical, and potentially crippling, difference to successful mobile payments adoption. As the hype surrounding the launch of the iPhone 6 has dwindled, it appears Apple Pay usage has as well.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So why is this happening? The payment experience alone of Apple Pay is too different from anything the consumer previously used for them to remember –or even care – about making it a habit unless they are constantly reminded to. In the iOS eco-system Apple is not flexible to mobile banking, which has forced all bank cards into an aggregated Passbook wallet that is very out of the context of the users’ typical banking application.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Unfortunately for the banks who are now locked into Apple Pay, the technology will continue to grow at a much slower rate than what they are paying for. They do, however, still have a chance to turn things around and take back control from Android Pay by deploying their own mobile payment solution.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Android Pay is deployed on only 5 percent of all Android devices. Bank product managers are faced with two distinct choices as a result: encourage mobile users to download and access their credit card accounts through Android Pay, or modify their existing banking app with their own tap-and-pay feature.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With option two, the conversion rate and lack of additional steps seems like a more practical and favorable approach. More importantly, banks don’t have to worry about competing with another application to keep users engaged and coming back. With option two, banks can take a low-cost approach and organically grow payments into their business.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Like Apple Pay, banks can spend as much money on promoting Android Pay but at what cost? The reality is tap-and-go payments will not see widespread consumer adoption without steady, frequent exposure via a familiar user experience. An initial high-profile launch or big marketing budget will only go so far.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">For contactless payments to endure, banks are better off using their own apps to court users. They already employed this approach with the “remote check cashing feature” and experienced widespread success by continuously making users aware they could perform digital check deposits until the practice became second nature. A bank that deploys their own solution within their own app faces far fewer friction points than a bank that leans on Android Pay, Apple Pay or any other third party. </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In the long run mobile payment adoption rates will improve over time. But ultimately it is the banks who have the most to gain by fostering consumer relationships and acceptance. While the opportunity may have passed for Apple Pay, it’s not too late for financial institutions to take back control of their tap-and-go experience on their own terms.</span></div>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Calibri; font-size: 14.666666666666666px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">What are your thoughts on Apple Pay’s drop in usage? Do you agree, or disagree that things can be different for Android Pay?</span></div>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com246tag:blogger.com,1999:blog-3763091284544570921.post-23237467266688793662015-05-07T08:38:00.001-07:002015-05-07T08:39:16.055-07:00Innovate: BIN or IIN sponsor<div class="post-header" style="background-color: white; border-bottom-color: rgb(224, 226, 228); border-bottom-style: solid; border-width: 0px 0px 1px; box-sizing: border-box; color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 13px; font-stretch: inherit; height: 50px; line-height: 17px; margin: 0px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="header-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; margin: 0px; overflow: hidden; padding: 0px 20px; text-overflow: ellipsis; vertical-align: baseline; white-space: nowrap;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-miniprofile-id="LI-2222459" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="title" href="http://www.linkedin.com/profile/view?id=14100603&trk=groups-post-b-author" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; display: inline-block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: 52px; margin: 0px; padding: 0px 5px 0px 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a> </span><span class="subtitle" style="border: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 52px; margin: 0px; padding: 0px; vertical-align: baseline;">CEO, Co-Founder at SimplyTapp</span></div>
</div>
<div class="post-body" style="background-color: white; border: 0px; box-sizing: border-box; color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 13px; font-stretch: inherit; line-height: 17px; margin: 0px; padding: 0px; vertical-align: baseline;">
<div class="post-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 15px 20px 5px; position: relative; vertical-align: baseline; word-wrap: break-word;">
<div class="post-date" style="border: 0px; bottom: 16px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 20px; vertical-align: baseline;">
1 day ago</div>
<h3 class="post-title" style="border: 0px; box-sizing: border-box; color: #434649; font-family: inherit; font-size: 20px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: normal; line-height: 24px; margin: 0px 0px 10px; padding: 0px; vertical-align: baseline;">
BIN or IIN sponsor</h3>
<div class="post-details" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin-bottom: 10px; margin-right: 25px; overflow: hidden; padding: 0px; vertical-align: baseline;">
guys, i'm a rookie here in this group, but the title looks interesting. we are trying to streamline the BIN sponsor step if there is such a thing. does anyone know of or have a low friction way through this process?</div>
<ul class="post-actions" style="border: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px 0px 10px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; display: inline-block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a data-li-disc-act="comment" href="https://www.linkedin.com/groupItem?view=&gid=1318727&type=member&item=6001413318613413889&trk=groups-post-b-comment" style="border: 0px; box-sizing: border-box; color: #006fa6; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Comment</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-comment-count="10" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">10</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; display: inline-block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle active" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-deactivate" data-li-disc-act="unlike" data-li-disc-url="/grp/unlike?objectId=1318727-6001413318613413889&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Unlike</a><span class="count has-value" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="4" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">4</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; display: inline-block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle active" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-deactivate" data-li-disc-act="unfollow" data-li-disc-url="/grp/unfollow?objectId=1318727-6001413318613413889&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Unfollow</a></span></li>
</ul>
</div>
<div class="post-likers" style="background-color: #f1f3f5; border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 8px 20px; vertical-align: baseline;">
<span aria-hidden="true" class="icon" style="border: 0px; box-sizing: border-box; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 5px 0px 0px; padding: 0px; text-align: center; vertical-align: baseline; width: 16px;"></span><span class="body" style="border: 0px; box-sizing: border-box; display: block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; overflow: hidden; padding: 0px; vertical-align: baseline;"><span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJoUEu_oLgb0fS9Mgjorp2UYxlcD7cGIaQPspUqj9sxAgTUZ6EGQEQ5x3Mp7cidLbP" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJoUEu_oLgb0fS9Mgjorp2UYxlcD7cGIaQPspUqj9sxAgTUZ6EGQEQ5x3Mp7cidLbP" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=8773765&trk=groups-post-b-liker" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">JJ Hornblass</a></span></span>, <span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_26hVtSnIRiSS_zSpbESE7OQHarZm8lg1UWS8s2bGbjFkycaN1y9txmg3aUJWCmtjtbIa_Uokuqx2GQ-P9RFghw" data-li-url="/profile/mini-profile-with-connections?_ed=0_26hVtSnIRiSS_zSpbESE7OQHarZm8lg1UWS8s2bGbjFkycaN1y9txmg3aUJWCmtjtbIa_Uokuqx2GQ-P9RFghw" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=210282078&trk=groups-post-b-liker" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Breanna Punzone</a></span></span>, <span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603&trk=groups-post-b-liker" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span>, <a class="likers-more" data-href="/grp/post/likers?id=1318727-6001413318613413889" data-li-dialog-title="4 people like this discussion" href="https://www.blogger.com/null" style="border: 0px; box-sizing: border-box; color: #008cc9; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">+1</a> like this</span></div>
<div class="post-comments comment-stream-preview" style="background-color: #f1f3f5; border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<div class="disc-comment-stream" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; position: relative; vertical-align: baseline;">
<ul class="disc-comment-list" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/008/19d/15211e5.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
to be clear. we would love to call or go to a web form and "buy a BIN", fill out some forms and pay our money in a week or two and be able to issue card PAN's. is that too much to ask in a bank sponsor?</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="text" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Like</span><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="remove" data-li-disc-undo-url="&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?deleteComment=&gid=1318727&type=member&item=6001413318613413889&commentID=6001414678247387136&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Delete</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/4/000/15c/366/0725f56.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Bill Ralston</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
Doug, why do you need the BIN? What makes finding a sponsor something you need to do on a regular basis?</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-activate" data-li-disc-act="like" data-li-disc-url="/groupItem?setLike=&gid=1318727&type=member&item=6001413318613413889&commentID=6001422859191201792&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Like</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" href="https://www.linkedin.com/inbox/#compose?connId=1233507&groupId=1318727" role="button" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" tabindex="0" target="_blank">Reply privately</a></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="flagInappropriate" data-li-disc-undo-url="/groupItem?unflag=&gid=1318727&type=member&item=6001413318613413889&ajax=true&commentID=6001422859191201792&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?flag=&gid=1318727&type=member&item=6001413318613413889&commentID=6001422859191201792&flagReason=inappropriate&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Report spam</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/008/19d/15211e5.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
we would like to issue cards to an app that can be used at NFC POS terminals that we can settle over ACH through settlement partners like dwolla or paypal, enabling them to compete against the card networks at the POS. sort of like de-coupled debit. the key is having the merchant NOT change anything (except for maybe an opt-in procedure), but not change any hardware or POS software on their end. but we get to authorize the transaction at our switch on the other side of the network. to get the routing on that network, my understanding is that we need a BIN or IIN (for pin debit...this would work too), in order to route the auth request to our backend.</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="text" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Like</span><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="remove" data-li-disc-undo-url="&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?deleteComment=&gid=1318727&type=member&item=6001413318613413889&commentID=6001424830904152064&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Delete</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/4/000/15c/366/0725f56.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Bill Ralston</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
Which network would the merchant be using?</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-activate" data-li-disc-act="like" data-li-disc-url="/groupItem?setLike=&gid=1318727&type=member&item=6001413318613413889&commentID=6001433015958384640&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Like</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" href="https://www.linkedin.com/inbox/#compose?connId=1233507&groupId=1318727" role="button" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" tabindex="0" target="_blank">Reply privately</a></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="flagInappropriate" data-li-disc-undo-url="/groupItem?unflag=&gid=1318727&type=member&item=6001413318613413889&ajax=true&commentID=6001433015958384640&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?flag=&gid=1318727&type=member&item=6001413318613413889&commentID=6001433015958384640&flagReason=inappropriate&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Report spam</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/008/19d/15211e5.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
i think there are some options that include:<br />
pin debit networks, but also Discover Zip transactions could be an option</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="text" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Like</span><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="remove" data-li-disc-undo-url="&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?deleteComment=&gid=1318727&type=member&item=6001413318613413889&commentID=6001433766885609472&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Delete</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/4/000/15c/366/0725f56.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJInb0jBQ0FjJaml8zZIcuHcxlcD7cGIaQPspUqj9sxAgtZyuyw4fQ365JSBTIQGWf" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=1233507" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Bill Ralston</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
But I thought you were trying to avoid those card networks?</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-activate" data-li-disc-act="like" data-li-disc-url="/groupItem?setLike=&gid=1318727&type=member&item=6001413318613413889&commentID=6001568554871185408&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Like</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" href="https://www.linkedin.com/inbox/#compose?connId=1233507&groupId=1318727" role="button" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" tabindex="0" target="_blank">Reply privately</a></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="flagInappropriate" data-li-disc-undo-url="/groupItem?unflag=&gid=1318727&type=member&item=6001413318613413889&ajax=true&commentID=6001568554871185408&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?flag=&gid=1318727&type=member&item=6001413318613413889&commentID=6001568554871185408&flagReason=inappropriate&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Report spam</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/008/19d/15211e5.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
good point. the goal is more to enable competing payment forms. by separating the network rail fee from the settlement fee, it becomes much more like buying rights to use the pipes. effectively allowing for innovation on those pipes. my understanding is that the rights to use the pipes could be as little as 7 cents or so. which means the settlement form still has a lot of room to be competitive for the merchant. this would allow for digital payments that exist in the online space only today to migrate to the physical POS. just a few redemption forms that come to mind would be folks like paypal or dwolla, but also points aggregators for both loading points and redemption of, but also loyalty tracking, merchant stored value, etc. there would be a market, even at 7 cents adder for the transaction (price not to change merchant network or hardware) for many merchants just to jump right in.</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
1 day ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="text" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Like</span><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="remove" data-li-disc-undo-url="&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?deleteComment=&gid=1318727&type=member&item=6001413318613413889&commentID=6001706932866408448&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Delete</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJ8Wq-Abd52qjfSWWunbjo7cxlcD7cGIaQPspUqj9sxAjODUt0uvF-Uz7yfVyr5vy6" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJ8Wq-Abd52qjfSWWunbjo7cxlcD7cGIaQPspUqj9sxAjODUt0uvF-Uz7yfVyr5vy6" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=6381954" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/027/087/0ecb38e.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJ8Wq-Abd52qjfSWWunbjo7cxlcD7cGIaQPspUqj9sxAjODUt0uvF-Uz7yfVyr5vy6" data-li-url="/profile/mini-profile-with-connections?_ed=0_11vp0emrVaelpR7xOT9JSJ8Wq-Abd52qjfSWWunbjo7cxlcD7cGIaQPspUqj9sxAjODUt0uvF-Uz7yfVyr5vy6" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=6381954" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Tom Bellenger</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
Interesting points but for this to work well you really want a BIN from MC, Visa or Amex to get good acceptance. What's in it for the network or the issuer?</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
21 hours ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-activate" data-li-disc-act="like" data-li-disc-url="/groupItem?setLike=&gid=1318727&type=member&item=6001413318613413889&commentID=6001776401621995520&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Like</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="flagInappropriate" data-li-disc-undo-url="/groupItem?unflag=&gid=1318727&type=member&item=6001413318613413889&ajax=true&commentID=6001776401621995520&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?flag=&gid=1318727&type=member&item=6001413318613413889&commentID=6001776401621995520&flagReason=inappropriate&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Report spam</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/2/000/008/19d/15211e5.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXw7wX17zbmvlPPCh2usApQBHNiLBIe4uoFdFPEKljMayLf9eHwPQgA3C6OclHC9Q3" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=14100603" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Doug Yeager</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
great idea, but the rumors i've heard are that discover may be easier to work with in this context as they have modular offering that would be able to just buy access to the network. some other bank sponsors i assume can give similar functionality on visa/mc networks i suppose.<br />
<br style="box-sizing: border-box;" />
as far as what is in it for the sponsor, i think just money through pay to play. not much else would be involved as the brand would be controlled separately. this business in the MNO world is very similar to MVNO. basically the real MNO charges a fee for usage of their pipes to the MVNO who controls the end customer.</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
19 hours ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="text" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Like</span><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="remove" data-li-disc-undo-url="&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?deleteComment=&gid=1318727&type=member&item=6001413318613413889&commentID=6001807115121864704&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Delete</a></li>
</ul>
</div>
</div>
</li>
<li class="disc-comment" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px; position: relative; vertical-align: baseline;"><div class="comment-wrapper" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXC8vWDrFYfSG0DuY_OqKaPRHNiLBIe4uoFdFPEKljMayeTGPO0qqLp_kCC8l1jJ1P" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXC8vWDrFYfSG0DuY_OqKaPRHNiLBIe4uoFdFPEKljMayeTGPO0qqLp_kCC8l1jJ1P" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="entity-image" href="http://www.linkedin.com/profile/view?id=30436001" style="border: 0px; box-sizing: border-box; color: #96999c; cursor: pointer; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 2px 0px 0px; padding: 0px; text-decoration: none; vertical-align: baseline;"><img alt="Doug Yeager" class="image" height="100" src="https://media.licdn.com/mpr/mpr/shrink_100_100/p/3/005/00b/211/06db5a1.jpg" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 30px; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; width: 30px;" width="100" /></a></span></span><br />
<div class="comment-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 0px 50px; padding: 0px; position: relative; vertical-align: baseline;">
<div class="entity-name" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: bold; line-height: inherit; margin-bottom: 5px; padding: 0px; vertical-align: baseline;">
<span class="new-miniprofile-container /profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXC8vWDrFYfSG0DuY_OqKaPRHNiLBIe4uoFdFPEKljMayeTGPO0qqLp_kCC8l1jJ1P" data-li-url="/profile/mini-profile-with-connections?_ed=0_10x_bfaF39ikz-exWpYHSXC8vWDrFYfSG0DuY_OqKaPRHNiLBIe4uoFdFPEKljMayeTGPO0qqLp_kCC8l1jJ1P" data-tracking="" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.linkedin.com/profile/view?id=30436001" style="border: 0px; box-sizing: border-box; color: #434649; cursor: pointer; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;">Sebastien Poly</a></span></span></div>
<div class="comment-content" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 16px; margin-bottom: 5px; padding: 0px; vertical-align: baseline; word-wrap: break-word;">
100% agree Doug. An easier access to the pipes and to the amazing acceptance the schemes have built would boost innovation in a lot of verticals.</div>
<div class="comment-date" style="border: 0px; bottom: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px; padding: 0px; position: absolute; right: 0px; vertical-align: baseline;">
14 hours ago</div>
<ul class="comment-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; list-style: none; margin: 0px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><span class="toggle" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><a class="act act-activate" data-li-disc-act="like" data-li-disc-url="/groupItem?setLike=&gid=1318727&type=member&item=6001413318613413889&commentID=6001891115727339520&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Like</a><span class="count" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 0px 3px; vertical-align: baseline;">(<span data-li-disc-like-count="0" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">0</span>)</span></span></li>
<li style="border: 0px; box-sizing: border-box; color: #96999c; display: inline-block; font-family: inherit; font-size: 12px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 14px; margin: 0px 20px 0px 0px; padding: 0px; position: relative; vertical-align: baseline; white-space: nowrap;"><a class="act" data-li-disc-act="flagInappropriate" data-li-disc-undo-url="/groupItem?unflag=&gid=1318727&type=member&item=6001413318613413889&ajax=true&commentID=6001891115727339520&csrfToken=ajax:7600886147148614216" data-li-disc-url="/groupItem?flag=&gid=1318727&type=member&item=6001413318613413889&commentID=6001891115727339520&flagReason=inappropriate&ajax=true&csrfToken=ajax:7600886147148614216" href="https://www.blogger.com/null" role="button" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;" tabindex="0">Report spam</a></li>
</ul>
</div>
</div>
</li>
</ul>
</div>
<div class="disc-comment-share initialized" style="border-top-color: rgb(224, 226, 228); border-top-style: solid; border-width: 1px 0px 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 10px 20px 0px; position: relative; vertical-align: baseline;">
<form action="https://www.linkedin.com/grp/comment/create" class="disc-comment-form" method="POST" novalidate="true" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">
<div class="field-container field-body" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 10px; vertical-align: baseline;">
<label for="6001413318613413889-body" style="border: 0px; box-sizing: border-box; clip: rect(1px 1px 1px 1px); font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: 1px; line-height: inherit; margin: 0px; overflow: hidden; padding: 0px; position: absolute !important; vertical-align: baseline; width: 1px;">Add a comment...</label><textarea class="discussion-details autosizing" data-li-validate-maxlength="4000" id="6001413318613413889-body" name="body" placeholder="Add a comment..." required="" style="-webkit-box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 3px inset; -webkit-transition: height 0.2s ease-out; background: rgb(253, 253, 253); border-color: rgb(193, 193, 193); border-radius: 2px; box-shadow: rgba(0, 0, 0, 0.0980392) 0px 0px 3px inset; color: #333333; font-family: Helvetica, Arial, sans-serif; font-size: 13px; line-height: 17px; margin: 0px; max-width: 100%; overflow: hidden; padding: 7px 10px; resize: none; transition: height 0.2s ease-out; vertical-align: middle; width: 606px;"></textarea></div>
<div class="field-actions" style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px 0px 10px; vertical-align: baseline;">
<div class="field-container field-follow" style="border: 0px; box-sizing: border-box; float: left; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 4px 0px 0px; padding: 0px 0px 10px; vertical-align: baseline;">
<input checked="" id="6001413318613413889-follow" name="followPost" style="cursor: pointer; display: inline; font-family: Helvetica, Arial, sans-serif; font-size: 13px; height: 1em; margin: 0px; opacity: 0; padding: 0px; position: relative; vertical-align: baseline; width: 1em; z-index: 20;" type="checkbox" value="true" /><label for="6001413318613413889-follow" style="border: 0px; box-sizing: border-box; cursor: pointer; display: inline-block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: 15px; margin: 0px 0px 0px 5px; padding: 0px; position: relative; vertical-align: text-bottom; zoom: 1;">Send me an email for each new comment</label></div>
<button style="background-color: #287bbc; background-image: -webkit-linear-gradient(top, rgb(40, 123, 188) 0px, rgb(35, 99, 154) 100%); border-radius: 3px; border: 1px solid rgb(27, 84, 128); color: white; cursor: pointer; float: right; font-family: Helvetica, Arial, sans-serif; font-size: 12px; font-weight: bold; height: 26px; line-height: 24px; margin: 0px; overflow: visible; padding: 0px 10px; text-shadow: rgba(0, 0, 0, 0.34902) 0px 1px 1px; vertical-align: middle; white-space: nowrap; width: auto; zoom: 1;" type="submit">Comment</button></div>
</form>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com136tag:blogger.com,1999:blog-3763091284544570921.post-41989514020107374852015-02-13T14:37:00.001-08:002015-02-14T05:29:42.697-08:00HCE: The User Experience That Nobody Talks AboutHost Card Emulation (HCE) is an incredibly enabling technology. For Android developers there are a few nuances to be aware of in the form of OS rules. Not understanding how these rules apply can have a negative impact and create an embarrassing or awkward customer experience if the system should render a 'payment failure'. Here are four scenarios to keep in mind to avoid point-of-sale issues.<br />
<div style="text-align: center;">
<h4>
Avoid The Embarrassment</h4>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-I3ez-WjNUqU/VN6t7IlYiTI/AAAAAAAAAFc/G17EEfAx0to/s1600/Host%2BCard%2BEmulation%2BSimplyTapp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-I3ez-WjNUqU/VN6t7IlYiTI/AAAAAAAAAFc/G17EEfAx0to/s1600/Host%2BCard%2BEmulation%2BSimplyTapp.jpg" height="260" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: center;">
<br /></div>
<br />
The only limiting factor for the NFC radio in an Android device is whether or not the screen is lit up. What that means is that the NFC radio will turn on and could be ready for an HCE transaction is:<br />
<br />
screen is dark: NO<br />
screen is lit: YES<br />
<br />
That rule alone is an Android rule, not an application rule, and so the application will have the ability to further limit this HCE experience if it wants to. <br />
<br />
To support the best user experience, an application must be able to respond and complete an HCE transaction on demand if the screen is lit up. This should hold true even if:<br />
<br />
<b>1) application is running in the foreground</b><br />
<b>2) application is running in the background</b><br />
<b>3) application is NOT running at all because android has "repo'd" or removed it from running memory, or not started at all since a re-boot of the phone.</b><br />
<b>4) application is NOT running and a time based Limited Use Key has expired since the application stopped running</b><br />
<br />
The 1st and 2nd cases above are the easy ones as transaction data can be store in the running application memory space.<br />
<br />
Here is how android works on the 3rd and 4th scenarios. When the phone antenna engages the terminal antenna and the terminal requests a particular AID, then the android OS looks at that AID request from the terminal and decides which Card Emulation Service to startup based on the "Tap and Pay" menu options. That service is NOT your app, it is a component of your application that is expected to respond to APDU requests from the terminal. An APDU stands for Application Protocol Data Units. The challenge is that the service will most likely not contain the APDU data to respond with as the rest of the application is not currently running at that time and the data required may not be loaded. It would require that the APDU data that the reader is asking for actually must be persistent in some way on the device so that the service could get access to it and answer the terminal properly with card data. <br />
<br />
There are a few ways to store data locally, but the point is that it must happen in order to respond to the reader in time for a proper user experience. We have noted that simply expecting the application to be running on the phone at tap time is simply not reliable and that in a 24 hour window, it the app is not used, then Android has likely removed that application from memory. <br />
<br />
This is just food for thought as you are thinking of designing your own HCE application or using a vendor like ST. By the way, the SimplyTapp SDK supports all 4 scenarios listed above. The 4th is slightly more complicated, but i'll leave it up to you to noodle at.<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com51tag:blogger.com,1999:blog-3763091284544570921.post-75245734811272292922015-01-16T13:23:00.002-08:002015-02-15T18:40:10.147-08:00Are you a Tier 1 or a Tier 2 token requestor? (It matters)<div style="text-align: left;">
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With all the talk about Token Service Providers (TSP) and token requesting, I felt it was worth describing a bit more about the role of a "Token Requestor." The way the term is bandied about would lead most to believe that this is a single entity that works to pull temporary or dynamic transactional data from a master TSP for use on the mobile device, but you are about to find out it's a bit more complicated and the decision you make around this topic can have serious consequences in the future.</span></div>
<b id="docs-internal-guid-83274b2f-079c-1db8-6e58-0e1a80ac9ed0" style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We all know that the current normalized TSPs or Master Token Service Provider services are the domain of the card networks - presently MasterCard, Visa and AMEX. I don't expect that role to change overnight or in the next year or for some banks, maybe ever. But if banks expect to be able to control their own destiny with the decision, they’ll need to understand some important differences about the term “Token Requestor.”</span></div>
<b style="font-weight: normal;"><br /></b>
<h3 dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 8pt;">
<span style="background-color: transparent; color: #666666; font-family: 'Trebuchet MS'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">What’s really going on under the hood</span></h3>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Contrary to what some providers may tell you, “Token Requestor” isn’t a single entity but actually two separate roles which work in tandem. </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The goal of this article is to help readers understand the roles better because in reality the roles are as different as comparing apples and oranges (or more appropriately stated "service" and "consumer of service"). And more importantly, the selection of the roles dictate the end result of the service and in that, how “locked in” or “not locked in” you are to one provider.</span></div>
<br />
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Here is a high level diagram that depicts how tokens are issued to help better understand the 2 tiered roles of token requestors.</span></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1o2DGcbWwwsNlbu_w5WhgV9pmZexzPsf71gmFpWksyxubXfiMa4v-Iikgc9NQxeUUCkCDSasTvC2flI2fi6m_lBtdZr_XiyYKN152R7AikjXSNAuvjzrYqaAA1ElC6ACrrdlIXa0Bn0/s1600/Screen+Shot+2015-01-16+at+10.27.32+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZ1o2DGcbWwwsNlbu_w5WhgV9pmZexzPsf71gmFpWksyxubXfiMa4v-Iikgc9NQxeUUCkCDSasTvC2flI2fi6m_lBtdZr_XiyYKN152R7AikjXSNAuvjzrYqaAA1ElC6ACrrdlIXa0Bn0/s1600/Screen+Shot+2015-01-16+at+10.27.32+AM.png" height="117" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let’s break down the "Token Requestor" blob we have above into two distinct roles before identifying the practical examples of entities that fill those roles.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<b id="docs-internal-guid-83274b2f-079c-ea5a-e389-fb79301749b9" style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: red; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tier 1</span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">token definition: The root token requested from the Token Service Provider which is static data for the life of the issued card. A Tier 1 token has the ability to be autonomous from the TSP and service individual transaction level Tier 2 token issuance because all data required to create many Tier 2 tokens are available in their respective parent Tier 1 token. So basically, the Tier 1 token is the creator for all Tier 2 tokens. It is a parent->children relationship.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The tier 1 role</span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> is that of being the primary service provider for individual cards and can be summarized by these tasks:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 5pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Requesting the static token from the TSP which includes the tokenized PAN and the card master key</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Protecting the card master key</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Generating all Tier 2 tokens from the card master key</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Responding to service requests to receive new Tier 2 tokens</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Responding to issuer triggers for card life cycle events such as:</span></div>
</li>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">card personalization</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">card termination</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">card disable</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 13pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">card enable</span></div>
</li>
</ul>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: red; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Tier 2</span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> token definition: The secondary or child token that is generated from the root or parent token and used for individual payment transactions. This token is considered limited use and is deemed "ok" to be housed in the mobile device application.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The Tier 2 role </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">is to protect and deliver the tokenized payment information to the acquirer for individual transactions and can be summarized by these tasks:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 5pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Requesting the dynamic token from the Tier 1 service</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Protecting the dynamic token</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Managing the lifecycle of the dynamic token</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 8pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Delivering the dynamic token to the acquirer when requested</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Some practical examples of the token request process are listed below and include some current day entities who are performing those roles:</span></div>
<div style="text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMu39DWLbA1OKBiqHX4nusWUAacfIRtUPesoHbSvkMb0FLLT8_LnrBCU99Uf4PJEADQr4JOz1Uec2hkPMt8K0_7peamqEA6cODzPvRiRJidK3dYdDnkrJj6-3IwmjkdIGd9vTWZSG20vs/s1600/Screen+Shot+2015-01-16+at+10.20.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMu39DWLbA1OKBiqHX4nusWUAacfIRtUPesoHbSvkMb0FLLT8_LnrBCU99Uf4PJEADQr4JOz1Uec2hkPMt8K0_7peamqEA6cODzPvRiRJidK3dYdDnkrJj6-3IwmjkdIGd9vTWZSG20vs/s1600/Screen+Shot+2015-01-16+at+10.20.31+AM.png" height="282" width="640" /></a></div>
<div style="text-align: left;">
<br /></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">It is especially important to note in the diagram above how both the Master Token Service and Tier 1 Token Requestor are the same entity in some cases. THEY DO NOT HAVE TO BE AND THEY PROBABLY SHOULDN'T BE. For example both Visa and MasterCard offer the master TSP service but are also performing as a Tier 1 service requestor to their own TSP at the same time. That would mean that a service like we provide as a Tier 1 requestor consumes MasterCard or Visa TSP services, but then ALSO COMPETES directly with them as a Tier 1 requestor. Essentially, what some card networks have proposed greatly reduces your ability to chose competitive service offerings if your needs change in the future. </span></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If this scenario makes you uncomfortable, you have reason to be concerned, the implications could be very costly to your mobile payments strategy in the long run. </span></div>
<b id="docs-internal-guid-83274b2f-079d-555a-57c8-79e5bfcb3e35" style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The key business driver and need for a company like SimplyTapp in the Tier 1 Requestor role is that we offer a configuration option for the Master TSP services for each card brand which in turn can offer autonomy from the card networks similar to what Apple is able to do through Apple Pay (once they request a token from the networks, they run the service on that token through securing the token master key on the Secure Element). This helps maintain the existing card issuance relationship with the networks status quo when comparing to the existing issuance model of plastic. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Does the Tier 1 Token Requestor service you use allow you to configure or dictate the Master TSP?</span></div>
<br />
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">See this chart:</span></div>
<div style="text-align: left;">
<br /></div>
<b>You are a Tier 2 token requestor and</b><br />
<table border="2" bordercolor="#0033FF" cellpadding="3" cellspacing="3" style="background-color: #99ffff; text-align: left;"><tbody>
<tr><th>Your Tier 1 Requestor Service is:</th>
<th>You Can Configure and change the Master TSP mid-service</th>
<th>Switch From TSP without card by card migration</th>
</tr>
<tr>
<td>Visa</td>
<td>NO, use Visa TSP only</td>
<td>NO</td>
</tr>
<tr>
<td>MasterCard</td>
<td>NO, use MasterCard TSP only</td>
<td>NO</td>
</tr>
<tr>
<td>3rd Party</td>
<td>Yes, use VISA, MC, or even your own later</td>
<td>YES</td></tr>
</tbody></table>
<br />
<div style="text-align: left;">
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">So, the 3rd party Tier 1 Requestor service helps issuing customers with greater migration control. </span><span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If an issuer has aspirations to run it's own TSP at some point, or select a different TSP, this is an important point NOT to miss.</span></div>
<b id="docs-internal-guid-83274b2f-079d-aed3-567b-d2e5e683e163" style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If a group of cards has been issued through the TSP service to a Tier 1 Requestor, changing that Tier 1 requestor leads to a MIGRATION process rather than just a switch over of the entire card set. This further impacts the mobile application itself as it would be required to be a Tier 2 Requestor to possibly multiple Tier 1 requestors during the change over. </span></div>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #222222; font-family: Arial;"><span style="background-color: white;"><span style="font-size: 13px; line-height: 18.2000007629395px; white-space: pre-wrap;">In the event the Tier 1 requestor offers TSP configuration, that configuration to use a different TSP can be changed very similar to a DNS registration which makes the switch overnight and designed not to impact anything downstream (no impact on Tier 2 requestor --mobile app--, or existing cards). </span></span></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #222222; font-family: Arial;"><span style="background-color: white;"><span style="font-size: 13px; line-height: 18.2000007629395px; white-space: pre-wrap;"><br /></span></span></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: #222222; font-family: Arial;"><span style="background-color: white;"><span style="font-size: 13px; line-height: 18.2000007629395px; white-space: pre-wrap;">In the event the Tier 1 requestor DOES NOT offer a TSP configuration option, then the only way to move TSP would be to move Tier 1 requestor services, which has a dramatic impact downstream to the Tier 2 requestor / mobile app and also creates a migration switch rather than immediate. </span></span></span></div>
<b style="font-weight: normal;"><br /></b>
<h3 dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 8pt;">
<span style="background-color: transparent; color: #666666; font-family: 'Trebuchet MS'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The key question that needs to be asked:</span></h3>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Does your Tier 1 Token Requestor service offer independent configuration of the TSP master service?</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If the answer is NO, then you are mostly likely locked-in for the long haul.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If the answer is YES, then you will have more flexibility to some day:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Run your own or change to a different TSP.</span></div>
</li>
<li dir="ltr" style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.4; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: white; color: #222222; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Negotiate better rates because there is no technical limitation to an immediate switch instead of a slow and resource consuming migration.</span></div>
</li>
</ul>
<br /></div>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com21tag:blogger.com,1999:blog-3763091284544570921.post-30062711245151920052014-12-23T07:41:00.001-08:002014-12-23T11:04:33.520-08:00A Watershed Moment for the Payments Industry<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="article-2160143-13A24E0B000005DC-373_964x587.jpg" height="380px;" src="https://lh5.googleusercontent.com/qwBUV1OAodRQUTctT_FikYqGPJP_exZ6ipkO-QYZdJsV-M2ltxOBgOc53oueto9ym_g5vc_YBvru1j69KVKv-EedGG2-aDBQcpB7bFcZNA1_6PBM6-3F6fWGMZu8c4XhCg" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Did you see the news? If you blinked, you might have missed it but its importance has ramifications throughout the payments industry. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Last Friday, Royal Bank of Canada (RBC) became the first North American bank to launch a pure Cloud Based Payments (CBP) solution utilizing Host Card Emulation (HCE) technology. Kudos to RBC! Read their </span><a href="http://www.rbc.com/newsroom/news/2014/20141218-host-card.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">release here</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">An important aspect of the announcement is that the Canadian debit organization Interac was included with it’s Flash for Cloud Based Payments. Interac’s Flash seems to have beaten all other payments networks and their specifications to the punch by bringing a working solution to the market.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">From our perspective, this marks the beginning of an anticipatory shift by financial institutions away from analog payments into digital. The shift will accelerate over the next several years as many financial institutions look for more effective ways to engage customers and distribute products to an ever more mobile and demanding consumer base. Juniper Research estimates mobile retail purchases to eclipse $700B annually by 2017. This transformation will not only impact the way banks engage with customers, but will drive what kinds of financial products and services are developed and how they are offered to customers throughout an ever evolving environment. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We’ve heard these predictions before, why now? </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The payments industry ecosystem is at an inflection point. The meteoric rate at which innovation is happening foretells of much needed change and the necessity for more adaptive business models. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Enter CBP and HCE. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The concept of CBP and HCE did not exist until SimplyTapp introduced them in August 2012. CBP is the framework for storing payment credentials in a virtual Secure Element (SE) in the cloud while HCE provides the path of getting those credentials from the cardholder’s mobile phone to the retailer’s Point of Sale (POS). Groundbreaking as that was, it only represented the first of several enablers that were needed before widespread adoption could take place within the industry. The next step that was needed occurred nearly one year later with the inclusion of HCE inside Android 4.4 (KitKat) in September 2013 which provided developers with a proven, widely distributed platform to build wallets and mobile banking applications. Earlier this year at Mobile World Congress in Barcelona, Visa and MasterCard gave their much needed support and endorsement for CBP and HCE providing immediate legitimacy and freeing up issuing banks for innovation. Only one critical requirement remained in order to drive adoption of this technology. A forward-looking bank needed to take the initiative and roll-out a live implementation with real data and real transactions. RBC’s announcement last week fulfilled that requirement. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="NFC-Infrastructure.jpg" height="333px;" src="https://lh5.googleusercontent.com/5e8VNVoBR5L7Y199SzR2BLPIwGx9f5N7eIjC1yel8CFMmp3-wLrEGEnvdtgWy4KV9eFIPY8xf06Ry57CFnMZPnj3xAQkunwIMjx3OKjwDQ7Oy7qvHvCH2EiOH3YiRfPlMw" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="499px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">With each of these key enablers firmly in place, the stage is set for mobile payment proliferation. Each day, consumers are expecting to do more with their mobile devices than ever before. The emergence of groundbreaking core technology and services, including the launch of Apple Pay, reveals a new and largely unmet demand for point-of-sale mobile purchases. More and more consumers will come to rely upon customer-centric financial institutions to help them conduct secure and convenient mobile purchases.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Being the first at anything is never easy. It requires vision, a smart assessment of the path ahead and a resolve to overcome any obstacles discovered along the way. For those who are willing, the rewards greatly outweigh the risks. We applaud RBC’s and Interac’s industry leadership and focus on the customer. And we join them in ushering a new year full of innovation.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Agree? Disagree? Let us know what you think. </span></div>
<br />Anonymoushttp://www.blogger.com/profile/02699661112873519190noreply@blogger.com18tag:blogger.com,1999:blog-3763091284544570921.post-62202183415550550532014-10-10T13:31:00.001-07:002015-02-16T07:36:45.657-08:00The Absolute Simplest HCE "Pay" Application Enablement<br />
Most of the code below relates to GUI messaging, but this Android app is full HCE for a Cloud Based Payments card. It is a total of 201 lines of code including comments, and line spaces. It is a single class application for simplicity. <br />
The goal is to show that the libraries for managing CBP on the mobile app are lightweight for developers to use.<br />
The libs are designed to be placed into ANY application that may want to enable CBP. The one below is about the simplest integration.<br />
The full application is called SimplestTapp and can be downloaded and tested here:<br />
<a href="http://wiki.simplytapp.com/home/self-driven-hce-pilot/make-a-payment-card/simplytapp-s-vcbp-changelog/software-dev-kits/mobile-sdk">http://wiki.simplytapp.com/home/self-driven-hce-pilot/make-a-payment-card/simplytapp-s-vcbp-changelog/software-dev-kits/mobile-sdk</a><br />
<br />
it also may be good to view this help resource for creating and managing the card perso and lifecycle in the cloud:<br />
<a href="http://wiki.simplytapp.com/home/using-admin-api-console">http://wiki.simplytapp.com/home/using-admin-api-console</a><br />
<br />
The core of the card download and enablement is really contained in this section. This section instantiates a VirtualCard that will be loaded from the remote server. In order to instantiate the CBP card, you will see that there are some required credential information because a request will be made to the CBP server to retrieve the card that will be used.<br />
The data in the snippet is sample data only.<br />
<br />
The AsyncTask is used because the load() method makes network calls and can't be run on the UI thread.<br />
<br />
<pre class="brush: java"> // Create a card with data from AdminApi console
// See wiki for help:
// http://wiki.simplytapp.com/home/using-admin-api-console
//
// Values are found within your AdminApi Console. Click Get APP
// Credentials.
//
// card agent code hash is found inside the Issuer Entity portion of the
// web portal
//
final VirtualCard card = VirtualCardBuilder
.cardId("5901")
.mobileAppConsumerKey(
"oJmqoey7I97FBOZQDXoH0A9RbM7BciXbD8CHZDMU")
.mobileAppConsumerSecret(
"ugTD5dGjBUEC1pyzxjMNtw6k9TUocGtY4plta9he")
.walletAccessToken("O15F4jG3PcwC44NpkfEqv1ZD7tjNo5NhGpHHFEax")
.walletTokenSecret("Ur504iPQn2lxgsS5fVBycf2zK9uuSglppvn2mBa3")
.cardAgentCodeHash("aa4185c2364048447a38aa02499a9897")
.context(this).build();
// now load the card...
// this requires network connectivity and is blocking
// so we must use AsyncTask to avoid running this in UI thread
//
new AsyncTask<void void="">() {
@Override
protected Void doInBackground(Void... params) {
try {
myActivity.postUi("=================================="
+ "\n" + "=====Loading Card From Server====="
+ "\n" + "=================================="
+ "\n");
card.load();
} catch (IOException ex) {
Log.e(TAG, "Failed to load", ex);
}
return (Void) null;
}
}.execute();
</void></pre>
<div>
<span style="font-size: x-small;"><void void=""><br /></void></span></div>
Once the VirtualCard successfully loads, it has a mind of it's own and will perform all activities related to making a successful payment when requested to do so. For this, the feedback mechanism from the card to the mobile application is a messaging interface and should be defined in a block similar to the one below. You will notice that the block below is responsible for handling feedback from the card and also notifying the card to activate after it was successfully created:<br />
<br />
<pre class="brush: java"> // define the message default card message handler
// and set it in the lib
static {
VirtualCardMessaging virtualCardMessenger = new VirtualCardMessaging() {
@Override
public void virtualCardMessage(VirtualCardMessaging.Message message) {
switch (message.getCode()) {
case VirtualCardMessaging.CARD_CREATION_COMPLETED:
try {
// when card is created, then activate the card agent,
// then connect it to the ApduService,
// then ask the user if they want this app the default
// app
// for servicing the reader
message.getVirtualCard().activate();
ApduService.setVirtualCard(message.getVirtualCard());
myActivity.postUi("========================"
+ "\n"
+ "=====Card Created======="
+ "\n"
+ "========================"
+ "\n"
+ "==Card Id: "
+ message.getVirtualCard().getVirtualCardId()
+ "\n"
+ "==Num: "
+ message.getVirtualCard()
.getVirtualCardNumber()
+ "\n"
+ "==Card Exp: "
+ message.getVirtualCard()
.getVirtualCardExpDate() + "\n"
+ "==Card Type: "
+ message.getVirtualCard().getVirtualCardType()
+ "\n" + "==Card Logo: "
+ message.getVirtualCard().getVirtualCardLogo()
+ "\n");
myActivity.postUi("========================" + "\n"
+ "=====Card Activating====" + "\n"
+ "========================" + "\n");
} catch (IOException e) {
e.printStackTrace();
}
break;
case VirtualCardMessaging.CARD_ACTIVATE_COMPLETED:
myActivity.postUi("========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "=====Card Activated=====" + "\n"
+ "=====Ready To Tap=======" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n");
break;
case VirtualCardMessaging.TRANSACTION_ENDED:
myActivity.postUi("========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "===Ready To Tap Again====" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n");
break;
default:
break;
}
// log the message
Log.d(TAG,
message.getMessage() + " cardId="
+ message.getVirtualCardId() + " code="
+ message.getCode());
myActivity.postUi(message.getMessage() + " cardId="
+ message.getVirtualCardId() + " code="
+ message.getCode() + "\n");
}
};
// set the default messenger
VirtualCard.setDefaultVirtualCardMessaging(virtualCardMessenger);
}
</pre>
<div>
<span style="font-size: x-small;"><br /></span></div>
<br />
You will notice above that the messaging loop is logging all messages from the card and printing them to the screen of the app and the debugger. This can give you an idea of the events the card notifies the app. As far as API requests to the card from the app, the VirtualCard library contains many methods. Here is the JavaDoc:<br />
<a href="http://simplytapp.github.io/android/virtualcard/doc/">http://simplytapp.github.io/android/virtualcard/doc/</a><br />
<br />
Full activity class code for this example:<br />
<br />
<pre class="brush: java">package com.simplytapp.example.simplesttapp;
import java.io.IOException;
import com.simplytapp.virtualcard.ApduService;
import com.simplytapp.virtualcard.VirtualCard;
import com.simplytapp.virtualcard.VirtualCardBuilder;
import com.simplytapp.virtualcard.VirtualCardMessaging;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.nfc.NfcAdapter;
import android.nfc.cardemulation.CardEmulation;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.widget.TextView;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private static MainActivity myActivity = null;
private TextView tv = null;
// this method posts strings to the textview box in the UI thread
private void postUi(final String t) {
new Runnable() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
tv.append(t);
if (tv.getLayout() != null) {
// auto-scroll vertically
final int scrollAmount = tv.getLayout().getLineTop(
tv.getLineCount())
- tv.getHeight();
// if there is no need to scroll, scrollAmount will
// be <=0
if (scrollAmount > 0)
tv.scrollTo(0, scrollAmount);
else
tv.scrollTo(0, 0);
}
}
});
}
}.run();
}
// define the message default card message handler
// and set it in the lib
static {
VirtualCardMessaging virtualCardMessenger = new VirtualCardMessaging() {
@Override
public void virtualCardMessage(VirtualCardMessaging.Message message) {
switch (message.getCode()) {
case VirtualCardMessaging.CARD_CREATION_COMPLETED:
try {
// when card is created, then activate the card agent,
// then connect it to the ApduService,
// then ask the user if they want this app the default
// app
// for servicing the reader
message.getVirtualCard().activate();
ApduService.setVirtualCard(message.getVirtualCard());
myActivity.postUi("========================"
+ "\n"
+ "=====Card Created======="
+ "\n"
+ "========================"
+ "\n"
+ "==Card Id: "
+ message.getVirtualCard().getVirtualCardId()
+ "\n"
+ "==Num: "
+ message.getVirtualCard()
.getVirtualCardNumber()
+ "\n"
+ "==Card Exp: "
+ message.getVirtualCard()
.getVirtualCardExpDate() + "\n"
+ "==Card Type: "
+ message.getVirtualCard().getVirtualCardType()
+ "\n" + "==Card Logo: "
+ message.getVirtualCard().getVirtualCardLogo()
+ "\n");
myActivity.postUi("========================" + "\n"
+ "=====Card Activating====" + "\n"
+ "========================" + "\n");
} catch (IOException e) {
e.printStackTrace();
}
break;
case VirtualCardMessaging.CARD_ACTIVATE_COMPLETED:
myActivity.postUi("========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "=====Card Activated=====" + "\n"
+ "=====Ready To Tap=======" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n");
break;
case VirtualCardMessaging.TRANSACTION_ENDED:
myActivity.postUi("========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "===Ready To Tap Again====" + "\n"
+ "========================" + "\n"
+ "========================" + "\n"
+ "========================" + "\n");
break;
default:
break;
}
// log the message
Log.d(TAG,
message.getMessage() + " cardId="
+ message.getVirtualCardId() + " code="
+ message.getCode());
myActivity.postUi(message.getMessage() + " cardId="
+ message.getVirtualCardId() + " code="
+ message.getCode() + "\n");
}
};
// set the default messenger
VirtualCard.setDefaultVirtualCardMessaging(virtualCardMessenger);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myActivity = this;
tv = (TextView) findViewById(R.id.textView1);
tv.setMovementMethod(new ScrollingMovementMethod());
// try to set this app as the default HCE application app
CardEmulation cardEmulationManager = CardEmulation
.getInstance(NfcAdapter.getDefaultAdapter(this));
ComponentName paymentServiceComponent = new ComponentName(
getApplicationContext(), ApduService.class.getCanonicalName());
if (!cardEmulationManager.isDefaultServiceForCategory(
paymentServiceComponent, CardEmulation.CATEGORY_PAYMENT)) {
Intent intent = new Intent(CardEmulation.ACTION_CHANGE_DEFAULT);
intent.putExtra(CardEmulation.EXTRA_CATEGORY,
CardEmulation.CATEGORY_PAYMENT);
intent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT,
paymentServiceComponent);
startActivityForResult(intent, 0);
}
// Create a card with data from AdminApi console
// See wiki for help:
// http://wiki.simplytapp.com/home/using-admin-api-console
//
// Values are found within your AdminApi Console. Click Get APP
// Credentials.
//
// card agent code hash is found inside the Issuer Entity portion of the
// web portal
//
final VirtualCard card = VirtualCardBuilder
.cardId("5901")
.mobileAppConsumerKey(
"oJmqoey7I97FBOZQDXoH0A9RbM7BciXbD8CHZDMU")
.mobileAppConsumerSecret(
"ugTD5dGjBUEC1pyzxjMNtw6k9TUocGtY4plta9he")
.walletAccessToken("O15F4jG3PcwC44NpkfEqv1ZD7tjNo5NhGpHHFEax")
.walletTokenSecret("Ur504iPQn2lxgsS5fVBycf2zK9uuSglppvn2mBa3")
.cardAgentCodeHash("aa4185c2364048447a38aa02499a9897")
.context(this).build();
// now load the card...
// this requires network connectivity and is blocking
// so we must use AsyncTask to avoid running this in UI thread
//
new AsyncTask<void void="">() {
@Override
protected Void doInBackground(Void... params) {
try {
myActivity.postUi("=================================="
+ "\n" + "=====Loading Card From Server====="
+ "\n" + "=================================="
+ "\n");
card.load();
} catch (IOException ex) {
Log.e(TAG, "Failed to load", ex);
}
return (Void) null;
}
}.execute();
}
}</void></pre>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com34tag:blogger.com,1999:blog-3763091284544570921.post-84083817202496643772014-10-03T11:59:00.001-07:002015-02-16T07:37:06.277-08:00Cryptogram calculation clarity for CBP<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This is the key concept and change between EMV and what is required for CBP cryptograms.</div>
<div class="separator" style="clear: both; text-align: left;">
Effectively the cryptogram in the CBP payment is created half in the cloud and then the other half when you tap the phone.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The reason for this is because the network connectivity may not allow a scenario like the left side of the diagram below as the UN would get cut off from transmitting from the POS to the calculation space, or it would be subject to network latency and create a "Tap and Hover" effect that would be an awful user experience.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The CBP cryptogram allows all components to be used as before and exposes a "relay threat" only to the android app after the SUK is received, but not to the POS terminal. It also allows the Phase 2 calculation to happen independent of cloud availability at tap time. The Phase 1 calculation and delivery to the phone from the cloud is expected to be preformed prior to tapping the phone, but not during the tap itself.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The thought is to offset the relay threat with in app security and sensor rich android OS.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
It becomes a net neutral from a security standpoint really, IMO.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VW1EknPaEvQ40nuF4JZ7NB-A-fEaXyG76A8oJvFOA5Ya7KY9uQ-adaaD-BxWgLiOaRmgzuL5YHBTVH6Rrrpdpe8eaFDFCJTD_sahEJwLvczZ1Lj7MDmUdhb9egX21fT3LaFbIqC6qgo/s1600/Screen+Shot+2014-10-03+at+1.48.44+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8VW1EknPaEvQ40nuF4JZ7NB-A-fEaXyG76A8oJvFOA5Ya7KY9uQ-adaaD-BxWgLiOaRmgzuL5YHBTVH6Rrrpdpe8eaFDFCJTD_sahEJwLvczZ1Lj7MDmUdhb9egX21fT3LaFbIqC6qgo/s1600/Screen+Shot+2014-10-03+at+1.48.44+PM.png" height="440" width="640" /></a></div>
<br />Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com20tag:blogger.com,1999:blog-3763091284544570921.post-47476654866104144342014-09-24T06:46:00.004-07:002015-02-16T07:37:51.084-08:00Innovators’ Spotlight<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisMryRzR3Qz9JE9f9m-sKgruyGAf7sxtTHC4Ol13PgH4EstxU9mJr1Ob_QpFwAtTI8R68VsNKVyFdar9fmUg7xa-a_N4XeNSEGSUrC7TALXJLONJwrH4Vg9XnieCKokWQJ0BoAgwpabDM/s1600/Screen+Shot+2014-09-24+at+8.43.25+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisMryRzR3Qz9JE9f9m-sKgruyGAf7sxtTHC4Ol13PgH4EstxU9mJr1Ob_QpFwAtTI8R68VsNKVyFdar9fmUg7xa-a_N4XeNSEGSUrC7TALXJLONJwrH4Vg9XnieCKokWQJ0BoAgwpabDM/s1600/Screen+Shot+2014-09-24+at+8.43.25+AM.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpdCKEb0B_n7V5UGRhuh3oRJA8d1h2dWJh85498SA7TD2RGaGvgMtCDZsN1QUqmr_3-hFpl16TD74IzD0ghPsH01m6xAMTbAT8qZA43frqFpk_Ujec8GBXsrkLCEJmtfRh8K3X-2-wj10/s1600/Screen+Shot+2014-09-24+at+8.43.55+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpdCKEb0B_n7V5UGRhuh3oRJA8d1h2dWJh85498SA7TD2RGaGvgMtCDZsN1QUqmr_3-hFpl16TD74IzD0ghPsH01m6xAMTbAT8qZA43frqFpk_Ujec8GBXsrkLCEJmtfRh8K3X-2-wj10/s1600/Screen+Shot+2014-09-24+at+8.43.55+AM.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ6mBgzOAvGxXxIMAi8by_40Ld8cDuBcFs2lQfBKiH6uhtucEfIUYUSzz7em4B2QiDcRjIO9zIv0oE0dyw2DcsnxRPIknqSWEbQuEYop_M6Jy8pj7iGAzvD5ZObpYKA38WV75RqhsJdVY/s1600/Screen+Shot+2014-09-24+at+8.44.03+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ6mBgzOAvGxXxIMAi8by_40Ld8cDuBcFs2lQfBKiH6uhtucEfIUYUSzz7em4B2QiDcRjIO9zIv0oE0dyw2DcsnxRPIknqSWEbQuEYop_M6Jy8pj7iGAzvD5ZObpYKA38WV75RqhsJdVY/s1600/Screen+Shot+2014-09-24+at+8.44.03+AM.png" /></a></div>
<br />
<br />Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com27tag:blogger.com,1999:blog-3763091284544570921.post-84385524263824522992014-09-21T17:18:00.000-07:002015-02-16T07:39:06.419-08:00Asia-The New Frontier for Contactless Payments<br />
<div class="p1">
<span class="s1">Asia is pivotal to the future of mobile contactless payments. The region has the numbers, and the markets are mostly EMV compliant or in the process. Some have moved further down the path of contactless than many others across the rest of the world. Veterans of the payments space will recollect the early pioneers of mobile payments came from this region. There is a quiet confidence in innovation centered around consumer aspirations, cashless evolution and new strategic paths. </span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmf_TZrnMFSdPPzRM8PdSV0I0SgvXsSDKnXbEcLJLiEcz-Z5QF_fc8AilOTvT-xu0zZeFgRqwQl62i3KCld-wBnAIpKc0LNsByk-d6XOfFe0VXZL7Kr9CN7VGEEa9MUivdL4QJ4g5qbbFP/s1600/kg2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmf_TZrnMFSdPPzRM8PdSV0I0SgvXsSDKnXbEcLJLiEcz-Z5QF_fc8AilOTvT-xu0zZeFgRqwQl62i3KCld-wBnAIpKc0LNsByk-d6XOfFe0VXZL7Kr9CN7VGEEa9MUivdL4QJ4g5qbbFP/s1600/kg2.png" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgap28ZLSDfdwu2gjjm00W-PRhVjw5AIdSxBSIWIkw9tJ8HXEwFDd24mAsvGLb6C9HhBZ5YxOSzO525rVLJwWgF9Bedwdoie6OQcivG3btAJ3Jhl-AHNZUGYIktm_fGfQMgSyKEgW6STHg3/s1600/kg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgap28ZLSDfdwu2gjjm00W-PRhVjw5AIdSxBSIWIkw9tJ8HXEwFDd24mAsvGLb6C9HhBZ5YxOSzO525rVLJwWgF9Bedwdoie6OQcivG3btAJ3Jhl-AHNZUGYIktm_fGfQMgSyKEgW6STHg3/s1600/kg.png" /></a></div>
<br />
<div class="p1">
<span class="s1">NFC via HCE is important for the future of cashless Asia. This region consists largely of dense urban ecosystems where footfalls are high, queues are long, security is highly desired and the need to keep moving is critical. Contactless modes allow ease of payments(tap, no signature below a limit), a strong sense of security (I don’t hand over my card) and speed of throughput (smaller queues at checkout).</span></div>
<div class="p1">
<span class="s1">Host Card Emulation enables contactless transactions across devices and carrier networks, allowing issuers to take control of the payment process and brand, and invest in growing their market. It enables banks to shift issuance towards real time, virtual and customized offerings without spending a fortune. Customers and banks are able to interact to control spend and credit exposure. Transforming transactions for the mass affluent by offering them the security of a physical tap via mobile with the scale and ease of a digital backend is the core appeal of HCE. SimplyTapp brought HCE to the world in 2012 and has since worked with key stakeholders to make it universally available. For issuers in emerging and mature Asia, SimplyTapp offers a highly flexible, lean and cost-effective solution that can launch services in a few weeks. Beyond the solution, we have committed ourselves to helping issuers, networks and regulators build innovation frameworks to take digital transactions to the masses. At the 5</span><span class="s2"><sup>th</sup></span><span class="s1"> Asian Smart Card Conference in Bangkok, we look forward to enriching conversations that help move mobile contactless transactions in this region to the next level. Talk to us. We are committed to Asia. </span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">
</span></div>
<div class="p1">
<span class="s1">-Kaustuv Ghosh runs the Asia business for SimplyTapp. He is based in Singapore and is available at <a href="mailto:kaustuv.ghosh@simplytapp.com"><span class="s3">kaustuv.ghosh@simplytapp.com</span></a>. Reach out to Kaustuv or to <a href="mailto:info@simplytapp.com"><span class="s3">info@simplytapp.com</span></a> to discuss how SimplyTapp can help you launch mobile contactless payments rapidly and cost effectively. </span></div>
Tom Fhttp://www.blogger.com/profile/11863511269790177365noreply@blogger.com24tag:blogger.com,1999:blog-3763091284544570921.post-14789508901712376682014-09-11T12:51:00.003-07:002015-02-16T07:39:19.464-08:00Apple Pay and Android payment eco-systems<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
It is important to understand what tokenization means in the context of the introduction by Apple on Tuesday. The word "tokenization" can sound very general, complex, and unknown the way it is being used in payments today. I think many use the term without really understanding the important details of the concept. I sort of relate it to when i pick up my 4 year old daughter from sunday school class, I will ask her what she learned, and she knows that if she answers "God", that she is right.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
So the point of this blog is to try to understand what tokens are, and how they are used to solve something in payments. The mis-understood rule of tokens is that people think they change from transaction to transaction, but in reality the cryptogram changes but the token properties (tPAN and tUDK) don't:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li>A token may be created once for the life of a credential (card). </li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: left;">
This is easiest to understand with the Apple Pay use case. The secure element on the phone is programmed at the factory when the iPhone is built to support many different card standards. At the time when the token data needs to get programmed into the device, Apple requests a token for that device from the card networks. The networks need to keep track of the token because they need to know how to translate that token into iTunes identity for processing the iTunes selected card during transactions with the payment acceptor.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
But the important piece is that this token is a static identifier for the life of the card that was programmed.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
A diagram describing this process for iPhone is here: </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipYsWHthZyfptreGvybKorivMpcLd8w-eBUSxz4rIj8BtRJh9j44OzbGJntc1PC_j6LPNFt4EofwBXozQHxsgZM6BdopmbHq-gCtnYe1C_sh97LULI0wxhsYkw-2sURJCEhcCNMBu7WSU/s1600/Screen+Shot+2014-09-15+at+8.36.30+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipYsWHthZyfptreGvybKorivMpcLd8w-eBUSxz4rIj8BtRJh9j44OzbGJntc1PC_j6LPNFt4EofwBXozQHxsgZM6BdopmbHq-gCtnYe1C_sh97LULI0wxhsYkw-2sURJCEhcCNMBu7WSU/s1600/Screen+Shot+2014-09-15+at+8.36.30+AM.png" height="350" width="640" /></a></div>
<br />
Because Android is not a vertically owned stack similar to apple, it is really hard to distinguish who owns the SIM, or SE, or UICC that is on the particular phone. Because of the ownership argument over the last few years, the idea of HCE was launched to push the ownership of the SE to the cloud so that it could be leveraged on any Android phone from the cloud. But the important concept that has gotten lost with the Apple announcement is that the concept of "tokenization" as Apple Pay uses is still the exact plan for tokenization in the android space. With HCE enabled, however, the equivalent of the one time token "Apple ID" that lives in the iPhone SE, is actually located virtually in the cloud with a bank, or third party vendor like SimplyTapp:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVUVk9fIc1sisgcsG6GFYOeSnGfBov379Jw8sxu4Oii_Mrh2ABoIbVUJT7RhdyatAFo4aHu5n7odCtgX8B-aJojcb05T9haJBTE-LGvz3mKd1iPVoxRfSnYnJdhqp9bI54LmDUebz8bKA/s1600/Screen+Shot+2014-09-11+at+12.29.12+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVUVk9fIc1sisgcsG6GFYOeSnGfBov379Jw8sxu4Oii_Mrh2ABoIbVUJT7RhdyatAFo4aHu5n7odCtgX8B-aJojcb05T9haJBTE-LGvz3mKd1iPVoxRfSnYnJdhqp9bI54LmDUebz8bKA/s1600/Screen+Shot+2014-09-11+at+12.29.12+PM.png" height="412" width="640" /></a></div>
<br />
<br />
======================AND STOP===================<br />
<br />
THE TOKEN HAS NOW BEEN CREATED!!<br />
THE TOKEN REQUESTER CAN USE THIS TOKEN FOR<br />
ALL TRANSACTIONS ON THAT CARD GOING FORWARD<br />
WITHOUT REQUESTING ANOTHER TOKEN FROM THE SERVICE<br />
AGAIN FOR THE LIFE OF THAT CARD IT REPRESENTS<br />
<br />
THIS CAN BE TREATED ON PAR WITH TYPICAL PLASTIC CARD<br />
PERSONALIZATION SERVICES TODAY<br />
<br />
ONLY WHEN THE TOKEN IS ACQUIRED BY THE MERCHANT<br />
DOES THE NETWORK NEED TO VERIFY THE TOKEN AND ALSO<br />
TRANSLATE THE TOKEN BACK TO THE CARD IT REPRESENTS<br />
SO THAT THE BANK CAN PROCESS IT FOR APPROVAL AS<br />
USUAL<br />
<br />
SO ONE TOKEN AND RELATED DATA CAN BE USED FOR<br />
MULTIPLE TRANSACTIONS<br />
<br />
==================================================<br />
ok, i think i'm done hammering that characteristic of a token. :)<br />
<br />
Another very important thing to understand about transactions using tokens is to understand that the data format of a tokenized transaction is EXACTLY the same as the data format of a non-tokenized transaction from the Point of Sale perspective. The same basic elements exist and are exchanged from the phone to the POS:<br />
non-tokenized:<br />
1) Personal Account Number<br />
2) Expiration Date<br />
3) Service Code<br />
4) Issuer Discretionary Data<br />
5) Cryptogram<br />
<br />
tokenized:<br />
1) <i>Tokenized</i> Personal Account Number<br />
2) Expiration Date<br />
3) Service Code<br />
4) Issuer Discretionary Data<br />
5) Cryptogram<br />
<br />
because the data format that is exchanged between the phone and the POS is identical in both cases, the tokenized version still has the ability to include dynamic transactional data by using a Cryptogram to do so (adding the "one time number for each transaction" that Tim Cook preached about)<br />
<br />
Keep in mind for cryptogram creation and cryptogram validation, there does not need to be a run-time link between the validator and the tokenized card (this is obvious by the apple deployment of a hardened secure element on the phone).<br />
<br />
So understanding how tokenized or non-tokenized cryptograms are created and validated is important. By the way, the algorithm is identical for tokenized or non-tokenized. The "tokenized" part of the features is actually out of the scope of cryptogram calculation / validation.<br />
<br />
Cryptogram creation requirements:<br />
1) card creation time, the token issuer authority (card network) contains an issuer master key for a "tokenized" BIN. The master key for the "tokenized" bin is used to create a "tokenized" Unique Derived Key (tUDK) and "tokenized" Personal Account Number (tPAN) for each "tokenized" card when a Token Requestor requests a token on behalf of a card issuer. <br />
<br />
2) Also at card creation time, this new "tokenized" UDK and "tokenized" PAN are delivered back to the Token Requestor<br />
<br />
3) Now from a token requestor perspective, it is business as usual for tokenized card personalization. This data is injected to the tokenized card just like a non-tokenized card.<br />
<br />
4) A LUK is created PRIOR to transaction time:<br />
a) Tokenized UDK in the card + ATC used to create the tokenized LUK (AKA Session Key, or one time use key)<br />
b) this LUK can be exposed to the mobile device (in apple case, the calculation of the LUK or similar key can be created inside the SE of the mobile device)<br />
<br />
5) At transaction time, the cryptogram is created:<br />
a) Tokenized LUK + terminal UN (POS data) used to create final cryptogram returned to the POS for processing<br />
<br />
Have a look at how the Apple Pay system works during payment time:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjn5UQMjKy0j6z6qq04mEzEVJi3HB83-yUu3ZW3FbwntoJAArsh83f2NAqLcxvD3gTFhO5jGNaMcUuBa-xF0TCupEsyaGhRmPqomPehl-Su-pmn1rJhUs-sx8cmDt_M_3WO4-amTxWFU4/s1600/Screen+Shot+2014-09-11+at+12.29.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjn5UQMjKy0j6z6qq04mEzEVJi3HB83-yUu3ZW3FbwntoJAArsh83f2NAqLcxvD3gTFhO5jGNaMcUuBa-xF0TCupEsyaGhRmPqomPehl-Su-pmn1rJhUs-sx8cmDt_M_3WO4-amTxWFU4/s1600/Screen+Shot+2014-09-11+at+12.29.24+PM.png" height="496" width="640" /></a></div>
<br />
And obviously, the mirror transactional sequence for the Android environment:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQjjjuczcnXrEWsYeqmZv9CioWy1lbXR08AvSWFWT2daDA6TKxDHHYJB373gCwUgRHocNZcnzNl6PLI9z2PVwi-TBzJyZm0yQ9HQDS9gHxOib_9j-6KwfPzKjLwahwFhg6stkrBSDBALQ/s1600/Screen+Shot+2014-09-11+at+12.29.33+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQjjjuczcnXrEWsYeqmZv9CioWy1lbXR08AvSWFWT2daDA6TKxDHHYJB373gCwUgRHocNZcnzNl6PLI9z2PVwi-TBzJyZm0yQ9HQDS9gHxOib_9j-6KwfPzKjLwahwFhg6stkrBSDBALQ/s1600/Screen+Shot+2014-09-11+at+12.29.33+PM.png" height="468" width="640" /></a></div>
You will notice that the net result from the reader perspective is identical in both cases; "Tokenized Data" as described above. The Android app and cloud based secure element, however, must work together throughout the life of the app on the phone to produce this result.<br />
<br />
<br />
<b>What tokens solve!:</b><br />
<br />
<b>Legacy Processing:</b> The main thing, in my eyes, that tokenization solves is the backend processing changes. The HCE side of the equation requires, for some card networks, new Cryptogram calculation specifications to be processed because the cryptogram calculation process is forced to be changed. i.e. intro to CVN 43!<br />
<br />
Believe it or not, this is probably the biggest driver for tokenization because it is faster to build the tokenization engine and allow it to validate and convert the new cryptogram to an older version than it is to go into the old old old old (say it one more time...old) processing houses that are running Commodor 64, pascal, and big tape drives and get them to update the cryptographic algorithms on the HSM. So, both VISA and mastercard can just as easy validate the CVN 43 CBP cryptogram just before the service de-tokenizes it.<br />
<br />
<b>Firewalling Transactions</b>: When a token is created, it is implied that the tokenization engine will always have to de-tokenize prior to processing the transaction, with that, obviously coves verification of the token. This is a perfect opportunity to build in transaction processing rules for that token such as:<br />
1) Card present only transactions (this token must ALWAYS contain a cryptogram with it)<br />
2) Use this token at ONLY these particular merchant IDs<br />
3) This token is ONLY valid for transactions within a 90 day period!<br />
<br />
<b>Translating to Card On File: </b>Major wins for Apple, Google, Amazon, and anyone else who has scores of cards on file buried in their datacenter. Not only does tokenization allow you to translate to an existing bank account. As displayed by Apple, it also allows you to translate a token to an account that may then represent one of many Cards On File for a particular google, amazon, or apple account. Potentially this allows lower than Card Not Present rates for internet based transactions.Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com316tag:blogger.com,1999:blog-3763091284544570921.post-69089715169388035762014-07-01T11:45:00.000-07:002015-02-16T07:39:31.299-08:00Host Card Emulation Series: HCE Virtual Card Life Cycle Management<div style="box-sizing: border-box; color: #333333; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 15px; line-height: 25.5px; margin-bottom: 15px; margin-top: 15px;">
HCE has introduced a new and powerful way to create, issue and manage virtual cards stored in the cloud. The value of HCE is clear but with that recognition comes a great deal of other questions. One of the most common questions is that surrounding virtual card life cycle management. This blog post will discuss one tools made available by SimplyTapp to manage your virtual card in the cloud in the SimplyTapp system.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4qJC0fZUAbX2RmmbHWT7k4UYUumGmkchETPOn8CIt_Sb1BS8CG6ITobOyCwzvK72bFafITMpGg3a9p5De0AdImvx3JHCNyI1K6NuZopgUlr_-q6krlFNa-yWLbyU4Jqa-gMCLYYC8Nw8Q/s1600/lifecycle-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4qJC0fZUAbX2RmmbHWT7k4UYUumGmkchETPOn8CIt_Sb1BS8CG6ITobOyCwzvK72bFafITMpGg3a9p5De0AdImvx3JHCNyI1K6NuZopgUlr_-q6krlFNa-yWLbyU4Jqa-gMCLYYC8Nw8Q/s1600/lifecycle-2.jpg" /></a></div>
<br />
SimplyTapp offers STBridge as tool to manage card life cycle. STBridge allows an issuer to connect to a virtual card instance in the SimplyTapp cloud.<br />
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">STBridge is used to communicate APDUs, and other GP commands, to a specific virtual card residing in the cloud platform. </span>STBridge supports standard GPJ shell commands.</div>
<div class="p2">
<br /></div>
<div class="p1">
<span class="s1">STBridge packaged as an executable jar (STBridge) and can be executed in the following format:</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">java -jar STBridge.jar -ck consumer_key -cs consumer_secret -at access_token_to_card -ts access_token_secret [-s jcsh_script_to_run</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"><b>STBridge Paramater list:</b></span></div>
<div class="p2">
<span class="s1"><b></b></span><br /></div>
<div class="p1">
<span class="s1">-ck the issuer consumer key</span></div>
<div class="p1">
<span class="s1">-cs the issuer consumer secret</span></div>
<div class="p1">
<span class="s1">-at the card access token</span></div>
<div class="p1">
<span class="s1">-ts the card access token secret</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
</div>
<div class="p1">
<span class="s1">There are various ways for obtaining the parameters from a virtual card in cloud needed to execute STBridge.</span><br />
This example we are we are working with a previously create virtual card.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="p1">
<span class="s1"><b>Managing An Active Card</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Appending scripts to the STBridge.jar executable file allows one to manage card life cycle. The following are examples of how to manage card life cycle.</span><br />
<span class="s1"><br /></span></div>
<div class="p2">
<span class="s1"></span>Card is personalized by running a personalization (perso) script.</div>
<div class="p1">
<span class="s1">After perso script is executed, the card is in activated state.</span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1">Post card personalization, you can connect to card and run any various card management scripts. Activating an activated card does nothing and deactivating a deactivated card does not change the state of the card, but scripts will execute.</span></div>
<div class="p1">
The following are examples of executing card management scripts on a active virtual card in the cloud.</div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
<br />
<span class="s1"></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p2">
<span class="s1"></span></div>
<div class="p1">
<span class="s1"><b>Deactivate Card.</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"><b>vcbp_deactivate_card.jcsh </b>is script to deactivate the card. </span></div>
<div class="p1">
<span class="s1">After running the script, the card agent is disabled from performing contact-less transactions. </span></div>
<div class="p1">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="p2">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OUcnQNHlPq_NpSHnREa1k5o7SDbMB3sAHocVbLu2es_mI2snPL_a16wqk2qlik6Ix5mtOWJBYKnG0g1ZtIFCVMPP-IQPtkVIVTvUJOkwPmmsefpYpKC8Z7Ku_kEgUD4nY3uu3ZzRDkWe/s1600/Screen+Shot+2014-07-01+at+10.20.39+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3OUcnQNHlPq_NpSHnREa1k5o7SDbMB3sAHocVbLu2es_mI2snPL_a16wqk2qlik6Ix5mtOWJBYKnG0g1ZtIFCVMPP-IQPtkVIVTvUJOkwPmmsefpYpKC8Z7Ku_kEgUD4nY3uu3ZzRDkWe/s1600/Screen+Shot+2014-07-01+at+10.20.39+AM.png" height="234" width="640" /></a></div>
<br /></div>
<div class="p2">
<span class="s1"><b></b></span><br /></div>
<div class="p1">
<span class="s1"><b><br /></b></span>
<span class="s1"><b><br /></b></span>
<span class="s1"><b><br /></b></span>
<span class="s1"><b><br /></b></span>
<span class="s1"><b><br /></b></span>
<span class="s1"><b>Activate card</b></span></div>
<div class="p2">
<br />
<span class="s1"></span></div>
<div class="p1">
<span class="s1"><b>vcbp_activate_card.jcsh</b> is script to activate the card again. </span></div>
<div class="p1">
<span class="s1">After running the script, the card agent is enabled to perform contact-less transactions. </span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO6ZVpGUtlg7nIgbPdhNYU-XEk8hjXHQghVLomWg8gg6QeB9gnOqZ9F3AbyKJNEscmfehK_O0AGQq0P5_SAuhoDOjLWT1UkNTzRGSjhepGxO3CNCI7vBIGz_DTz5ZjCJDd2mxp6fDoHyI8/s1600/Screen+Shot+2014-07-01+at+10.25.01+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO6ZVpGUtlg7nIgbPdhNYU-XEk8hjXHQghVLomWg8gg6QeB9gnOqZ9F3AbyKJNEscmfehK_O0AGQq0P5_SAuhoDOjLWT1UkNTzRGSjhepGxO3CNCI7vBIGz_DTz5ZjCJDd2mxp6fDoHyI8/s1600/Screen+Shot+2014-07-01+at+10.25.01+AM.png" height="267" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="p1">
<span class="s1"><b>Terminate card</b></span></div>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p1">
<span class="s1"><b>vcbp_terminate_card.jcsh</b> is script to terminate the card.</span></div>
<div class="p1">
<span class="s1"> After running the script, the card agent is disabled from performing contact-less transaction. The card agent does not load anymore after refreshing/restarting the wallet. This is like a kill switch, the state cannot be changed from terminated. </span></div>
<div class="p2">
<br />
<span class="s1"></span></div>
<div class="p1">
<span class="s1">Running <b>vcbp_terminate_card script</b> updates the card state in the database to "dead". </span></div>
<div class="p2">
Once a card is terminated it is marked as dead and can not be recovered to active state from the data base.<span class="s1"></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj203MuHK3tyIkWIiEdFwBZ41A91lFrcofdZPIUWFCDqP3wadIZio-gP3CeVPZvzNzNeGzFBFIaNvuT1pmqsRwfXZJuCQkYOzjrJ2a_sJTRH8cAPc2si6ZL2zvmCoSqg_AH5u7AGhCPmMhs/s1600/Screen+Shot+2014-07-01+at+10.32.07+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj203MuHK3tyIkWIiEdFwBZ41A91lFrcofdZPIUWFCDqP3wadIZio-gP3CeVPZvzNzNeGzFBFIaNvuT1pmqsRwfXZJuCQkYOzjrJ2a_sJTRH8cAPc2si6ZL2zvmCoSqg_AH5u7AGhCPmMhs/s1600/Screen+Shot+2014-07-01+at+10.32.07+AM.png" height="266" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="p2">
<span class="s1"></span></div>
The complete STBridge tutorial can be found at: <a href="http://wiki.simplytapp.com/utilities-resources/stbridge/stbridge-guide">http://wiki.simplytapp.com/utilities-resources/stbridge/stbridge-guide</a><br />
<br /></div>
Tom Fhttp://www.blogger.com/profile/11863511269790177365noreply@blogger.com31tag:blogger.com,1999:blog-3763091284544570921.post-61266218115789489442014-04-16T08:51:00.002-07:002015-02-16T07:39:49.463-08:00Host Card Emulation Series: Google Cloud MessagingNotifications can be an integral part of securing cloud based payment transactions. Most mobile OS platforms support notification resources that can be leveraged by the platform developers for different reasons. In the case of cloud based payments, notifications can be used to help secure and enforce authentic transactions at the POS.<br />
<br />
The only relevant mobile OS platform at the time of this publication that supports payments that are accepted by existing mainstream acquirers is the AOSP or Android. HCE (<a href="http://en.wikipedia.org/wiki/Host_card_emulation">Host Card Emulation</a>) was released inside Android 4.4 last October, so this blog post will focus on using Google Cloud Messaging or GCM.<br />
<br />
An overview of the GCM architecture:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivHBnzrraRLa1PDggemPp5jlBqefulkjYCudWCOGw7h4b_SSngAf8iUGLEv3SvSLf6IFaNNxpTYBXlMPNMzAp6PKlcHEHvhyphenhypheniRw8T1Eq3tmWiVmljdPMNWrd1F8D-7TjToBpRsg_X0dPU/s1600/Screen+Shot+2014-04-11+at+10.31.19+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivHBnzrraRLa1PDggemPp5jlBqefulkjYCudWCOGw7h4b_SSngAf8iUGLEv3SvSLf6IFaNNxpTYBXlMPNMzAp6PKlcHEHvhyphenhypheniRw8T1Eq3tmWiVmljdPMNWrd1F8D-7TjToBpRsg_X0dPU/s1600/Screen+Shot+2014-04-11+at+10.31.19+AM.png" height="640" width="465" /></a></div>
<br />
As you can see above the GCM and mobile device form an independent channel from the application itself. This is done because Android OS manages registration of any particular application and therefore managing the communication with that registration which includes OS and device level security precautions. <br />
<br />
For a third party system to send a notification using GCM, the system follows step (a) above and that notification message is expected to be delivered using GCM channels, that is it.<br />
<br />
This architecture can be used as a security measure to protect data that is ultimately relayed to a POS from a mobile application. This simple diagram can indicate how payment transactional data can be protected using 2 different delivery channels<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCrnkPUNpPkQJFqNncRks8yr4EIE8MK2thTNLyBTbIi6tEFUbBi6wUNXJAhqmIRYwILoC_wgCJS5ZkVA6c-W_TfG1pHQiYA5byJKieFidAW-QFumLYNdenOBMmRvhqlKMnG2L1U2-opQ/s1600/Screen+Shot+2014-04-11+at+11.11.22+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCrnkPUNpPkQJFqNncRks8yr4EIE8MK2thTNLyBTbIi6tEFUbBi6wUNXJAhqmIRYwILoC_wgCJS5ZkVA6c-W_TfG1pHQiYA5byJKieFidAW-QFumLYNdenOBMmRvhqlKMnG2L1U2-opQ/s1600/Screen+Shot+2014-04-11+at+11.11.22+AM.png" height="400" width="346" /></a></div>
<div class="separator" style="clear: both;">
As you see above, the message that is to be delivered to the mobile application is split and actually delivered over 2 different channels. So now with contactless or EMV (Cloud Based) credentials, payment information can be protected by these means:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
1) Dynamic Transaction Data: each transaction data delivered to the POS is dynamic or changing from transaction to transaction so that a single transaction data can't be used more than one time</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
2) 2 Channel Delivery: each dynamic transaction data above is split and delivered to the mobile device using SSL as one channel and GCM as a separate channel</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<b>Using GCM with SimplyTapp Platform</b></div>
<div class="separator" style="clear: both; text-align: center;">
<b><br /></b></div>
<div class="separator" style="clear: both;">
The example below provides a hands-on approach to accomplishing these tasks on the SimplyTapp platform. The platform has Notification messaging built into it so that you do not have to concern yourself with the technical details of delivering messages over the network. The interface abstracts the complexity and simply offers a "send to agent" api taking a single message as a string from the card applet service api framework. This message has a known destination of the matching card agent for the card applet service. The SimplyTapp platform handles all the routing and delivery to the proper place.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
First things first, After downloading the <a href="http://wiki.simplytapp.com/software-dev-kits/issuer-sdk">IssuerSdk</a>, unpack it, and go into <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">IssuerSdkBundle</span> and edit <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">CardAgentTesterApp/build.gradle</span> directory and make sure the agentToTest flag is uncommented for "CardAgent-GCM":</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// Swap the line below if you wish to test CardAgent-PayPass or</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// CardAgent-VisaMSD-SwipeYours instead of the CardAgent directory's code</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">// </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//def agentToTest = "CardAgent"</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//def agentToTest = "CardAgent-PayPass"</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">//def agentToTest = "CardAgent-VisaMSD-SwipeYours"</span></div>
<div class="separator" style="clear: both;">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">def agentToTest = "CardAgent-GCM"</span></div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both;">
then build for eclipse:</div>
<div class="separator" style="clear: both;">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">> gradle eclipse</span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>CardApplet service:</b></div>
<div class="separator" style="clear: both;">
<b><br /></b></div>
<div class="separator" style="clear: both;">
Import CardApplet-GCM into eclipse as a java project. In the CardApplet.java file look at the code:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"></span></span>private<span class="s1"> </span>short<span class="s1"> </span><span class="s2">ATC</span><span class="s1"> = 0;</span></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="s1">public</span> <span class="s1">void</span> process(APDU apdu) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> // Good practice: Return 9000 on SELECT</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> if</span> (selectingApplet()) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //no <span class="s3">perso</span> required for this card, so enable on first select</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> Calendar exp = Calendar.getInstance();</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> exp.set(Calendar.<span class="s4">YEAR</span>, 2014);</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> exp.set(Calendar.<span class="s4">MONTH</span>, 4);</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> <span class="s1">try</span> {</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> setStatePersonalized(<span class="s5">"5413123456784800"</span>, exp, <span class="s5">""</span>, <span class="s5">""</span>);</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> } <span class="s1">catch</span> (IOException e) {</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span> }</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> return<span class="s2">;</span></span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> byte</span>[] buf = apdu.getBuffer();</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> switch</span> (buf[ISO7816.<span class="s4">OFFSET_INS</span>]) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span><span class="s1"> case</span><span class="s2"> (</span><span class="s1">byte</span><span class="s2">) 0x01: </span>//command to send a message via GCM</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> short</span> len = apdu.setIncomingAndReceive();</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //convert bytes to ASCII</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> byte</span>[] bytes = <span class="s1">new</span> <span class="s1">byte</span>[len];</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> Util.arrayCopy(apdu.getBuffer(), (<span class="s1">short</span>)5, bytes, (<span class="s1">short</span>)0, len);</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> String msg = <span class="s5">""</span>;</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s1"> try</span> {</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> msg = <span class="s1">new</span> String(bytes, <span class="s5">"UTF-8"</span>);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //echo back the Google Cloud Messaging Notification</span></div>
<div class="p5">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span><span class="s1"> this</span><span class="s2">.sendToAgent(</span>"Applet Message No.: "<span class="s2">+</span><span class="s4">ATC</span><span class="s2">+</span>"\nData: "<span class="s2"> + msg);</span></span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s4"> ATC</span>++;</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s1">catch</span> (IOException e) {</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> break<span class="s2">;</span></span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> default<span class="s2">:</span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> // good practice: If you don't know the INStruction, say so:</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> ISOException.throwIt(ISO7816.<span class="s4">SW_INS_NOT_SUPPORTED</span>);</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="separator" style="clear: both;">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span>}</span></div>
<div class="separator" style="clear: both;">
<br /></div>
The code above in the applet is pretty simple. upon select, it switches the state of the card to personalized if it isn't personalized already. Also it supports only one command (0x01) that is a simple echo of an incoming data message to the GCM service. The key method to send a message via GCM is :<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">sentToAgent("this is a string destined to my agent over GCM");</span><br />
<br />
An IOException() may be thrown in the event that the card agent has not yet been loaded by the mobile application.<br />
<br />
<br />
<b>CardAgent:</b><br />
<br />
Import the CardAgent-GCM into eclipse as a java project. In the CardAgent.java file look at the code:<br />
<br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"></span></span>@Override</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="s2">public</span> <span class="s2">void</span> messageFromRemoteCard(String msg)</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span>{</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s2"> try</span> {</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //post the message to the <span class="s3">app</span>, get the response back to message approval</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> postMessage(</span>"GCM message from applet:\n"<span class="s1">+msg+</span>"\n\nTry Again?"<span class="s1">, </span><span class="s2">true</span><span class="s1">, </span><span class="s2">null</span><span class="s1">);</span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s2">catch</span> (IOException e) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<br />
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="Apple-tab-span"></span>}</span></div>
<br />
when the card agent receives a message from the GCM server, this method posts the message to the mobile application.<br />
<br />
the next code effectively collects a message from the application user and relays that message to the remote card applet service :<br />
<br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span></span>public<span class="s1"> </span>void<span class="s1"> post()</span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span>{</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //post a message to the <span class="s2">app</span>, get a response back to message approval with approval data</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //the message must be less than 32 bytes as defined by the 32</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> ApprovalData.StringData stringData = <span class="s3">new</span> ApprovalData.StringData((<span class="s3">short</span>)0,(<span class="s3">short</span>)32);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> ApprovalData approvalData = <span class="s3">new</span> ApprovalData(stringData);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> try</span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> postMessage(<span class="s4">"Enter A GCM Message"</span>, <span class="s3">false</span>, approvalData);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s3">catch</span> (IOException e) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span>}</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span></div>
<div class="p4">
<span class="Apple-tab-span"><span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"></span></span></div>
<div class="p5">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span></span>@Override</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="s3">public</span> <span class="s3">void</span> messageApproval(<span class="s3">boolean</span> approval, ApprovalData approvalData)</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span>{</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> if</span>(approvalData!=<span class="s3">null</span> && approvalData.getApprovalData()!=<span class="s3">null</span>)</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> ApprovalData.StringData data = (ApprovalData.StringData)approvalData.getApprovalData();</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> if</span>(data!=<span class="s3">null</span> && data.getAnswer()!=<span class="s3">null</span>)</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> byte</span>[] msg = data.getAnswer().getBytes();</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> try</span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> connect();</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s3">catch</span> (IOException e) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> try</span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> TransceiveData batchCommands = <span class="s3">new</span> TransceiveData(TransceiveData.<span class="s5">NFC_CHANNEL</span>);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> batchCommands.setTimeout((<span class="s3">short</span>) 5000);</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> // In this example we just pack a single APDU command to send a message after card reset</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> // and select of <span class="s2">applet</span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> batchCommands.packCardReset(<span class="s3">false</span>);</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> // select <span class="s2">applet</span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> byte</span>[] apduData = <span class="s3">new</span> <span class="s3">byte</span>[10];</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[0] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[1] = (<span class="s3">byte</span>)0xa4;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[2] = 0x04;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[3] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[4] = 0x05;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[5] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[6] = 0x01;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[7] = 0x02;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[8] = 0x03;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[9] = 0x04;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> batchCommands.packApdu(apduData, <span class="s3">false</span>);</span></div>
<div class="p4">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span></span> //send message to <span class="s2">applet</span> to relay over GCM</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> short</span> len = (<span class="s3">short</span>)msg.<span class="s5">length</span>;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData = <span class="s3">new</span> <span class="s3">byte</span>[5+len];</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[0] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[1] = 0x01;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[2] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[3] = 0x00;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> apduData[4] = (<span class="s3">byte</span>)len;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> System.arraycopy(msg, 0, apduData, 5, msg.<span class="s5">length</span>);</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="s1"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> batchCommands.packApdu(apduData, </span><span class="s3">true</span><span class="s1">); </span>//make sure this completes before disconnecting</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> transceive(batchCommands);</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s3">catch</span> (IOException e) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> try</span> {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> disconnect();</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> } <span class="s3">catch</span> (IOException e) {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> }</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="s3"> else</span> <span class="s3">if</span>(approval)</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> post();</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span></div>
<div class="p4">
<span class="Apple-tab-span"><span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"></span></span></div>
<div class="p5">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span></div>
<div class="p5">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">@Override</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="s3">public</span> <span class="s3">void</span> create() {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span><span class="Apple-tab-span"></span> post();</span></div>
<br />
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span"></span>}</span></div>
<br />
the transceive function sends apdu commands to the card applet service for processing and the payload of the second APDU indicates the message to send in ascii format from <span style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"> data.getAnswer().getBytes();</span><br />
<br />
<br />
<b>Running a test:</b><br />
<br />
Now, let's try it out. Import CardAgentTesterApp into eclipse as an android project. After import is completed, browse to the com.simplytapp.config.Constants.java file and adjust the contents to match your PC settings that are running the CardApplet simulator when you start the card applet:<br />
<br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1">package</span> com.simplytapp.config;</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s1">public</span> <span class="s1">class</span> Constants {</span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"> </span>/*setup to communicate to the remoteSE simulator</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * make sure that you have the IsserSdk simulator </span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * running in order for the cardAgent to connect to it.</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * It is important that if you are using the same eclipse</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * client to run the SESDK as this card agent project that</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * you run the SESDK NOT in debug mode as it can tend to</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * slow the response from the SESDK down to non-realistic</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * latencies. anyway, adjust the <span class="s3">ipaddress</span> and port </span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> * for the running SESDK below accordingly for your environment</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> */</span></div>
<div class="p3">
<span class="s2" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> </span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//address of a running SE simulator</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span></span><span class="s1"> final</span><span class="s2"> </span><span class="s1">public</span><span class="s2"> </span><span class="s1">static</span><span class="s2"> String </span><span class="s4">ip</span><span class="s2">=</span><span class="s5">"192.168.1.66"</span><span class="s2">; </span></span></div>
<div class="p3">
<span class="s2" style="font-family: 'Courier New', Courier, monospace; font-size: x-small;"> </span><span style="font-family: 'Courier New', Courier, monospace; font-size: x-small;">//port address of a running SE simulator</span></div>
<div class="p3">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><span class="s2"><span class="Apple-tab-span"></span></span><span class="s1"> final</span><span class="s2"> </span><span class="s1">public</span><span class="s2"> </span><span class="s1">static</span><span class="s2"> </span><span class="s1">int</span><span class="s2"> </span><span class="s4">port</span><span class="s2">=3000; </span></span></div>
<div class="p2">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span></div>
<br />
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span></div>
<div class="p1">
<br /></div>
<div class="p1">
Also, make sure your mobile device has WIFI on and is connected to your internal network so that it can reach the simulator config as defined above.</div>
<div class="p1">
<br /></div>
<div class="p1">
Next, you start the CardApplet project inside eclipse which will prompt you to enter commands in the command window. First highlight the project "CardApplet-GCM" and click the debug button. You may have to select the main class for the project. if so select "<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">com.simplytapp.cardwrapper.CardWrapper</span>". You should see this in the command window:</div>
<div class="p1">
<br /></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># SimplyTapp simulator running on port 3000</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># gpjNG connected on port 3000</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># Connected to card NFC interface</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># using gpjNG!</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># type: help</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"># to get started</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">#</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Found card in terminal: SimplyTapp</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">ATR: 3B 00 </span></div>
<div class="p1">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">></span></div>
<div class="p1">
<br /></div>
<div class="p1">
at the command prompt enter:</div>
<div class="p1">
<br /></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">>/card</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">ATR: 3B 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Command APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Response APDU: 6F 0F 84 08 A0 00 00 01 51 00 00 A5 04 9F 65 01 FF 90 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">(16 ms)</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Successfully selected Security Domain GP211 A0 00 00 01 51 00 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">>auth</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Command APDU: 80 50 00 00 08 F4 AA A8 1A ED CB 4C 84 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Response APDU: 00 00 00 00 00 00 00 00 00 00 FF 02 00 00 6C 55 44 79 7A 91 94 AC C7 A2 F3 8D E7 1B 90 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">(27 ms)</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Command APDU: 84 82 00 00 10 10 2F AA 11 12 B3 0C 93 52 3C 41 C3 46 65 5C 92 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Response APDU: 90 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">(6 ms)</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">>install -i 0001020304 |com.st |CardApplet</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Command APDU: 80 E6 0C 00 1E 06 63 6F 6D 2E 73 74 0A 43 61 72 64 41 70 70 6C 65 74 05 00 01 02 03 04 01 00 02 C9 00 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Response APDU: 00 90 00 </span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">(17 ms)</span></div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">>exit-shell</span></div>
<div class="p1">
</div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">exiting shell, leaving port open</span></div>
<div class="p1">
<br /></div>
<div class="p1">
this installs the new applet as AID 0001020304 which is the proper AID for this demo. after installation you will see that we <span style="font-family: Courier New, Courier, monospace; font-size: x-small;">exit-shell </span>which will leave the simulator running and ready to connect up to the card on the port 3000 as shown above in this configuration.</div>
<div class="p1">
<br /></div>
<div class="p1">
after the simulator is running the card applet service, you can then run the card applet tester app on your device. </div>
<div class="p1">
<br /></div>
<div class="p1">
Once the app starts, you should get a prompt like this: </div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWNAjFLnLwprM7vXS6emH-JS-Wc3Sea-8ZEidDrz-cRheQyflRXmn3V5TLLJnK7LGztBNInvUqhjccum-1FhN2_9dgVsfFqg1VrilEjr1diL0c4egRDB67VIeMNkzXQ9y_-S04jsg8ekk/s1600/Screenshot_2014-04-15-18-18-34.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWNAjFLnLwprM7vXS6emH-JS-Wc3Sea-8ZEidDrz-cRheQyflRXmn3V5TLLJnK7LGztBNInvUqhjccum-1FhN2_9dgVsfFqg1VrilEjr1diL0c4egRDB67VIeMNkzXQ9y_-S04jsg8ekk/s1600/Screenshot_2014-04-15-18-18-34.png" height="320" width="180" /></a></div>
<div class="p1">
<br /></div>
<div class="p1">
After clicking the "Ok" button, the text will go to the card agent which will connect to the remote card applet and send the message to the remote card applet. The card applet will then, in turn, add the message counter information setup in the example code to the message and send the message to GCM for delivery back to the card agent in the mobile application. So you should end up seeing a full circle message delivery and notification from your mobile device that looks like this:</div>
<div class="p1">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQYbbXE7qX7Pnx0jKQl5rjJ7uCD-SAaodRfT9d1l2Q2I_xH58L2pOnVnrrGyMiygSdxhZyfY59_rthsC5woXQO5BSJdW09900D7Sd5hQu0kH2Topf0C01cuNnoEwwz63rV9VIbcXpvoMA/s1600/Screenshot_2014-04-15-18-18-47.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQYbbXE7qX7Pnx0jKQl5rjJ7uCD-SAaodRfT9d1l2Q2I_xH58L2pOnVnrrGyMiygSdxhZyfY59_rthsC5woXQO5BSJdW09900D7Sd5hQu0kH2Topf0C01cuNnoEwwz63rV9VIbcXpvoMA/s1600/Screenshot_2014-04-15-18-18-47.png" height="320" width="180" /></a></div>
<div class="p1">
<br /></div>
<div class="p1">
This test can be repeated as long as you like and it's only purpose is to demonstrate how to use GCM to transport information from the remote card applet service to its card agent.</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com62tag:blogger.com,1999:blog-3763091284544570921.post-28799237182695213582014-03-31T23:01:00.001-07:002015-02-16T07:40:05.052-08:00Host Card Emulation Series: Card Agents and APDUsIn Android 4.4 to support <a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">HCE</a>, <code><a href="http://developer.android.com/reference/android/nfc/cardemulation/HostApduService.html">HostApduService</a></code> declares <code><a href="http://developer.android.com/reference/android/nfc/cardemulation/HostApduService.html#processCommandApdu%28byte[],%20android.os.Bundle%29">processCommandApdu()</a></code> method that the developer needs to implement. The method <code>processCommandApdu()</code> is called when the service receives an Application Protocol Data Unit (APDU) sent by contactless/NFC reader. The developer needs to implement how to process APDUs specific to the card application(s) the service supports. The implementation can become complex if the service supports multiple card applications.<br />
<br />
<a href="http://wiki.simplytapp.com/software-dev-kits">SimplyTapp SDK</a> provides a robust architecture where each card application is implemented in a "<b>card agent</b>". Using SimplyTapp SDK, there is no need for the developer to implement a complex <code>processCommandApdu()</code> method for a service that supports multiple card applications. Instead the developer implements <code>process()</code> method in the card agent for each card application. A mobile application can support multiple card agents and card agents can be remotely deployed to the mobile application, similar to remotely deploying Java Card applet (aka cardlet) to the Secure Element. Essentially SimplyTapp SDK provides an architecture that is familiar to Java Card developers.<br />
<br />
I will describe how the card agent processes different APDU cases as defined in ISO/IEC 7816-4 specification.<br />
<table border="2" bordercolor="#000000" cellpadding="6" cellspacing="6" style="background-color: white; margin-top: 6px; width: 100%px;">
<tbody>
<tr>
<td>ISO 7816-4 Case 1</td>
<td>No Lc<br />
No Le<br />
<i>Example: 80100000</i></td>
</tr>
<tr>
<td>ISO 7816-4 Case 2</td>
<td>No Lc<br />
1-byte Le (1 to 256, Le=0x00 represents 256)<br />
<i>Example: 8012000000</i></td>
</tr>
<tr>
<td>ISO 7816-4 Case 3</td>
<td>1-byte Lc (1 to 255)<br />
No Le<br />
<i>Example: 80140000081112131415161718</i></td>
</tr>
<tr>
<td>ISO 7816-4 Case 4</td>
<td>1-byte Lc (1 to 255)<br />
1-byte Le (1 to 256, Le=0x00 represents 256)<br />
<i>Example: 8016000008212223242526272800</i>
</td>
</tr>
</tbody>
</table>
<br />
Here is sample code for card agent implementation that demonstrates how to process the example APDUs. The class extends <code>com.simplytapp.virtualcard.Agent</code>.<br />
<pre style="background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> import javacard.framework.APDU;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import com.simplytapp.virtualcard.Agent;
public class CardAgent extends Agent {
public void process(APDU apdu) throws ISOException {
byte[] apduBuffer = apdu.getBuffer();
byte claByte = apduBuffer[ISO7816.OFFSET_CLA];
byte insByte = apduBuffer[ISO7816.OFFSET_INS];
if (claByte == (byte) 0x80) {
if (insByte == (byte) 0x10) {
// Process case 1 command APDU.
processCase1Apdu();
// Return SW=0x9000.
}
else if (insByte == (byte) 0x12) {
// Process case 2 command APDU.
// Copy response data to APDU buffer.
System.arraycopy(responseData, 0,
apduBuffer, 0, responseData.length);
short le = apdu.setOutgoing();
if (responseData.length > le) {
le = (short) responseData.length;
}
apdu.setOutgoingLength(le);
apdu.sendBytes((short) 0, le);
// Return response data with SW=0x9000.
}
else if (insByte == (byte) 0x14) {
// Process case 3 command APDU.
short lc = apdu.setIncomingAndReceive();
// Save command data from APDU buffer.
System.arraycopy(apduBuffer, ISO7816.OFFSET_CDATA,
commandData, 0, lc);
// Return SW=0x9000.
}
else if (insByte == (byte) 0x16) {
// Process case 4 command APDU.
short lc = apdu.setIncomingAndReceive();
// Save command data from APDU buffer.
System.arraycopy(apduBuffer, ISO7816.OFFSET_CDATA,
commandData, 0, lc);
// Copy response data to APDU buffer.
System.arraycopy(responseData, 0,
apduBuffer, 0, responseData.length);
short le = apdu.setOutgoing();
if (responseData.length > le) {
le = (short) responseData.length;
}
apdu.setOutgoingLength(le);
apdu.sendBytes((short) 0, le);
// Return response data with SW=0x9000.
}
}
}
}
</code></pre>
<br />
The card agent can also process extended length APDUs as defined in ISO/IEC 7816-4 specification. The maximum supported length using extended length is 32767 to be consistent with Java Card API.<br />
<table border="2" bordercolor="#000000" cellpadding="6" cellspacing="6" style="background-color: white; margin-top: 6px; width: 100%px;">
<tbody>
<tr>
<td>ISO 7816-4 Case 1</td>
<td>Not Applicable</td>
</tr>
<tr>
<td>ISO 7816-4 Case 2</td>
<td>No Lc<br />
3-byte Le (1 to 32767, Le=0x000000 represents 32767)<br />
<i>Example: 80120000000000</i></td>
</tr>
<tr>
<td>ISO 7816-4 Case 3</td>
<td>3-byte Lc (1 to 32767)<br />
No Le<br />
<i>Example: 801400000000081112131415161718</i></td>
</tr>
<tr>
<td>ISO 7816-4 Case 4</td>
<td>3-byte Lc (1 to 32767)<br />
2-byte Le (1 to 32767, Le=0x0000 represents 32767)<br />
<i>Example: 8016000000000821222324252627280000
</i></td>
</tr>
</tbody>
</table>
<br />
Here is sample code for card agent implementation that demonstrates how to process the example extended length APDUs. The class extends <code>com.simplytapp.virtualcard.Agent</code> and implements <code>javacardx.apdu.ExtendedLength</code>.<br />
<pre style="background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> import javacard.framework.APDU;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacardx.apdu.ExtendedLength;
import com.simplytapp.virtualcard.Agent;
public class CardAgent extends Agent implements ExtendedLength {
public void process(APDU apdu) throws ISOException {
byte[] apduBuffer = apdu.getBuffer();
byte claByte = apduBuffer[ISO7816.OFFSET_CLA];
byte insByte = apduBuffer[ISO7816.OFFSET_INS];
if (claByte == (byte) 0x80) {
if (insByte == (byte) 0x12) {
// Process case 2 command APDU.
// Copy response data to APDU buffer.
System.arraycopy(responseData, 0,
apduBuffer, 0, responseData.length);
short le = apdu.setOutgoing();
if (responseData.length > le) {
le = (short) responseData.length;
}
apdu.setOutgoingLength(le);
apdu.sendBytes((short) 0, le);
// Return response data with SW=0x9000.
}
else if (insByte == (byte) 0x14) {
// Process case 3 command APDU.
short receivedLen = apdu.setIncomingAndReceive();
// Save command data from APDU buffer.
System.arraycopy(apduBuffer, apdu.getOffsetCdata(),
commandData, 0, receivedLen);
short lc = apdu.getIncomingLength();
// Check if additional command data not yet received.
if (receivedLen != lc) {
short commandDataOffset = receivedLen;
// Receive more command data until no more available.
receivedLen = apdu.receiveBytes((short) 0);
while (receivedLen != 0) {
// Save additional command data from APDU buffer.
System.arraycopy(apduBuffer, 0,
commandData, commandDataOffset, receivedLen);
commandDataOffset += receivedLen;
receivedLen = apdu.receiveBytes((short) 0);
}
}
// Return SW=0x9000.
}
else if (insByte == (byte) 0x16) {
// Process case 4 command APDU.
short receivedLen = apdu.setIncomingAndReceive();
// Save command data from APDU buffer.
System.arraycopy(apduBuffer, apdu.getOffsetCdata(),
commandData, 0, receivedLen);
short lc = apdu.getIncomingLength();
// Check if additional command data not yet received.
if (receivedLen != lc) {
short commandDataOffset = receivedLen;
// Receive more command data until no more available.
receivedLen = apdu.receiveBytes((short) 0);
while (receivedLen != 0) {
// Save additional command data from APDU buffer.
System.arraycopy(apduBuffer, 0,
commandData, commandDataOffset, receivedLen);
commandDataOffset += receivedLen;
receivedLen = apdu.receiveBytes((short) 0);
}
}
// Copy response data to APDU buffer.
System.arraycopy(responseData, 0,
apduBuffer, 0, responseData.length);
short le = apdu.setOutgoing();
if (responseData.length > le) {
le = (short) responseData.length;
}
apdu.setOutgoingLength(le);
apdu.sendBytes((short) 0, le);
// Return response data with SW=0x9000.
}
}
}
}
</code></pre>
Minghttp://www.blogger.com/profile/10654339866257639413noreply@blogger.com17tag:blogger.com,1999:blog-3763091284544570921.post-36782483635618869612014-03-14T07:46:00.000-07:002015-02-16T07:40:37.843-08:00Host Card Emulation Series: Contactless Debit, A Merchants Advantage<div class="Publishwithline">
<div class="Publishwithline">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><span style="font-size: x-large;"><b>Contactless Debit, A Merchants Advantage</b></span><w:sdtpr></w:sdtpr></div>
<div style="border-bottom: solid #C6C6C6 1.0pt; border: none; mso-element: para-border-div; padding: 0in 0in 2.0pt 0in;">
<div class="underline">
<br /></div>
</div>
<div class="PadderBetweenControlandBody">
<br /></div>
<div class="MsoNormal" style="text-align: justify;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/SPXnbfxbpME?feature=player_embedded' frameborder='0'></iframe><span style="font-size: 12.0pt;"></span><br />
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><span style="font-size: 12pt;">Host
Card Emulation (HCE) brings new opportunity for merchants. In a recent trip to
Whole Foods, who installed contactless terminals some time ago, I decided to
try my debit card using the Tapp mobile test wallet. </span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">After grabbing some lunch I headed to the register, and proceeded to checkout.</span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">I tapped my phone to the contactless terminal
and VOILA! The terminal asked me for my pin, I entered it, grabbed my lunch and
off I went.</span></span></div>
<span style="font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">So
why is this important?<span style="mso-spacerun: yes;"> </span>The answer requires
a look back at where the dynamics of the payments industry was just a few years
ago.<o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><span style="font-size: 12.0pt;">The “Way back Machine”<o:p></o:p></span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><span style="font-size: 12.0pt;"><br /></span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">In
the semi-beginning, circa 2011, NFC mobile wallets meant Google Wallet, ISIS
and the MNOs controlled SE model. <span style="mso-spacerun: yes;"> </span>The
idea was pretty straight forward one device, one SE, maybe one credit card, and
POW!!! BAMM!! Goldmine! Right...Wrong! What happened? A back lash by merchants,
banks and just about everyone but the MNOs.<span style="mso-spacerun: yes;">
</span>In front of the new push for mobile payments stood a number of hurdles that
needed to be cleared.<span style="mso-spacerun: yes;"> </span>One of the most
sizable hurdles being the merchants feeling that Contactless = Higher
Transaction Costs. <o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">Merchants
viewed NFC as a more expensive transaction form and in the SE model that was
largely true. For example, the average cost of a debit transaction tops out at
around $0.30 in the US compared to the potentially much higher cost credit
transaction, roughly $0.10 + 1.7% or more.<span style="mso-spacerun: yes;">
</span>So what happened? Merchants, led by Walmart, huddled together in an
attempt to break down mobile payment progress and keep transaction costs down. They
called it MCX. Their message could generally be summed up with the following
statement <b style="mso-bidi-font-weight: normal;">“Hell No, We Won’t Go!” </b><span style="mso-spacerun: yes;"> </span>This stance led to a lot of head scratching as
how mobile payment adoption would or could progress. But q</span><span style="font-size: 12pt;">uietly
the ground began to soften and HCE took root.</span><span style="font-size: 12pt;"> </span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><span style="mso-spacerun: yes;"><br /></span></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><span style="color: #0070c0; font-size: 16.0pt; mso-bidi-font-size: 12.0pt;">“Bing,
please enter PIN” <o:p></o:p></span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><span style="color: #0070c0; font-size: 16.0pt; mso-bidi-font-size: 12.0pt;"><br /></span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">Coming back to my experience at Whole Foods and <b style="mso-bidi-font-weight: normal;">why it is</b> <b style="mso-bidi-font-weight: normal;">important</b>.<span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><span style="mso-spacerun: yes;"><br /></span></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">The
goal of any merchant is to sell goods or services to customers in exchange for
assets, typically money, that has a greater value to the merchant than the
goods and services being sold. <span style="mso-spacerun: yes;"> </span>Pretty
straight forward, but how that exchange actually takes place is where we will
have our conversation.<span style="mso-spacerun: yes;"> </span><o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">When
it comes to merchants convincing consumers to part with their money they want
to make it as easy as possible. Today there are, generally speaking, a handful
of payments options as presented below:<o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
</div>
<ul>
<li><span style="font-size: 12pt;">Cash
– used often and easily accepted;</span></li>
<li><span style="font-size: 12pt;">Check
– rarely used anymore and rather hard and slow to use;</span></li>
<li><span style="font-size: 12pt;">Credit
– used often and extremely easy for both cashier and customer;</span></li>
<li><span style="font-size: 12pt;">Debit
– used most often and equal to credit for ease of use;</span></li>
<li><span style="font-size: 12pt;">GiftCard/Stored
Value – used on a regular basis and considered as easy to use as other plastic
forms.</span><span style="font-size: 12pt;"> </span></li>
</ul>
<br />
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">Each
payment option has advantages and disadvantages regarding availability, ease of
use and cost of managing and accepting.<span style="mso-spacerun: yes;">
</span>More importantly all these payment form factors excluding only cash and
check can be all accepted over the contactless channel. This means that merchants
now have increased opportunity to influence customers when it comes to
selecting payment forms like debit and gift/stored value cards over their more
expensive siblings. <o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;">It
means the power of payment is now in the hands of the merchant.<span style="mso-spacerun: yes;"> </span>To illustrate a practical example of this is
the case study of Spec’s, a merchant that communicates to their customers the
importance of selecting the right payment form.<o:p></o:p></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b><span style="font-size: large;"><br /></span></b></div>
<div style="text-align: left;">
<b><span style="font-size: large;">Debit Strategy: Spec’s</span></b></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><br /></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<a href="https://origin.ih.constantcontact.com/fs118/1102628939113/img/282.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: left;"><img border="0" height="200" src="https://origin.ih.constantcontact.com/fs118/1102628939113/img/282.jpg" width="194" /></a><span style="font-size: 12.0pt;"></span><br />
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><span style="font-size: 12pt;">Spec’s
is a merchant in Texas that manages their transaction cost extremely well.</span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">Every check out register displays the options
and cost of the options and every cashier asks the customer if they would like
a 5% discount for using Cash or Debit.</span><span style="font-size: 12pt;">
</span><span style="font-size: 12pt;">Pretty easy to make that decision for me.</span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">I simply present my debit card and save the
money up front.</span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">It is not just Spec’s
that takes this simplified approach but other </span><a href="http://www.washingtonpost.com/business/capitalbusiness/as-rules-change-more-retailers-offer-discounts-for-cash-payments/2013/06/29/d4c84d7a-dcfc-11e2-bd83-e99e43c336ed_story.html" style="font-size: 12pt;">merchants</a><span style="font-size: 12pt;">
as well.</span><span style="font-size: 12pt;"> </span></span></div>
<span style="font-size: 12.0pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<span style="font-size: 12.0pt;"><span style="mso-spacerun: yes;"><br /></span></span></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b><span style="font-size: large;">Conclusion</span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><span style="font-size: 12.0pt;"><br /></span></b></div>
</div>
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<!--[if gte vml 1]><v:shape id="Video_x0020_3"
o:spid="_x0000_s1027" type="#_x0000_t75" style='position:absolute;left:0;
text-align:left;margin-left:225pt;margin-top:151.1pt;width:226.8pt;height:151.2pt;
z-index:-251657216;visibility:visible;mso-wrap-style:square;
mso-width-percent:0;mso-height-percent:0;mso-wrap-distance-left:9pt;
mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;
mso-position-horizontal-relative:text;mso-position-vertical:absolute;
mso-position-vertical-relative:text;mso-width-percent:0;mso-height-percent:0;
mso-width-relative:margin;mso-height-relative:margin'>
<v:imagedata src="file:///C:\Users\Ted\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
<w:wrap type="tight"/>
</v:shape><![endif]--><!--[if !vml]--><span style="font-size: 12.0pt;">HCE offers merchants and banks alike new opportunities to influence
consumers’ payment behavior like never before. <span style="mso-spacerun: yes;"> </span>As Spec’s demonstrates,
customer are willing to pay cash or use debit when offered discounts at the
register. Speaking from experience I know this is true. However, merchants
should understand that offering consumers incentive to select the less expensive
debit or gift/stored value card is a window that will not stat open forever as the pace of adoption continues to accelerate. T</span><span style="font-size: 12pt;">here are already merchants implementing effective
transactions cost reducing strategies.</span><span style="font-size: 12pt;"> </span><span style="font-size: 12pt;">Moving
these same strategies into the mobile space only enhance the merchants’
position in a consumers mind at the time of check out.</span></div>
</div>
<w:sdt contentlocked="t" id="89512093" sdtgroup="t"><span style="font-family: "Calibri","sans-serif"; font-size: 1.0pt; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-fareast; mso-hansi-theme-font: minor-latin;"><w:sdtpr></w:sdtpr><w:sdt docpart="A64539E0B337472ABE5D1D76C1C4DA21" id="89512082" storeitemid="X_5F329CAD-B019-4FA6-9FEF-74898909AD20" text="t" title="Post Title" xpath="/ns0:BlogPostInfo/ns0:PostTitle"></w:sdt></span>
</w:sdt>
<br />
<div class="MsoNormal" style="text-align: justify;">
<div style="text-align: left;">
<br /></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/02699661112873519190noreply@blogger.com21tag:blogger.com,1999:blog-3763091284544570921.post-8116757406971798312014-01-22T12:08:00.003-08:002015-02-16T07:41:30.965-08:00Host Card Emulation Series: Stored-Value Cards and HCE<a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=3763091284544570921" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><br />
<div class="MsoNormal">
This post will focus on using stored-value cards for payment at contact-less NFC terminals through an HCE (Host Card Emulation) solution. HCE technology present in NFC payment apps can be used with various different cards. A large number of retailers are offering company branded stored-value cards to consumers. This use case will look
at precisely that, using stored-value cards at NFC terminals.<br />
<br />
<div style="text-align: center;">
For this example we are using the McDonald's Arch Card. </div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAQK3wXzZRn5milkwxgwbhPWB-YiTj11Xomjkb9td8RkQ-x9zVTmLytn3Hceh5EgeIAiOOr2whZqB4GBGtm2r7HCZGM3Cr-M-nGtYiF4nwX5Jt7RrocYUJTZuoHzDYGZenxP9ikJbEIOsf/s1600/imgres.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAQK3wXzZRn5milkwxgwbhPWB-YiTj11Xomjkb9td8RkQ-x9zVTmLytn3Hceh5EgeIAiOOr2whZqB4GBGtm2r7HCZGM3Cr-M-nGtYiF4nwX5Jt7RrocYUJTZuoHzDYGZenxP9ikJbEIOsf/s1600/imgres.jpg" height="320" width="287" /></a></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:shape
id="Picture_x0020_1" o:spid="_x0000_i1026" type="#_x0000_t75" style='width:135pt;
height:93.75pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\Niraj\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg"
o:title="imgres"/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--> <br />
<br />
<br />
<br />
<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; text-align: center;"><tbody>
<tr><td style="text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlB7JdZpkTz0ZKZIfEXOu5bxJhnXjGOFJvoQML3nGGMzcdHvD8qEKhwmeLpN0wxzHp9GOKwZwqeKvv3LRGRcy1_foUbsALERmctG5mz2MNuAq8huS_aXAO8M9YMHorKOEeBkNoPuDVtN7M/s1600/archcard.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlB7JdZpkTz0ZKZIfEXOu5bxJhnXjGOFJvoQML3nGGMzcdHvD8qEKhwmeLpN0wxzHp9GOKwZwqeKvv3LRGRcy1_foUbsALERmctG5mz2MNuAq8huS_aXAO8M9YMHorKOEeBkNoPuDVtN7M/s1600/archcard.jpg" height="136" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"> McDonald's Arch Card</td></tr>
</tbody></table>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
McDonald’s for some time has had contact-less NFC capable payment terminals installed and operational in all of its franchises in the U.S. This example will use the re-loadable Arch card to pay as well as re-load balance at contact-less NFC terminals. The Arch Card is available for purchase at various locations including all McDonald's restaurants. This specific
card as well others with similar architecture are able to be loaded into the
system SimplyTapp has created utilizing HCE. For this example I will be using the “Tapp“Application now available for free on Google Play store.</div>
<div class="MsoNormal">
<a href="https://play.google.com/store/apps/details?id=com.tapp&hl=en">https://play.google.com/store/apps/details?id=com.tapp&hl=en</a></div>
<div class="MsoNormal">
<br />
Simple process of loading your Arch Card for payment into Tapp app:<br />
<ol>
<li><span style="text-indent: -0.25in;">Downloaded Tapp app from Google
Play store.</span></li>
<li><span style="text-indent: -0.25in;">Log in and select to add a card from the add card button indicated by + sign in the action bar.</span></li>
<li><span style="text-indent: -0.25in;">Select Mcdonald's Arch Card and purchase.</span></li>
<li><span style="text-indent: -0.25in;">Refresh card list and Arch card will be loaded into Tapp App.</span></li>
<li style="text-indent: -24px;"> Select Arch Card for payment.</li>
</ol>
</div>
<div class="MsoNormal">
At this point my Tapp app is ready to make payments with your Arch Card at McDonald’s contact-less terminals, which are standard at all locations in the U.S.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglcHYH2Tynmk3EBX3JNjtnOxI9iEkE4NhN9hlaoT8sZiHVyvzguCvOxoar-Z6SaIrftYSWk7qpQQdvEeS-HS3gvgMNLJZTLHFXQ-VyPQmsJPmzOcE6mkrr4efmbzk1fWfTVQvUm5hVxrwk/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglcHYH2Tynmk3EBX3JNjtnOxI9iEkE4NhN9hlaoT8sZiHVyvzguCvOxoar-Z6SaIrftYSWk7qpQQdvEeS-HS3gvgMNLJZTLHFXQ-VyPQmsJPmzOcE6mkrr4efmbzk1fWfTVQvUm5hVxrwk/s1600/images.jpg" /></a></div>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Paying with your KitKat Android 4.4 device using the HCE architecture
found in the Tapp app provides a great user experience. There is no specific or additional instructions necessary when using your digital copy of your Arch Card loaded into your Tapp app. Flow of transaction was similar to a typical experience, order was placed and cashier simply asked cash or card. Card was indicated as form of pay and at this time phone was placed over terminal and payment was made with my Arch Card. The experience for the merchant as well as the
user was seamless. A video of the experience is found below:</div>
<div class="MsoNormal">
<br />
<div style="text-align: center;">
Pay with Arch Card:</div>
</div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/6Off6nvl3t8?feature=player_embedded' frameborder='0'></iframe></div>
<a href="https://www.youtube.com/watch?v=6Off6nvl3t8">https://www.youtube.com/watch?v=6Off6nvl3t8</a><br />
<span style="text-indent: 0.5in;"><br /></span>
<span style="text-indent: 0.5in;">At McDonald’s I was also able to
add additional funds to my re-loadable Arch Card that was previously loaded in
my Tapp app. The process was simple and strait forward. I told the cashier that I had a re-loadable Arch Card and I wished to add additional
funds to it. The cashier rang me up and I handed cash over. I then placed my phone over the terminal and card was
reloaded. From a user experience reloading and payment were the same. A video of the
experience is found below:</span></div>
<div class="MsoNormal">
<br />
<div style="text-align: center;">
Reload Arch Card:</div>
</div>
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/iCJTJSWhFEc?feature=player_embedded' frameborder='0'></iframe></div>
<a href="https://www.youtube.com/watch?v=iCJTJSWhFEc">https://www.youtube.com/watch?v=iCJTJSWhFEc</a><br />
<br />
All of my transactions with my Arch Card can be monitored through McDonald's website.The Tapp app does not currently possess functionality to update balances on application. The HCE digital transaction shown in videos above are reflected in the following statement.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyt9vH5FuKJhUBrNjWCWJohKKPbVUbC5MZS8L9wKXanVV3PMS04pCwoy9xVM73x6ZYWBhcw0uMbYwKyPTg_mNahAo-KAiCC9Tc52PT_SXj4aJmVcLQQ6OArprYXo_ky_6va-izmXtV1yWP/s1600/ArchCard+Screen+shot.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyt9vH5FuKJhUBrNjWCWJohKKPbVUbC5MZS8L9wKXanVV3PMS04pCwoy9xVM73x6ZYWBhcw0uMbYwKyPTg_mNahAo-KAiCC9Tc52PT_SXj4aJmVcLQQ6OArprYXo_ky_6va-izmXtV1yWP/s1600/ArchCard+Screen+shot.png" height="320" width="180" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKijxXxHTuUyoImQ3oDduZ4l7m1KacKMAQlmcMMEZPWAjpN6xhYnVUgRjgN5AVMYAK5vewDmOOy0fl5Tvb6SpupWarp-pINLYK00W7gYaVld-jKR1ICar3l5ZcU-M3EPC6poUDbYHcQthx/s1600/ArchCard+Balance.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKijxXxHTuUyoImQ3oDduZ4l7m1KacKMAQlmcMMEZPWAjpN6xhYnVUgRjgN5AVMYAK5vewDmOOy0fl5Tvb6SpupWarp-pINLYK00W7gYaVld-jKR1ICar3l5ZcU-M3EPC6poUDbYHcQthx/s1600/ArchCard+Balance.JPG" height="183" width="320" /></a></div>
<br />
<br /></div>
<div class="MsoNormal">
<br /></div>
<br />
<br />
<br />
<br />
Having the Tapp app with HCE capabilities it allowed me to use the Arch Card at McDonald's terminal from my mobile phone. My completely digital transaction added to my user experience and gave a great glimpse in to the future of payments from the
view point of stored-value cards. The pairing of HCE and stored-value cards offer a great way to add value on either side of the transaction.<br />
<br />
<br />
<br />
<br />
<br />
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F1.bp.blogspot.com%2F-XXaiWA6uM8o%2FUtb6RBEsv1I%2FAAAAAAAAAGk%2Fk9jJKNDoucA%2Fs1600%2Farchcard.jpg&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlB7JdZpkTz0ZKZIfEXOu5bxJhnXjGOFJvoQML3nGGMzcdHvD8qEKhwmeLpN0wxzHp9GOKwZwqeKvv3LRGRcy1_foUbsALERmctG5mz2MNuAq8huS_aXAO8M9YMHorKOEeBkNoPuDVtN7M/s1600/archcard.jpg" -->Tom Fhttp://www.blogger.com/profile/11863511269790177365noreply@blogger.com67tag:blogger.com,1999:blog-3763091284544570921.post-33132262248878671722014-01-07T18:23:00.002-08:002015-02-16T07:41:49.132-08:00Host Card Emulation Series: SwipeYours - Tap Using A Card From Your Wallet<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif; line-height: 1.15; white-space: pre-wrap;">While various Android HCE (Host Card Emulation) examples have been popping up, until now there has been no simple examples that could be easily tested with live payment terminals. SwipeYours fills this space.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">SwipeYours is a small, self contained app from which your card data never leaves the phone except to make NFC payments. It uses the Visa-MSD (Magnetic Stripe Data) protocol to make tap payments. While Visa-MSD is now deprecated, it is supported by most NFC payment terminals in North America and this is unlikely to change in the near future. In Austin, TX we’ve successfully used SwipeYours at all of the following:</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></b></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">CVS drugstore</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">McDonald’s</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Jack in the Box</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Taco Bell</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Jamba Juice</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Valero Gas Stations</span></div>
</li>
</ul>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"><u>Links:</u></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://github.com/dimalinux/SwipeYours/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">SwipeYours source code</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://github.com/dimalinux/SwipeYours/blob/master/src/main/java/to/noc/android/swipeyours/PaymentService.java" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Direct Link to the PaymentService class</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><a href="https://play.google.com/store/apps/details?id=to.noc.android.swipeyours" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Google Play Download</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></div>
</li>
</ul>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b>
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; vertical-align: baseline; white-space: pre-wrap;"></span><u>What you need to use SwipeYours:</u></span></b></div>
<ul style="text-align: left;">
<li><span style="font-family: Arial, Helvetica, sans-serif; line-height: 1.15;">A magnetic stripe reader to pull your card data. These can be purchased cheaply on both Amazon and Ebay in the US.</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;">An NFC phone running Android 4.4+ (KitKat or above).</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;">A non-chipped Visa credit or debit card. If the card already has a smart chip for native tap payments, the authorization processor is most likely expecting a different variation of Visa MSD than what we can provide. </span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif; line-height: 18px;">An issuing bank (or its outsourced processor) that does not check the delivery method: swipe, dip or tap.The processor has access to the delivery method of the card data and can reject a tap transaction if it wants to. All tested prepaid Visa cards have not had this issue and most major banks like Chase work fine. Capital One cards and the processor for some small credit unions, unfortunately, do have this issue.</span></li>
</ul>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<u><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></u>
<u><span style="font-family: Arial, Helvetica, sans-serif;">Small Print Disclaimer:</span></u></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: x-small;">SimplyTapp does not encourage the storage of payment credentials on your phone and provides secure cloud based solutions. </span><span style="font-size: x-small;">I have provided the source code and Google play download via my personal Github and Google accounts respectively.</span><span style="font-size: x-small;"> Adding your own magnetic stripe data to SwipeYours may work, but it is not a supported payment method by Visa or your issuing bank. </span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<div style="text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Visa-MSD Payment example:</span></div>
</div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Applications implementing HCE send and receive data with a POS (Point Of Sale) terminal using a byte array abstraction called an APDU (Application Protocol Data Unit).</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The </span><a href="https://github.com/dimalinux/SwipeYours/blob/master/src/main/java/to/noc/android/swipeyours/MainActivity.java" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">MainActivity</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> of SwipeYours logs these APDU exchanges to the screen so developers can better understand how the process works. Below I’ll show the data from a typical Visa-MSD transaction performed by SwipeYours. If you want to better understand the values in the hex strings below, the </span><a href="https://github.com/dimalinux/SwipeYours/blob/master/src/main/java/to/noc/android/swipeyours/PaymentService.java" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">source code to the SwipeYours PaymentService</span></a><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> has lots of detailed comments.</span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2192/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">→</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: Consolas; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PaymentService Received PPSE select: 00A404000E</span><span style="background-color: transparent; color: red; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">325041592E5359532E4444463031</span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">00</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Here the POS sent our app a PPSE (Proximity Payment Service Environment) select. This is the first APDU sent in any payment transaction. It asks the payment device to send a list of supported payment types.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<span style="font-family: Arial, Helvetica, sans-serif;">The AID (Application IDentifier) in the request is <span style="color: red;">highlighted in red</span>. It's the ASCII string <i>2PAY.SYS.DDF01</i> represented in hexadecimal. If you are not using HCE (Host Card Emulation), these select statements would be delivered to a JavaCard applet registered to that AID. JavaCard is a subset of Java designed for low power chips.</span><br />
<div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif;">With HCE, there is no requirement to use JavaCard applets. The PaymentService entry in our <a href="https://github.com/dimalinux/SwipeYours/blob/master/src/main/AndroidManifest.xml#L44">Android manifest</a> specifies a <a href="https://github.com/dimalinux/SwipeYours/blob/master/src/main/res/xml/aid_list.xml#L11-15">list of AID</a> values that should be directed to our service.</span></div>
<div>
<br />
<br /></div>
<div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2190/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">←</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: Consolas; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Response: </span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">6F23840E325041592E5359532E4444463031A511BF0C0E610C4F07</span><span style="background-color: transparent; color: red; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A0000000031010</span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">8701019000</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;">Our PPSE response contains a single AID value letting the POS know that we only support Visa credit and debit transactions. </span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2192/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">→</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PaymentService Received Visa-MSD select: 00A4040007</span><span style="background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: red;">A0000000031010</span></span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">00</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;">Now the POS selects the only payment AID that we offered above.</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2190/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">←</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Response: 6F1E8407</span><span style="background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: red;">A0000000031010</span></span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A513500B</span><span style="background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: red;">5649534120435245444954</span></span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">9F38039F66029000</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">SwipeYours sends Visa-MSD select response. For trivia sake, the second value in red above is the ASCII string </span><span style="background-color: transparent; color: black; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><i>VISA CREDIT</i></span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> represented in hexadecimal.</span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2192/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">→</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: black; color: white; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PaymentService Received GPO: </span><span style="color: #666666; line-height: 1.15; white-space: pre-wrap;">80A80000048302800000</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS sends the Get Processing Options (GPO) command.</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2190/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">←</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: Courier New, Courier, monospace; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b>Response: 80060080080101009000</b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: #666666; font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;">Payment devices supporting Visa transactions can support different payment protocols (Visa uses the term "path" instead of protocol). Our response lets the POS terminal know that we only support Visa-MSD. Our <span style="line-height: 1.15; white-space: pre-wrap;">GPO response above lets the POS know that we only support Visa -MSD.</span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span><br /><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2192/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">→</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: Courier New, Courier, monospace; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b>PaymentService Received READ REC: 00B2010C00</b></span><span style="background-color: transparent; color: #666666; font-family: Consolas; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS sends Read Record command. It's a short command requesting the payment data.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">POS </span><a href="http://www.fileformat.info/info/unicode/char/2190/index.htm" style="text-decoration: none;"><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">←</span></a><span style="background-color: black; color: white; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> SwipeYours</span></span><span style="background-color: transparent; color: blue; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: blue; font-family: Consolas; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Courier New, Courier, monospace;"><b><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Response: 70155713</span><span style="color: blue; line-height: 17px; white-space: pre-wrap;">4046460664629718</span><span style="background-color: transparent; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: red;">D</span><span style="color: magenta;">1610</span><span style="color: #38761d;">121</span><span style="color: #cc0000;">0000018100000</span><span style="color: #3d85c6;">F</span></span><span style="background-color: transparent; color: #666666; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">9000</span></b></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="font-family: Arial, Helvetica, sans-serif;">Here SwipeYours sends your credit card data to the terminal in the read record response. The format of the data is known as<i> track 2 equivalent data</i>. Its a fairly straight forward transformation of the track 2 portion of the card's magstripe data. You replace the '=' with a valid hex digit 'D' and you add a single 'F' to the end if needed to create an even number of hex digits. The extra 'F' digit was necessary in this example, because each hex value is 4 bits of binary data and we need an even number of hex digits to convert to a whole number of 8-bit bytes.</span></b><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Here is the track 2 data that was used to create the APDU above:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<b><span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">;</span><span style="background-color: transparent; color: blue; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4046460664629718</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">=</span><span style="background-color: transparent; color: magenta; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1610</span><span style="background-color: transparent; color: #38761d; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">121</span><span style="background-color: transparent; color: #cc0000; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0000018100000</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">?</span></span></b></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><b id="docs-internal-guid-3219d78c-6f18-db2d-a4aa-8f55635a97f9" style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
</span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The track 2 syntax is:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: blue; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Card number</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: magenta; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Expiration date: YYMM</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Service code</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #cc0000; font-family: Arial, Helvetica, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Issuer dependent discretionary data</span></div>
</li>
</ul>
<span style="font-family: Arial, Helvetica, sans-serif;"><b style="font-weight: normal;"><br /><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></b>
</span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">How to decipher the service code, </span><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #bf9000;">X</span></span><span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #0b5394;">X</span></span><span style="background-color: transparent; color: #6aa84f; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">X</span><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">:</span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #b45f06; font-family: Arial, Helvetica, sans-serif;">Values 1 or 2 in the first digit mean the card can be used internationally. Values 6 or 7 say the card is restricted to the issuer's country or some group of countries. 2 and 7 indicate that the card has a built in chip for tap payments and the magstripe data on these cards will probably not work with SwipeYours.</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="color: #0b5394; font-family: Arial, Helvetica, sans-serif;">The middle digit specifies who provides authorization processing. Value 0 means <i>normal,</i> 2 is by the issuer or their processor, and 4 is the issuer unless a bilateral agreement applies.</span></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="background-color: transparent; color: #6aa84f; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The last digit specifies </span><span style="background-color: transparent; color: #6aa84f; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><i>allowed services</i></span><span style="background-color: transparent; color: #6aa84f; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and </span><span style="background-color: transparent; color: #6aa84f; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><i>pin requirements</i></span><span style="background-color: transparent; color: #6aa84f; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. Values 0, 1 and 6 mean that there are are no restrictions. Values 2, 5 and 7 are restricted to goods and services (i.e. no cash). 3 is ATM only. 4 is cash only /// Values 1, 2 and 4 indicate that no pin is required. Values 0, 3 and 5 indicate that a pin is required. 6 and 7 say the pin is required when a pin input device is present.</span></span></div>
</li>
</ol>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
</div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span><br />
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"></span></div>
</div>
Anonymoushttp://www.blogger.com/profile/04828899423036844981noreply@blogger.com150tag:blogger.com,1999:blog-3763091284544570921.post-30422301245882700372013-12-23T15:58:00.000-08:002015-02-16T07:42:04.918-08:00Host Card Emulation Series:User Experience<b><span style="font-size: large;">Getting a Feel for the User Experience: Example of the Initial Authorization Process </span></b><br />
<b><span style="font-size: large;"><br /></span></b>
Available with the mobile SDK download from SimplyTapp. <a href="http://wiki.simplytapp.com/index.php?title=Mobile_SDK">http://wiki.simplytapp.com/index.php?title=Mobile_SDK</a><br />
<br />
This post is meant to show and explain what a user's initial authorization experience might look like. Keep in mind that this is a user experience example only and the SimplyTapp Mobile SDK has already been integrated with the user's third party app.<br />
<br />
The following post will take you through the initial authorization process and explain what is happening along the way. At the end you will have a independent third party app that will be loaded with one authorized payment card and will be ready for "tap and pay" use at contact-less terminals, like McDonald's.<br />
<br />
<b>Lets begin</b><br />
<b><br /></b>
<i>User launches your app (clicking on the app icon from the phone screen)</i><br />
<br />
The picture below illustrates what the user experience would look like from within the app. The process is based on existing Open Authentication standards. The application must first ask the user if they would like to approve the application for making payments with a payment card at a P.O.S. terminal.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg95aLWURHi7hQ1V09O6888rlVuUai7fSSInk9mtRE-dS-q7OCdbj77afLRjXGMK3uQPhOnon-5dwuAqQwXZL-Ij7XiTj4jH5vxNnGzyNxUsJeSVLqkN1Rg-umVwCAm7UBNYsuuHWGAa-Iv/s1600/NS31.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg95aLWURHi7hQ1V09O6888rlVuUai7fSSInk9mtRE-dS-q7OCdbj77afLRjXGMK3uQPhOnon-5dwuAqQwXZL-Ij7XiTj4jH5vxNnGzyNxUsJeSVLqkN1Rg-umVwCAm7UBNYsuuHWGAa-Iv/s1600/NS31.JPG" height="478" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<i>* Any SimplyTapp branding is purely for demo purposes. Branding would be replaced by issuing entity.</i><br />
<br />
In the back end this is the process that goes on; The box on the right side is typically a browser that verifies to the user that the application is authentic and that the application would like to ask permission to present payment cards as a form of payment at a P.O.S. Upon user approval, the application will ultimately end up with an access token and secret that can be used only to allow transactions against a remote card, but not manage the card itself.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIiMDhgnsmx7hjQ6TAaIL4UerjH8auFI4PlXV0hiiYNCHY5PWvIAxJGk2x7Xv0NutPu-l9AyOf_8990pB1cq0yueqtY6iNOBWfYpPxdw2WAFrnsIAjpTkVBofiblJl6bj9lqtB0hMb7wg/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIiMDhgnsmx7hjQ6TAaIL4UerjH8auFI4PlXV0hiiYNCHY5PWvIAxJGk2x7Xv0NutPu-l9AyOf_8990pB1cq0yueqtY6iNOBWfYpPxdw2WAFrnsIAjpTkVBofiblJl6bj9lqtB0hMb7wg/s400/1.png" height="281" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<i>User Sets Pin</i><br />
<br />
After you have successfully logged in and authorized the application you will be brought from the browser back to the mobile app. You will be prompted to create a new 4 digit pin. This pin is for our newly added payment functionality and can be used instead of storing any Open Authentication secrets on the handset itself. The pin is never stored locally on the handset and is used as a quick password entry.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3q6B0tqka3fFrjVEbozvEyngHh6Cq40U3c4Ur4js7561FoRBtd86NHIUF66Vi_-XZOxnpVtZJeSjWfNNhVxfJlJNrm3Ptqk4iUG-TkZmc-239Q3Qe4UaD2vlYsRa3i2MAtw0e3JfwdHrP/s1600/NS2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3q6B0tqka3fFrjVEbozvEyngHh6Cq40U3c4Ur4js7561FoRBtd86NHIUF66Vi_-XZOxnpVtZJeSjWfNNhVxfJlJNrm3Ptqk4iUG-TkZmc-239Q3Qe4UaD2vlYsRa3i2MAtw0e3JfwdHrP/s640/NS2.JPG" height="480" width="640" /> </a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In the background the open authentication process is used to synchronize the user's new pin with the token secret:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK80h4vJO1VizANSgRwQUw4IUubTiTlKbEe65aNT1b3Jq6KZr2QO6W8wvZ3PzICRNYRPdsymu1gRN7fenQq7q2h5fQNqIXm8inD9288K1_a-aMZS4Nn8djV5uctc09vM1QYl5MIsWpZwk/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK80h4vJO1VizANSgRwQUw4IUubTiTlKbEe65aNT1b3Jq6KZr2QO6W8wvZ3PzICRNYRPdsymu1gRN7fenQq7q2h5fQNqIXm8inD9288K1_a-aMZS4Nn8djV5uctc09vM1QYl5MIsWpZwk/s400/2.png" height="247" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="" style="clear: both; text-align: left;">
<b>At this point the mobile application is approved</b> by the user to make point of sale payments with any cards that it may contain. The app itself does not contain any cards yet as the customer has not applied or registered for any digital cards. In a similar process, the user is made aware that the app currently has cards available, but the user must apply for them. </div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
<i>User gets their first Card</i><br />
<br />
The user has the ability to apply for cards from issuing entities. Simply Bank is a demo page set up to illustrate and provide a walk through for issuer card holder relationships. Here you can load specific card from SimplyBank and then navigate back to home screen of app. The process is similar to the approval process of the app to present cards for payment. The main difference being the user must approve the issuing bank to place a card in the mobile application. The user will be pushed from the mobile application to the issuing bank registration web page:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjokrZa1AWu-bf3_H08GtlH3UWWRtXer56vMa4rMIHbrfXWIv7sFTAlTFNXHUe0PmzwhzO0Pu0rCqktsU4fWbtBmHm9_oGHObcacZh7f6SXBKcwEB1XqlVq16FU49CFhAefpnmCDhmflHOi/s1600/NS32.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjokrZa1AWu-bf3_H08GtlH3UWWRtXer56vMa4rMIHbrfXWIv7sFTAlTFNXHUe0PmzwhzO0Pu0rCqktsU4fWbtBmHm9_oGHObcacZh7f6SXBKcwEB1XqlVq16FU49CFhAefpnmCDhmflHOi/s1600/NS32.JPG" height="478" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In the background, the card acquisition process is represented like this. Ultimately, the personalized card is represented in the same format as an EMV chip card, however the data is stored remotely inside a secure vault instead of in a localized SIM chip:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYfka18vhv_6VhgF2VGUZDmvTjWgAMO2vB5_BKsCL7SEVKIhc-EEa6Nyl0EA24ncobj8ZcXm_zvmVeJu282ua7qCAy_gNOzN4aTcAqy6lIDv3SiiPj6rOODcB5s_PsNXauGt9Lq1qOrw/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheYfka18vhv_6VhgF2VGUZDmvTjWgAMO2vB5_BKsCL7SEVKIhc-EEa6Nyl0EA24ncobj8ZcXm_zvmVeJu282ua7qCAy_gNOzN4aTcAqy6lIDv3SiiPj6rOODcB5s_PsNXauGt9Lq1qOrw/s640/3.png" height="424" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i>User pushed back to their App and ready to pay</i></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Once a payment card is acquired, you will view and navigate app as normal. In this example we can check balances and manage our money exactly the same as before with app. The payment feature can happen in the background by simply tapping the phone to a payment terminal at any given time.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-mpRSwvn5-9GHZMLUE5bBXC-aVG7oD4_QwPlJtWoVJfhCUaWv4mj0vgSaKA6j_4n6QSPyaZanM3YdlQnn-dJhIztlun9ey7UFuAMcGAWvgTuDewIYzz4zfZsnNifygF84Qq1-odWIw2p/s1600/NS5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1-mpRSwvn5-9GHZMLUE5bBXC-aVG7oD4_QwPlJtWoVJfhCUaWv4mj0vgSaKA6j_4n6QSPyaZanM3YdlQnn-dJhIztlun9ey7UFuAMcGAWvgTuDewIYzz4zfZsnNifygF84Qq1-odWIw2p/s640/NS5.JPG" height="475" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In the background, the payment process is triggered by an interrupt from the terminal and can happen at any time. To be prepared, the mobile application has pre-fetched payment terminal data to use when making a payment. This fetching process can happen at any time prior to the first tap and may consist of one or more tokens to be used for payment depending on configurations by the issuer: </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZtk9D-t7-pJOXKgnOgMjoh1CqG17ZGRMyQ6kJ9eAfyfcrh4thnOVgKrgRLh0UY857_r06GGlwXrYiIirWH7cjc6YvMS4WxY5TZLUEBxBgKVIAQRARJwbUTIcd8F5v2cuQFWVzM7w0zS4/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZtk9D-t7-pJOXKgnOgMjoh1CqG17ZGRMyQ6kJ9eAfyfcrh4thnOVgKrgRLh0UY857_r06GGlwXrYiIirWH7cjc6YvMS4WxY5TZLUEBxBgKVIAQRARJwbUTIcd8F5v2cuQFWVzM7w0zS4/s400/4.png" height="291" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<i>Extra Info</i></div>
<div class="separator" style="clear: both; text-align: left;">
<i><br /></i></div>
<div class="separator" style="clear: both; text-align: left;">
Below are the logs from payment process happening on the back end.. These logs are part of the U.I. from the SingleCard app.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVMvGjZ_1Ry1Y25wkYS60lrI7ei2XmAnYepNKPL-H4ZmkVuT2_xxGmUQQJF_oGGzWErtfdD7ksL37Lmci58gXAD1S4Ls6s3klvqX3uM3nJoNsM9zDi0-EZ3dtRmm3iCSDJV1Hty2W8Tlgv/s1600/logs.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVMvGjZ_1Ry1Y25wkYS60lrI7ei2XmAnYepNKPL-H4ZmkVuT2_xxGmUQQJF_oGGzWErtfdD7ksL37Lmci58gXAD1S4Ls6s3klvqX3uM3nJoNsM9zDi0-EZ3dtRmm3iCSDJV1Hty2W8Tlgv/s1600/logs.JPG" height="472" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This example app is now fully authorized and ready for secure contact-less NFC payments.</div>
<div class="separator" style="clear: both; text-align: left;">
SimplyTapp's developers wiki is available at <a href="http://wiki.simplytapp.com/index.php?title=Main_Page">http://wiki.simplytapp.com/index.php?title=Main_Page</a></div>
<h5 style="background-color: #f9f9f9; box-sizing: border-box; color: #666666; font-family: 'Open Sans', Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; font-weight: 500; letter-spacing: -1px; line-height: 1.4; margin-bottom: 10px; margin-top: 10px; text-align: center;">
</h5>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Tom Fhttp://www.blogger.com/profile/11863511269790177365noreply@blogger.com47tag:blogger.com,1999:blog-3763091284544570921.post-15928141221206227242013-12-20T10:43:00.001-08:002015-02-16T07:42:17.486-08:00Host Card Emulation Series: Cloud Secure Element Applet TestingThe goal of this post it to get familiar with the SimplyTapp toolset that allows you to build, deploy and test a javacard applet in a remote Secure Element architecture.<br />
<div>
<br /></div>
<div>
The tools used in this post closely mirror tools created by SIM card makers such as G&D and Gemalto. So we hope you won't find them too different or cumbersome to work with. If so, I hope this post will help the learning curve and you will be on your way with payment card applet development.</div>
<div>
</div>
<div>
What this post will cover:</div>
<div>
<ul>
<li>Compiling and testing javacard source</li>
<li>Deploying javacard applet to remote Secure Element</li>
<li>Personalization and general usage of applet running remotely</li>
<li>Using gpjNG shell tool for interfacing applet on remote Secure Element</li>
</ul>
<div>
What this post will <b><i>NOT</i></b> cover:</div>
</div>
<div>
<ul>
<li>Using the javacard applet through a mobile application</li>
<li>Creating and using a card agent with the applet on a mobile application</li>
<li>Using HCE to deliver the javacard applet data to a terminal</li>
</ul>
<div>
<br /></div>
</div>
<div>
<br /></div>
<div>
So, let's download and install the Issuer SDK. </div>
<div>
<a href="http://wiki.simplytapp.com/index.php?title=Issuer_SDK">http://wiki.simplytapp.com/index.php?title=Issuer_SDK</a></div>
<div>
<br /></div>
<div>
For this post, I used Eclipse for the IDE. So to setup my IDE, the first thing I did was run:</div>
<div>
<br /></div>
<div>
<span style="font-family: inherit;"> <span style="background-color: white; color: #262626; line-height: 16px;">./gradlew cleanEclipse eclipse</span></span></div>
<div>
<br /></div>
<div>
from the IssuerSdkBundle directory.</div>
<div>
<br /></div>
<div>
Then run Eclipse. </div>
<div>
File->Import->General->Existing Project Into Workspace</div>
<div>
select the directory "CardApplet-PayPass" from within the "IssuerSdkBundle" directory.</div>
<div>
<br /></div>
<div>
after project import:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM-1A4VqnXAHmdojLuO1n2CTdl0OPlxqHU-sF3BxtDv0ECv3tlEzwjjGkhemaZxyD-XTNZD9iuiNjlZC_47VDw6C4vKZFHKugQoNuRj4mplyqI_tG_jCZp5o3PXsxquhEz6njXWhUL8ZQ/s1600/Screen+Shot+2013-12-11+at+2.59.46+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiM-1A4VqnXAHmdojLuO1n2CTdl0OPlxqHU-sF3BxtDv0ECv3tlEzwjjGkhemaZxyD-XTNZD9iuiNjlZC_47VDw6C4vKZFHKugQoNuRj4mplyqI_tG_jCZp5o3PXsxquhEz6njXWhUL8ZQ/s640/Screen+Shot+2013-12-11+at+2.59.46+PM.png" height="508" width="640" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
This project contains the PayPass javacard applet that will run on a Secure Element. Feel free to modify this code to see changes during testing.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Click:</div>
<div class="separator" style="clear: both;">
Project->Build Project</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Then Click:</div>
<div class="separator" style="clear: both;">
Run->Run</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
answer the next dialog "Java Application"</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
answer the next dialog "CardWrapper - com.simplytapp.cardwrapper" for the main class selection</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
if all went correctly the console window at the bottom of the IDE should contain this:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHHxSX4Jb-OJEfo2-FCm9b-0_5PyAfG3CfSoVOhi64Ks3DKcVqKtUsDCxmK8RlNGXoca9zkbP8dQwkYBH9edekjnKaLgw-yVwrJnUnO4pkCuZwklGKb9HpEoPVO33huR72g0XczUasxjo/s1600/Screen+Shot+2013-12-11+at+5.58.24+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHHxSX4Jb-OJEfo2-FCm9b-0_5PyAfG3CfSoVOhi64Ks3DKcVqKtUsDCxmK8RlNGXoca9zkbP8dQwkYBH9edekjnKaLgw-yVwrJnUnO4pkCuZwklGKb9HpEoPVO33huR72g0XczUasxjo/s640/Screen+Shot+2013-12-11+at+5.58.24+PM.png" height="186" width="640" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<b>Installing Applets:</b></div>
<div class="separator" style="clear: both;">
<br /></div>
<div>
now in the console window I can send some gpjNG commands to interact with the applet:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghbs89thM9urXXpEmiNRcJbckLG1Z9I_mpBHMSF8q1FkszE863-IZZmIF9gm306JsdeJ4EPu_9682ZDE-0T83Mzkp7-wGIo3xvTJj0HJs8DjfUUCBnv6vpOEOwzCOuWJ5QQrm3K_SCR2s/s1600/Screen+Shot+2013-12-11+at+6.09.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghbs89thM9urXXpEmiNRcJbckLG1Z9I_mpBHMSF8q1FkszE863-IZZmIF9gm306JsdeJ4EPu_9682ZDE-0T83Mzkp7-wGIo3xvTJj0HJs8DjfUUCBnv6vpOEOwzCOuWJ5QQrm3K_SCR2s/s1600/Screen+Shot+2013-12-11+at+6.09.20+PM.png" /></a></div>
<div>
<br /></div>
<div>
let's go through these commands to give a sense of what when on here. FYI, the wiki has begun a short tutorial on <a href="http://wiki.simplytapp.com/index.php?title=GpjNG_tutorial">gpjNG</a>.</div>
<div>
<br /></div>
<div>
reset the virtual card:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/atr</span></div>
<div>
<br /></div>
<div>
The simplytapp virtual cards all come with a single root security domain managed under global platform 2.x. so the next step is to select into that security domain. This command automatically resets the card and selects the root security domain for us:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/card</span></div>
<div>
<br /></div>
<div>
Next, we want to authenticate to the security domain. The simplytapp virtual card does not need the concept of "installing for load" as defined in global platform because the load file is already present in the virtual card through the .jar file in the simulator and then later in the same .jar file when it is uploaded to the cloud. The authenticate command uses the default security domain commands of the virtual card to authenticate to it.</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>auth</span></div>
<div>
<br /></div>
<div>
After successful authentication to the security domain we are able to run GP "install for install" commands in order to install instantiation(s) of the applet into the virtual card. Our test applet .jar in this example has two classes that extend Applet class: Ppse2Pay and PayPass. Each of these applet's can be instantiated into the virtual through the GP "install for install" command.</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>install -i A0000000041010 -q C9#(01541312ffffffa86a3d06cae7046a106358d5b8239cbe89aa7f00) |com.st |PayPass</span></div>
<div>
<br /></div>
<div>
it basically says: install a new instance aid (A0000000041010) on the virtual card with these parameters at install time (-q C9#()) from package (com.st) class (PayPass)</div>
<div>
<br /></div>
<div>
and then we install the second applet class instance:</div>
<div>
<div class="p1">
<span style="font-family: Courier New, Courier, monospace;">>install -i |2PAY.SYS.DDF01 -q C9#(A0000000041010) |com.st |Ppse2Pay</span></div>
</div>
<div>
<br /></div>
<div>
Now we can test our newly installed applets by selecting each of their AIDs:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/select |2PAY.SYS.DDF01</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/select A0000000041010</span></div>
<div>
<br /></div>
<div>
if each of these commands responds with the last two byes (status word) of 90 00, then all went well for installing the applet. </div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Personalize the applets:</b></div>
<div>
<br /></div>
<div>
Before we can try executing a transaction against the newly installed applet pair, this PayPass applet requires a personalization step to advance the applet state to personalized and the same time the personalization script injects all the card holder specific data into the applet. here is a routine that can be used to personalize a PayPass applet:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgAJLWCNJHG5pN9soIdKnHymhFLwoNahsTPbqWNJVm7iu2lahvigBo8TTRZaLXDgEspjlMM7_2IAIsmJ68AuqMYyzzwWHN3MdCfaeMntFtRZmRhnecuXIQrbSGNrkpfaCuBas0UjZ-3jU/s1600/Screen+Shot+2013-12-20+at+9.12.31+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgAJLWCNJHG5pN9soIdKnHymhFLwoNahsTPbqWNJVm7iu2lahvigBo8TTRZaLXDgEspjlMM7_2IAIsmJ68AuqMYyzzwWHN3MdCfaeMntFtRZmRhnecuXIQrbSGNrkpfaCuBas0UjZ-3jU/s640/Screen+Shot+2013-12-20+at+9.12.31+AM.png" height="281" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Again we reset the card first:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/atr</span></div>
<div>
<br /></div>
<div>
There is not need to authenticate to the security domain this time because the paypass spec does not define that is a requirement and the applet itself maintains the personalization channel independent of the GP secure channel. So the next step is to select into the applet ait:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/select A0000000041010</span></div>
<div>
<br /></div>
<div>
And finally, as the applet instance has not been personalized yet, a single personalization command can be issued to the applet. </div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/send 84E2A000AB01017F9F6C020001563E42353431333132333435363738343830305E535550504C4945442F4E4F545E303930363130313333303030333333303030323232323230303031313131309F6401039F62060000003800009F630600000000E0E09F6502000E9F66020E709F6B135413123456784800D09061019000990000000F9F670103A0010B00004000000000778099D3A002105229A2B1820F3213CAF2243CB19C5DF7DE65E29F48C7F212</span></div>
<div>
<br /></div>
<div>
The paypass specification defines the data in this command, but we can parse it out to have a better understanding of what is being sent. It is typical TLV format after the APDU header:</div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">84 E2 A0 00 AB </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">0101 7F - DGI </span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F6C 02</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 0001</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 56 3E - Track 1 ascii</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">42353431333132333435363738343830305E535550504C4945442F4E4F545E30393036313031333330303033333330303032323232323030303131313130</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F64 01</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 03</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F62 06 - Bitmap</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 00000038</span><span style="font-family: 'Courier New', Courier, monospace;">0000</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F63 06 - Bitmap</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 00000000E0E0</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F65 02 - Bitmap</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 000E</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F66 02 - Bitmap</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 0E70</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F6B 13 - Track 2 n format</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 5413123456784800D09061019000990000000F</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 9F67 01</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 03</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> A001 0B</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 00004000000000778099D3</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> A002 10</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"> 5229A2B1820F3213CAF2243CB19C5DF7</span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;">DE65E29F48C7F212 - MAC for this APDU-C</span></div>
<div>
<br /></div>
<div>
After the personalization command has been run, let's test one more reset:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/atr</span></div>
<div>
<br /></div>
<div>
and then one more applet select:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/select A0000000041010</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Trying a transaction:</b></div>
<div>
<br /></div>
<div>
at this point, we can test a full transaction against the personalized card applet. in general the reader will execute these commands in this order for PayPass:</div>
<div>
1) Select PPSE: <span style="font-family: Courier New, Courier, monospace;">/select |2PAY.SYS.DDF01</span></div>
<div>
2) Select Applet AID: <span style="font-family: Courier New, Courier, monospace;">/select A0000000041010</span></div>
<div>
3) Get Processing Options: <span style="font-family: Courier New, Courier, monospace;">/send 80A8000002830000</span></div>
<div>
4) Read Record: <span style="font-family: Courier New, Courier, monospace;">/send 00B2010C00</span></div>
<div>
5) Compute Cryptographic Checksum: <span style="font-family: Courier New, Courier, monospace;">/send 802A8E80040000089900</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3gsvZ4uJCz0gYsLJVa8fx5Ewl-pD2dQVIozzbErnyskS94YpjENYmnjRafp7ZYOafpsX3OzOqy1W7ZYhDq751vxnxYhEEsmohJGloRuVDrpplfFXrqWrDDOJnz29cyh5uK0VOjfQQmEo/s1600/Screen+Shot+2013-12-20+at+10.16.01+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3gsvZ4uJCz0gYsLJVa8fx5Ewl-pD2dQVIozzbErnyskS94YpjENYmnjRafp7ZYOafpsX3OzOqy1W7ZYhDq751vxnxYhEEsmohJGloRuVDrpplfFXrqWrDDOJnz29cyh5uK0VOjfQQmEo/s640/Screen+Shot+2013-12-20+at+10.16.01+AM.png" height="280" width="640" /></a></div>
<div>
<br /></div>
<div>
The trace above shows a successful PayPass interrogation from a terminal reader. The data in the response APDU's is used to collate the resultant Track 1 and Track 2 data that is processed over the interchange....ie.:</div>
<div>
<br /></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span style="background-color: white; font-size: 12px;">%B4046460664629718^000NETSPEND^161012100000181000000?</span><span class="track2" style="background-color: white; font-size: 12px;">;4046460664629718=16101210000018100000?</span></span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Packaging the applet:</b></div>
<div>
<b><br /></b></div>
<div>
In eclipse, select the packages you would like to export as a jar file. In the example, I expanded the 'src' directory to show the package 'com.st'. I selected the com.st package and then clicked 'File->export':</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tQdeO9k3TZN-95zo9cVCFSBU551r1_O1DsH2H0utDIsUPidrDX82Z0-ecoX6COU4wK20riwgzkGkeYg_wsCjTrR7k7Slp5eIixRRrMn8BGH7v1jdaHhtX0-EIUh8mFHQZKasVu1Q-0A/s1600/Screen+Shot+2013-12-20+at+10.37.27+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6tQdeO9k3TZN-95zo9cVCFSBU551r1_O1DsH2H0utDIsUPidrDX82Z0-ecoX6COU4wK20riwgzkGkeYg_wsCjTrR7k7Slp5eIixRRrMn8BGH7v1jdaHhtX0-EIUh8mFHQZKasVu1Q-0A/s640/Screen+Shot+2013-12-20+at+10.37.27+AM.png" height="497" width="640" /></a></div>
<div>
<br /></div>
<div>
Expand the Java folder in the dialog box and select "JAR file", then click "Next >"</div>
<div>
<br /></div>
<div>
Select a name and destination to put the jar and click "Finish". In this example i selected PayPass.jar as the name and opted to export it to my desktop.</div>
<div>
<br /></div>
<div>
Because this demo does not discuss building and testing a card agent and the card agent .jar file is also required to upload with the card applet .jar file, let's just use the available card agent from GIThub for the paypass applet. it can be found here: <a href="https://github.com/SimplyTapp/CardExamples/raw/master/CardAgent-PayPass/build/libs/CardAgent-PayPass.jar">CardAgent.jar</a> . please download this to your desktop.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Upload applet to the cloud</b></div>
<div>
<b><br /></b></div>
<div>
Now that we have both the PayPass.jar (card applet) and CardAgent.jar (card agent). We can load the card applet into the cloud.</div>
<div>
<br /></div>
<div>
Open a browser window and browse to create an issuer account at this link:</div>
<div>
<a href="https://www.simplytapp.com/accounts/SignUpIssuer" target="_blank">https://www.simplytapp.com/accounts/SignUpIssuer</a></div>
<div>
If you do not have a simplytapp account, you will have to click the "sign up" link on this page first.</div>
<div>
<br /></div>
<div>
For this example select a name for your new Issuing Entity and a logo I used the name "Test Bank". Feel free to use the generic cloud logo here: <a href="http://wiki.simplytapp.com/images/5/58/Generic.png">cloud.png</a>, just download it to your desktop as well.</div>
<div>
<br /></div>
<div>
After clicking "Create Entity", you will be directed to the Issuing Entity control panel:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPt6ZADMuQtUcyBNYjbFnzZEwSR3IQPwODAjuo1P9_iiO7f6O2nUrFyMIjNAWfR2TVkIINgMuehhnumuDsK48hvI_7XNGwcwbbJDn2k3vaHfV7PKI5ls5dBZkIvukUsSwk1BXXRuqp750/s1600/Screen+Shot+2013-12-20+at+11.01.35+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPt6ZADMuQtUcyBNYjbFnzZEwSR3IQPwODAjuo1P9_iiO7f6O2nUrFyMIjNAWfR2TVkIINgMuehhnumuDsK48hvI_7XNGwcwbbJDn2k3vaHfV7PKI5ls5dBZkIvukUsSwk1BXXRuqp750/s640/Screen+Shot+2013-12-20+at+11.01.35+AM.png" height="322" width="640" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Now, expand the issuing entity control bar and then click the "New Brand" button in the expanded bar:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5uHEC6lbPPiEszuL2PCTqXNNOtJ1WEc2U9HqDfDlQg_VWp_RULQhfIT-Of8uPMvcA87pJZR7zssHL70iuaKKBRk1qWHJI4_MBgeUF0H8NNLxELxKoYL-50iHln6ocUOvq21FB3TlK6Vk/s1600/Screen+Shot+2013-12-20+at+11.12.28+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5uHEC6lbPPiEszuL2PCTqXNNOtJ1WEc2U9HqDfDlQg_VWp_RULQhfIT-Of8uPMvcA87pJZR7zssHL70iuaKKBRk1qWHJI4_MBgeUF0H8NNLxELxKoYL-50iHln6ocUOvq21FB3TlK6Vk/s640/Screen+Shot+2013-12-20+at+11.12.28+AM.png" height="640" width="598" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both;">
</div>
<ul>
<li>Enter the name of the card brand you would like to create (ST PayPass)</li>
<li>Upload a card brand image icon...pick what you want, or just use the cloud icon again (cloud.png)</li>
<li>Select an acquire card URL based on where the registration wizard would begin for this card brand. Just make something up as we will not use this for anything in this demo.</li>
<li>Select a version number of your choice (1.0)</li>
<li>Then upload both the Applet Jar (PayPass.jar) and the Agent Jar (CardAgent-PayPass.jar) with the "Choose File" buttons. </li>
<li>Then click the "Create Brand" button.</li>
</ul>
<br />
<div>
<br /></div>
<div>
On the resulting page, expand the "ST PayPass card brand, and click "Get Test Card" button.</div>
<div>
Expanding "ST PayPass" will give you a screen that looks like this:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6AK6-IeX1nm6pI5Mgfr22WHf4rEzcJZ4GTq7JKC2J2r0TELU2d0otvbruBhvyeYuk0c9k4SQsu7FTZNQiGZ9ZAbar_NsVg5OSKjKgq5eQ7yvY75RCS5OBM3hM1LEPkoYpe6bsbQ3PKKU/s1600/Screen+Shot+2013-12-20+at+11.18.04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6AK6-IeX1nm6pI5Mgfr22WHf4rEzcJZ4GTq7JKC2J2r0TELU2d0otvbruBhvyeYuk0c9k4SQsu7FTZNQiGZ9ZAbar_NsVg5OSKjKgq5eQ7yvY75RCS5OBM3hM1LEPkoYpe6bsbQ3PKKU/s640/Screen+Shot+2013-12-20+at+11.18.04+AM.png" height="640" width="638" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
We are now interested in the Test Utility (<a href="http://wiki.simplytapp.com/index.php?title=STBridge">STBridge.jar</a>) and the utility connection data:</div>
<div>
<br /></div>
<div>
<span style="background-color: #f6fbfe; font-size: 16px; line-height: 22px;"><span style="font-family: Courier New, Courier, monospace;">java -jar STBridge.jar -ck J0VHTtI0EabBTp48HGj1HNbEywLAHlTDNuhhFbG3 -cs SNNLiCZnlumhHAm3tMbSbsKtwX4OAsecjzOjL5Rq -at I8IvjpTdjcMXPVkDZmgU6BcwcsfnXE4TFnWBQzTR -ts KnCyYA3r8cp15IxaT2i4Kqal8cwwbwen7VS15ujt</span></span></div>
<div>
<br /></div>
<div>
Download STBridge here: <a href="http://wiki.simplytapp.com/index.php?title=STBridge">http://wiki.simplytapp.com/index.php?title=STBridge</a></div>
<div>
<br /></div>
<div>
after running the above command your shell should look something like this:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHreW7TIxh23KzakeUkMpTwloNZi_j6u_CP6K0zY_E80QO5GoTWIoQiDIyDeXb2PoTqyMvXvqhT0D1iBdykBG8mdVQbfhm1znmu_ooZuTUYV55p5HHFlXYJCEdu35N0Prik2khYE5a68/s1600/Screen+Shot+2013-12-20+at+11.37.20+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHreW7TIxh23KzakeUkMpTwloNZi_j6u_CP6K0zY_E80QO5GoTWIoQiDIyDeXb2PoTqyMvXvqhT0D1iBdykBG8mdVQbfhm1znmu_ooZuTUYV55p5HHFlXYJCEdu35N0Prik2khYE5a68/s640/Screen+Shot+2013-12-20+at+11.37.20+AM.png" height="470" width="640" /></a></div>
<div>
<br /></div>
<div>
at this point my shell is connected to the remote card and I have the ability to issue commands at well to the cloud virtual card. This time let's try to run a personalization script through the shell. Here is a link to a test script for download:</div>
<div>
<a href="https://github.com/SimplyTapp/CardExamples/raw/master/CardApplet-PayPass/test.jcsh">https://github.com/SimplyTapp/CardExamples/raw/master/CardApplet-PayPass/test.jcsh</a></div>
<div>
<br /></div>
<div>
this particular test script first personalizes the paypass card and then preforms a transaction against that same card. The script path can be set within the shell tool:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>/set-var path=../CardApplet-PayPass/</span></div>
<div>
<br /></div>
<div>
And then any script in that directory including the test.jcsh can be run by simply entering the script name as the command without the .jcsh extension:</div>
<div>
<span style="font-family: Courier New, Courier, monospace;">>test</span></div>
<div>
<br /></div>
<div>
yields:</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhASkkM2XYrkZ2iuVjim0-gSvZ0CndWvk7mfZNaeFV88Us4tD4woRjw756uhgHSE6v0D3iGK0Fc3cgpgaqxR1enYKWCc_oJ5sBQ53ddtY4U2CqjlQX5WJI6cmrB_ke-_iP6ddpRh98quNs/s1600/Screen+Shot+2013-12-20+at+12.11.30+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhASkkM2XYrkZ2iuVjim0-gSvZ0CndWvk7mfZNaeFV88Us4tD4woRjw756uhgHSE6v0D3iGK0Fc3cgpgaqxR1enYKWCc_oJ5sBQ53ddtY4U2CqjlQX5WJI6cmrB_ke-_iP6ddpRh98quNs/s1600/Screen+Shot+2013-12-20+at+12.11.30+PM.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
As you can see this script was run against a remote cloud card. The APDU trace is a standard APDU trace for a typical paypass credential and the timings for each are displayed under the execution of each command. Just FYI, our office location for this test is Austin, Texas (where the script was run), but the cloud card is actually located in Dallas, Texas. Latencies probably reflect as such for each command.</div>
<div>
<br /></div>
<div>
Stay tuned for future blogs that would demonstrate how to leverage this remote card inside an HCE android application. </div>
Anonymoushttp://www.blogger.com/profile/14971823218946967813noreply@blogger.com19