I had the opportunity recently to visit one of our OLS.Switch customer’s retail locations. This particular customer doesn’t have a presence in the region that I work in, so I was very excited to Swipe my Card. Probably too excited, actually, because I think I explained every line of the receipt, including the myriad of transactions that occurred, the number of message formats, transaction types, database entities, application logic, and network connections to various internal and external endpoints to my wife, who after twenty minutes didn’t share the same level of enthusiasm that I maintained throughout the conversation.
It is always fun to know what happens “inside the box” and that which seems magical to others. When I started my career at a small Third party processor this exercise was quite common, after we did system maintenance in the middle of the early morning, we would drive to the nearest corner store or gas station to test our issuing systems and connections via performing transactions on cards that we issued for. We even got to reward ourselves with transaction amounts over $25, as we couldn’t allow Stand-In-Processing to approve these transactions, we wanted to ensure that our Issuing system authorized these transactions.
It is even more exciting to have taken part in the design, development and implementation of a given transaction. The exhilaration continues when you realize that I’m only 1 of about 5 million transactions per day that our software powers here.
Let’s do a walkthrough of the transaction that I performed:
Cashier: Hi, Welcome. Are you enrolled in our ________ rewards program ?
Me: Yes, I don’t have my card – can you lookup by phone number ?
Cashier: Sure <Enters in number that I provide>
Transaction #1 : Loyalty Card Lookup based on Phone Number also includes my point balance, level
Cashier: Can you confirm your address ?,great, that’s you. Your total is $ xx.xx , Debit or Credit ?
Me: <Swipes my Mastercard >
Transaction #2 : Transaction Market Basket Analysis, Discount calculation, interfacing to an Offering Engine, Serializing of Coupons to print on receipt for future usage and coupon validation requests.
Transaction #3 : Credit Card Authorization
Cashier: Thank you very much for shopping at _______, By using your _________ card you saved $ x.xx, Hope you have a nice day.
Me: Thank you and running outside to share the exiting world of transaction processing to my wife.
The 20 mintues that followed including me discussing the following.
- The finer points of Loyalty Card Lookups, including how to return a list of cards, and how to address multiple requests as the cashier scrolls to fetch the next batch of card numbers for folks with common names, the challenges of either cardholders or cashiers using common phone numbers.
- Card Type and BIN Based Routing to external endpoints and message translation from one interface to another
- Sending large transaction requests with detailed shopping cart detail.
- Algorithms to generate coupon numbers that are difficult to be abused by coupon generation scripts.
- Substitution logic and the template engine to display various messages and transaction variable on to cashier receipts.
- The various batch jobs and processes that are ran to import, extract various data to support the processes.
Just another day in the life of payment application software developer.