Jeff Townes' Blog
My Links
Blog Stats
  • Posts - 9
  • Stories - 0
  • Comments - 8
  • Trackbacks - 3
Archives

I am currently working with a team to build a large, distributed point-of-sale application for a national flight services company using WPF and WCF.  We’ve been making great progress on the software dev side, but lately we’ve encountered a few hardware troubles and tricks that I thought I should pass along…

Background

Our first hardware challenge was supporting MagTek USB credit card swipe blocks in a terminal services environment.  We were (and are) going to support terminal services operations as an alternative to local application installation, but the swipe block wasn’t cooperating. 

Swipes emulate keyboard input, so in theory the swipes should look identical regardless of whether the software is local or on a terminal server.  But, as we like to say,

                object reality != theory.InUse(environment);

Issue

We swiped the same credit card on a local machine and terminal server, but the results were different.

Local Machine Test

This was the correct swipe, and it was what all of the swipes should look like.  Incidentally, I’ve altered the swipes AND used a test-only credit card, so no devious purchases for you, folks. 

%B4716150001669044^BAKER/GREGORY ^0108XXXX000000767000000?;471615000166XXXX=...

Terminal Server Test

The terminal server was not just wrong – it was also inconsistent.  Two swipes resulted in two different character strings.

Swipe 1

5b$7161500016690446bakEr/grEgory 60109XXXX000000767000000/;471615000166XXXX=...

Swipe 2

%b47161500016690446baker/gregORy 60109XXXX000000767000000/;471615000166XXXX=...

It’s easy to see the differences between these swipes and the first (local machine) swipe.  Most notably, Swipe #1 has the wrong character at the beginning of the string.  Then, you’ll notice a missing ^ character and some inconsistencies in the name capitalization of the cardholder name on both swipes.

Resolution

The resolution is fairly simply yet obscure. 

When you connect to the terminal server (or remote desktop session), click Options, navigate to the Local Resources tab, and set the “Apply Windows key combinations” setting to “On the local computer” instead of the default “In full screen mode only”.  Thanks to Nathan Caneday for finding this one!

Final Terminal Server Test

After toggling this setting, here was the resultant swipe, a perfect match…

%B4716150001669044^BAKER/GREGORY ^0109XXXX000000767000000?;471615000166XXXX=...

Needle in the haystack.

posted on Monday, May 14, 2007 2:06 PM
Feedback
  • # re: Fix for MagTek USB credit card swipe block error in terminal services environment
    Mackey
    Posted @ 1/17/2008 4:51 PM
    My company was experiencing this exact issue when trying to set a new credit swipe for a client that remotes into the server for their pos. The previous credit card swiper broke and the same exact settings did not work on the newer device. The inconsistency of the numbers going to the software were driving me crazy because notepad locally always gave me the same response. Your suggestion solved our problem and I can start growing some of my hair back. Thank you for posting this issue that you had resolved
  • # re: Fix for MagTek USB credit card swipe block error in terminal services environment
    Sean
    Posted @ 6/9/2008 8:16 PM
    Been looking for this solution for many months. Works like a champ with Intuit QuickBooks via TS -- never could get it working right until I stumbled upon this fix. Thanks a million!!!
Title  
Name  
Url
Comments   
Protected by Clearscreen.SharpHIPIn order to prevent spam, please enter the code to post a comment.:
Jeff Townes