QIWI-terminals. How to take maximum of simple technology
At the beginning of 201? we, the software development team for QIWI Terminals, collected the wishes of the company's divisions - we learned which global tasks colleagues would like to solve with our help, so that life would become easier.
Most of all I was pleased with the request of the customer service, working with calls and claims from payers:
"There is a problem: the client makes payment on the terminal, but it does not reach the processing - or the terminal could hang, or the Internet working through the gsm-modem, fell off. And it turns out that the client has a check, but there is no payment in the system. It would be good in such cases to learn how to deliver payments to QIWI.
There is also a group of anxious clients who immediately after making a payment dial the call center number in order to make sure everything is fine with it. It would be nice to cut off the bones for such calls. "
So we have a complex task: to learn how to create a payment in the event of a communication failure with the terminal and to reduce the number of incoming calls from customers by creating a self-service tool to check the status of payment. The case is understandable. They began to look for a solution that was convenient for the client and without risks to safety.
The customer, by tradition, offered his option - print on the check a sequence of symbols that the payer could inform the operator, and the latter, in turn, understand whether our payment is or not, filter the fraud or conduct the operation manually.
The concept concept was clear, but unrealistic, so we went a little further: we decided to embed the payment details in the QR code, print it on the check, and for duplicity, duplicate the QIWI of the Terminal. By scanning the QR-code with the camera of its device, the client can learn the status of the operation. And in case of failure to pay in QIWI, the system automatically creates it. Thus, the client not only finds out if the money has reached, but also conducts them independently, regardless of the status of the terminal.
At first glance, the solution was obvious: take an existing request with a payment, wrap it in a QR code, write a web page with transaction information and a microservice proxy for requests between the terminal, processing, and the web. It was assumed that the project will work on existing methods of terminal authentication and use existing methods of payment in processing.
The idea came at once, opening the creative potential of the team. Began to gush and throw in additional options until the logo, slogan and even advertising in the QR-code, in addition to the data on the payment:
The project for a couple of sprints, no more. It was not there.
The first frustration is
We took the existing payment and formed a QR-code on it:
As a result, even the last iPhone7 at that time could not count it. On the check, the QR-code, consisting only of payment and signature data, could hardly fit on half of A4 sheet. The request line for the payment was too long. It was the first sadness.
It was necessary to solve two main tasks:
reduce the number of characters in the payment request, i.e. to come up with a solution in which we can get away from the existing xml-request to a more compact one;
choose the encryption algorithm and key length, which will provide high cryptographic strength and reliability with a smaller signature size.
The criterion for estimating the optimal number of symbols for a QR-code was one - it should be read by cameras of most mobile phones.
For a couple of working meetings the solution still found:
Instead of an xml-request, they decided to use the get-query with payment parameters and delimiters between them;
built a signature on elliptical curves to shorten the length.
The advantage of using the get-request was that the mobile phone cameras or special programs, seeing the link in the QR-code, immediately open it in the browser, which made it possible to make a payment in one action. To reduce the size of the get-query, we had to replace the name of the parameters with delimiters.
As a result of the complex of actions, the request for payment was reduced from about 1100 to 200 symbols. Plus, I had to apply the lowest level of error correction QR-code - L.
For implementation it was required to develop components in the system:
create a new api for making payments via QR-code;
implement a new mechanism for working with cryptographic keys between the terminal and processing;
implement a microservice, which will hang the functionality of proxy requests, verify the integrity of the data received, as well as the function to block suspicious requests and collect transaction statistics;
develop a web page for displaying information on payment;
Develop a system of limits and checks for a new payment channel.
To the existing scheme of work:
We planned to add an alternative:
During the implementation of the project, there appeared, it would seem, small, but requiring solutions, tasks that in fact took a lot of time, postponing the launch date.
UX-study, or work came from where they did not expect
I wanted to do everything as people do, so UX-specialists were involved in the project to solve the problems:
in which part of the QIWI screen of the Terminal is to place QR code and how to explain its utility to the client?
where to place the QR-code on the check and how to push similar explanations?
how to make a web page layout with the status of payment, so that it is clear on the company's guides?
Obviously, for the advanced part of clients, there is no need for additional explanations about the QR-code, it is enough to designate the result. But we wanted to cover that part of the clients for which the QR-code is a magic abbreviation or just a "black box". They, in fact, cut off the call center line.
To make it beautiful and understandable, interviews were conducted inside the focus group of interest to us with unexpected results
Brevity - relatives of the economy
It turned out to be terrible - the audience we needed did not always understand the meaning of the word "Scan" and its derivatives. Therefore, from the original formulation "Scan and find out the status" had to be abandoned. The solution was the technical possibility to send a photo of the QR code via e-mail. And this also had to be said briefly and clearly, because the check tape is the consumables of the owners of terminals and our concern for the business of these people is its savings. As a result, the check now looks like this:
As for displaying the QR-code on the terminal screen, it was placed on the final page of the payment - the latest in the payment scenario. It is shown at the time of printing a check and is essentially an electronic duplicate of a printed QR code.
E-mail is ubiquitous
In connection with the emergence of a new channel for processing QR-code in the form of e-mail, it became necessary to develop a mechanics with the function of recognizing QR-codes embedded in the letter and forming a response with the status of payment.
The QR-code recognition function was rendered into a micro service. At the initial implementation, the percentage of recognition was about 65% on the sample of photos. We tried to play with the discoloration and increasing the contrast - it gave about + 20% of successful recognition.
Cherry on the cake in the task with the recognition of the photo QR code was the introduction of "natural intelligence" for heavy, poorly recognizable cases - the creation of applications and their processing began to be carried out in manual mode:
Technical details are not
The main developments for this project, of course, concerned the very micro service and terminal software.
QIWI is actively moving to a micro-service architecture, so as not to touch the massive engine. Microservice allows you to make changes to projects faster, conduct tests and release releases. So for a couple of months we wrote our own. On it, we hung all the major new developments that we could only endure:
Proxying requests by parsing and analyzing incoming get-requests, converting them to xml for processing,
functionality to limit incoming requests from terminals,
QR-code recognition functionality,
collection of statistics for further analysis.
In addition to implementing a new mechanism for working with cryptographic keys, terminal improvements touched upon the use of a new technology for printing checks.
The functionality for their formation was derived from the main program core in the plugin. Now we were able to implement the changes in the check quickly, without touching the operability of the terminal as a whole. The task of printing QR code, which, at first glance, seems to be quite simple and boils down to printing a picture on a check, in fact it is not.
That's because on the network of our agents-owners of terminals there are about 20 models of various printers, and we print about 40 kinds of checks. When they started to implement, then a lot of nuances crawled out: then the lines and location of objects in the check pattern started to swim when adding a picture, then some commands were sensitive to the location, and then the transfer of the line turned into tabulation.
We started testing, understood the need for a compromise - we had to exclude some models of printers, because when testing all configurations an immense number of cases came out.
For the tests, they decided to choose 6 main models, which covered 91% of the agency network. And, of course, at the moment of conducting selective tests in a combat environment, it turned out that it was precisely on the ancient printers, which covered about 5% of the agent network, that there were problems with printing checks. The models were so old that even in the market they were no longer to be bought. I had to look for partners. Now the project covers 96% of the network. Already a little closer to the ideal :)
Not a single check
In parallel with the placement of information about the QR-code on the check and the final page of the payment, another task was achieved - bringing this page itself to a universal view for all terminal projects:
"In the part of the completion pages of payment in QIWI Terminals everything was quite archaic: advertising, banners and sending an electronic receipt. Out of five pages, the guys made one, universal for all payments. " - Leading programmer of the team.
Now this versatile page is used in different interpretations, without getting out of the script building rules, closing the karmic debt of the development team.
Thus, the task of a decade ago was solved, to which each time hands did not reach. There were several such long-playing problems.
"Where is the money, Zin?" Or that in the dry residue
The project, designed for a couple of sprints, took six months, affecting the resources of 10 employees and the edges of the outsourcing agency.
As a result, having implemented the project on 85% of the terminal network, we surprised ourselves and the customer - customer service. On the third day of the QR code, colleagues thought that a system error had crept into them - statistics on the number of calls to the call center with the question "Where is my payment?" Has already fallen by 20%. Customers began to scan the QR code and send photo checks by e-mail, recognizing the status and making payment on their own. And so it's already the second month. I must say that customers began to understand what a "black square" is and how useful it is.
The project with the QR code was liked by everyone who was told about it - it was a synergy of interests: on the one hand, they simplified the life of the client, on the other hand they solved a non-standard technical problem. Check the status of the payment and conduct it in processing "on paper" by simply scanning the QR code for QIWI - something new. Take well-known and simple technologies, from which to make a useful project - it was great. In general, the project not only pumped skills and improved communication within the team itself. And this is almost the main plus sign in karma.
It may be interesting
Your post is very helpful to get some effective tips to reduce weight properly. You have shared various nice photos of the same. I would like to thank you for sharing these tips. Surely I will try this at home. Keep updating more simple tips like this. BBQ and Hog Roast buffet catering Bristol