SYSTEMS AND METHODS FOR CLOUD-BASED ASYNCHRONOUS COMMUNICATION
A method for cloud-based asynchronous communication includes receiving a transaction request message from a cloud-based application, sending the received transaction request message to a PIN pad by way of an electronic message repository, updating a current state according to the received transaction request, listening for a new incoming message event from the electronic message repository, receiving a new incoming message event from the electronic message repository, and retrieving an incoming message from the electronic message repository, determining whether the retrieved incoming message matches the current state, upon determining that the retrieved incoming message matches the current state, transmitting the retrieved incoming message to the cloud-based application, and upon determining that the retrieved incoming message does not match the current state, retaining the retrieved incoming message in the electronic message repository.
Various embodiments of the present disclosure relate generally to an electronic payment infrastructure and, more particularly, to cloud-based asynchronous communication between components of an electronic payment infrastructure.
BACKGROUNDTraditionally, merchants and other store owners have point of sale (POS) terminals and POS systems that can accept check or payment card payments from consumers for goods and services. Such POS systems may include PIN pads at which a consumer may enter payment and/or personal information in order to complete payment processing requests for purchases. Communication between a POS terminal, a PIN Pad, and other components of the merchant's payment processing system may involve transmitting messages according to different protocols and via different application programming interfaces (APIs). Such communication is traditionally conducted synchronously between a PIN pad and a POS terminal. In such a synchronous communication system, once a message has been transmitted to the PIN pad the POS terminal has to wait for the response, which reduces the efficiency of the system because resources are busy waiting for messages. Furthermore, errors are introduced when out of sequence messages arrive because the system is limited to known request/response pairs.
The present disclosure is directed to overcoming one or more of these above-referenced challenges.
SUMMARY OF THE DISCLOSUREAccording to certain aspects of the present disclosure, systems and methods are disclosed for cloud-based asynchronous communication.
In one embodiment, a computer-implemented method is disclosed for cloud-based asynchronous communication, the method comprising: receiving a transaction request message from a cloud-based application, sending the received transaction request message to a PIN pad by way of an electronic message repository, updating a current state according to the received transaction request, listening for a new incoming message event from the electronic message repository, receiving a new incoming message event from the electronic message repository, and retrieving an incoming message from the electronic message repository, determining whether the retrieved incoming message matches the current state, upon determining that the retrieved incoming message matches the current state, transmitting the retrieved incoming message to the cloud-based application, and upon determining that the retrieved incoming message does not match the current state, retaining the retrieved incoming message in the electronic message repository.
In accordance with another embodiment, a non-transitory machine-readable medium storing instructions that, when executed by the a computing system, causes the computing system to perform a method for cloud-based asynchronous communication, the method including: receiving a transaction request message from a cloud-based application, sending the received transaction request message to a PIN pad by way of an electronic message repository, updating a current state according to the received transaction request, listening for a new incoming message event from the electronic message repository, receiving a new incoming message event from the electronic message repository, and retrieving an incoming message from the electronic message repository, determining whether the retrieved incoming message matches the current state, upon determining that the retrieved incoming message matches the current state, transmitting the retrieved incoming message to the cloud-based application, and upon determining that the retrieved incoming message does not match the current state, retaining the retrieved incoming message in the electronic message repository.
In one embodiment, a computer-implemented method is disclosed for cloud-based asynchronous communication, the method comprising: receiving a mailbox subscription request from an actor for messages from a PIN pad, receiving a transaction result message from the PIN pad, storing the transaction result message in a mailbox, receiving a message retrieval request from the actor for the transaction result message, transmitting the transaction result message to the actor, receiving a mailbox flush notification from the actor, and flushing the mailbox.
Additional objects and advantages of the disclosed embodiments will be set forth in part in the description that follows, and in part will be apparent from the description, or may be learned by practice of the disclosed embodiments. The objects and advantages of the disclosed embodiments will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the disclosed embodiments, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various exemplary embodiments and together with the description, serve to explain the principles of the disclosed embodiments.
Various embodiments of the present disclosure relate generally to communication between components of an electronic transaction processing system.
The terminology used below may be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the present disclosure. Indeed, certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.
A merchant payment processing system may typically include one or more point of sale (POS) terminals in communication with one or more personal identification number (PIN) pads. Once a customer's transaction entered at the POS device is ready for completion, the POS device may send messages through the merchant's transaction processing system to a PIN pad. This interaction may include presentation of payment credentials, such as a payment vehicle, and entry of customer identification, such as a PIN, biometric information, etc. The PIN pad and other components of the transaction processing system may communicate by way of communications protocols and APIs specific to each component.
Desirably, in order to allow a flexible communication between a PIN pad, a POS device and other components, such communications may be processed by an intermediary process to transmit messages among the components. For example, the merchant's payment processing system may include a central electronic message repository or “post office” that may operate on a common communications protocol and allow asynchronous communications between components. Thus, each component may avoid direct synchronous communication with other components, thus reducing waste due to idle resources and errors resulting from mismatched message/response pairs.
As shown in
Alternatively, such a request may be sent by a component that controls a flow of a transaction, such as point of sale (POS) engine 106 depicted in
Merchant 710 may provide an infrastructure for processing electronic payment requests.
As shown in
Infrastructure 100 for processing electronic payment requests may further include a PIN pad device gateway 120, which may provide commination with PIN pad terminals 128. PIN pad device gateway 120 may include a message broker that may process incoming sales transaction messages, a transaction service bus topic 122, and one or more device gateways 124. PIN pad device gateway 120 will be described in greater detail below with respect to
As shown in
Infrastructure 100 may be embodied as a semi-integrated solution and may further control the PIN pad on behalf of the POS device software. Such control may include controlling a transaction flow or sequence including, for example, prompting for payment card swipe or insert, sending a transaction request for authorization, prompting for a consumer signature, etc.
Turning to
Upon the creation of a TCP client associated with PIN pad 128, and the association of PIN pad 128 with gateway 120, mailbox factory 240 of post office 108 may create a mailbox 210. Mailbox 210 may be uniquely associated with PIN pad 128 and may serve as a repository and transmission mechanism for messages transmitted to or from PIN pad 128. Mailbox 210 may also be assigned to an actor 112 associated with PIN pad 128. Mailbox 210 may also be uniquely associated with actor 112. As discussed above, actor 112 may serve as a connection between POS engine 106 and PIN pad 128, and may transmit transaction request messages and transaction processing result messages between POS engine 106 and PIN pad 128 by way of mailbox 210.
Mailbox 210 may include a message queue 215 to store messages to be transmitted to or from PIN pad 128. When a message to be transmitted to PIN pad 128 is transmitted to mailbox 210 by actor 112, mailbox 210 may store the message in message queue 215 and may notify gateway 120 of the stored message. For example, gateway 120 may subscribe to incoming message events for messages directed to PIN pad 128. When mailbox 210 stores the message directed to PIN pad 128 in message queue 215, mailbox 210 may send a notification to gateway 210. Notification may be by way of notification flag 220 of mailbox 210. Gateway 120 may then retrieve the message to be delivered to PIN pad 128. Similarly, when a message to be transmitted from PIN pad 128 is transmitted to mailbox 210 by gateway 120, mailbox 210 may store the message in message queue 215 and may notify actor 112 of the stored message. For example, actor 112 may subscribe to outgoing message events for messages sent by PIN pad 128. When mailbox 210 stores the message sent by PIN pad 128 in message queue 215, mailbox 210 may send a notification to actor 112. Notification may be by way of notification flag 220 of mailbox 210. Actor 112 may then retrieve the message to be delivered to a cloud-based application, such as POS 102.
Actor 112 may manage the transmission of messages between cloud-based applications, such as POS 102 and PIN pad 128, to ensure that messages are delivered in sync with the processing of transaction requests. Such management may include ensuring that messages are delivered in sync with the transaction request process flow. For example, actor 112 may maintain a current state of the transaction corresponding to each step in a transaction request process flow. Each state of the transaction process may be associated with one or more message types that may be sent to or from PIN pad 128. If a message is received that does not correspond to the current state of the transaction request process flow, the message may be kept in mailbox 210 until the current state of the transaction request process flow matches the message type of the stored message. Mailbox 210 may notify actor 112 of any messages that have not been consumed periodically until the current transaction has been completed. When the current state of the transaction request process flow matches the message type of a stored message, the message may be retrieved by actor 112 and delivered to PIN pad 128. At the successful completion of a transaction, it may be determined that any messages remaining in mailbox 210 were not necessary for the transaction to complete successfully. Mailbox 210 may be flushed, so that any remaining messages in mailbox 210 are discarded. For example, actor 112 may determine that the transaction request has been completed and may send a mailbox flush message to mailbox 210, thus causing mailbox 210 to flush mailbox queue 215 of mailbox 210.
Any suitable system infrastructure may be put into place to provide a cloud based device gateway.
Aspects of the present disclosure may be embodied in a special purpose computer and/or data processor that is specifically programmed, configured, and/or constructed to perform one or more of the computer-executable instructions explained in detail herein. While aspects of the present disclosure, such as certain functions, are described as being performed exclusively on a single device, the present disclosure may also be practiced in distributed environments where functions or modules are shared among disparate processing devices, which are linked through a communications network, such as a Local Area Network (“LAN”), Wide Area Network (“WAN”), and/or the Internet. Similarly, techniques presented herein as involving multiple devices may be implemented in a single device. In a distributed computing environment, program modules may be located in both local and/or remote memory storage devices.
Aspects of the present disclosure may be stored and/or distributed on non-transitory computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other data storage media. Alternatively, computer implemented instructions, data structures, screen displays, and other data under aspects of the present disclosure may be distributed over the Internet and/or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, and/or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme).
The systems and processes described above may be performed on or between one or more computing devices.
The computing device 800 includes a processor 802 that may be any suitable type of processing unit, for example a general-purpose central processing unit (CPU), a reduced instruction set computer (RISC), a processor that has a pipeline or multiple processing capability including having multiple cores, a complex instruction set computer (CISC), a digital signal processor (DSP), application specific integrated circuits (ASIC), a programmable logic devices (PLD), and a field programmable gate array (FPGA), among others. The computing resources may also include distributed computing devices, cloud computing resources, and virtual computing resources in general.
The computing device 800 also includes one or more memories 806, for example read-only memory (ROM), random access memory (RAM), cache memory associated with the processor 802, or other memory such as dynamic RAM (DRAM), static RAM (SRAM), programmable ROM (PROM), electrically erasable PROM (EEPROM), flash memory, a removable memory card or disc, a solid-state drive, and so forth. The computing device 800 also includes storage media such as a storage device that may be configured to have multiple modules, such as magnetic disk drives, floppy drives, tape drives, hard drives, optical drives and media, magneto-optical drives and media, compact disk drives, Compact Disc Read Only Memory (CD-ROM), compact disc recordable (CD-R), Compact Disk Rewritable (CD-RW), a suitable type of Digital Versatile Disc (DVD) or BluRay disc, and so forth. Storage media such as flash drives, solid-state hard drives, redundant array of individual discs (RAID), virtual drives, networked drives and other memory means including storage media on the processor 802, or memories 806 are also contemplated as storage devices. It may be appreciated that such memory may be internal or external with respect to operation of the disclosed embodiments. It may be appreciated that certain portions of the processes described herein may be performed using instructions stored on a computer readable medium or media that direct computer system to perform the process steps. Non-transitory computable-readable media, as used herein, comprises all computer-readable media except for transitory, propagating signals.
Networking communication interfaces 808 may be configured to transmit to, or receive data from, other computing devices 800 across a network 812. The network and communication interfaces 808 may be an Ethernet interface, a radio interface, a Universal Serial Bus (USB) interface, or any other suitable communications interface and may include receivers, transmitter, and transceivers. For purposes of clarity, a transceiver may be referred to as a receiver or a transmitter when referring to only the input or only the output functionality of the transceiver. Example communication interfaces 808 may include wire data transmission links such as Ethernet and TCP/IP. The communication interfaces 808 may include wireless protocols for interfacing with private or public networks 812. For example, the network and communication interfaces 808 and protocols may include interfaces for communicating with private wireless networks such as Wi-Fi network, one of the IEEE 802.11x family of networks, or another suitable wireless network. The network and communication interfaces 808 may include interfaces and protocols for communicating with public wireless networks 808, using for example wireless protocols used by cellular network providers, including Code Division Multiple Access (CDMA) and Global System for Mobile Communications (GSM). A computing device 800 may use network and communication interfaces 808 to communicate with hardware modules such as a database or data store, or one or more servers or other networked computing resources. Data may be encrypted or protected from unauthorized access.
In various configurations, the computing device 800 may include a system bus 810 for interconnecting the various components of the computing device 800, or the computing device 800 may be integrated into one or more chips such as programmable logic device or application specific integrated circuit (ASIC). The system bus 810 may include a memory controller, a local bus, or a peripheral bus for supporting input and output devices 804, and communication interfaces 808. Example input and output devices 804 include keyboards, keypads, gesture or graphical input devices, motion input devices, touchscreen interfaces, one or more displays, audio units, voice recognition units, vibratory devices, computer mice, and any other suitable user interface.
The processor 802 and memory 806 may include nonvolatile memory for storing computable-readable instructions, data, data structures, program modules, code, microcode, and other software components for storing the computer-readable instructions in non-transitory computable-readable mediums in connection with the other hardware components for carrying out the methodologies described herein. Software components may include source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, or any other suitable type of code or computer instructions implemented using any suitable high-level, low-level, object-oriented, visual, compiled, or interpreted programming language.
Other embodiments of the disclosure will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Claims
1-20. (canceled)
21. A computer-implemented method for cloud-based asynchronous communication, the method comprising:
- receiving a new incoming message event from an electronic message repository;
- retrieving an incoming message from the electronic message repository, the incoming message relating to a previously-received transaction request;
- determining whether a message type of the retrieved incoming message matches a current step in a transaction request process flow of the previously-received transaction request; and
- upon determining that the message type of the retrieved incoming message does not match the current step in the transaction request process flow of the previously-received transaction request, retaining the retrieved incoming message in the electronic message repository.
22. The computer-implemented method of claim 21, further comprising:
- sending the received transaction request message to a PIN pad by way of the electronic message repository; and
- sending a subscription request to the electronic message repository for messages generated by the PIN pad.
23. The computer-implemented method of claim 21,
- wherein the transaction request message is received from a cloud-based application;
- the method further comprising:
- receiving a transaction status message from the cloud-based application; and
- updating the current step in the transaction request process flow of the received transaction request according to the received transaction status message.
24. The computer-implemented method of claim 22, further comprising:
- receiving a transaction complete message from the PIN pad; and
- sending a mailbox flush notification to the electronic message repository.
25. The computer-implemented method of claim 23, wherein the cloud-based application is a point of sale (POS) application.
26. The computer-implemented method of claim 22, wherein the current step in the transaction request process flow of the received transaction request is associated with one or more message types of messages sent to or from the PIN pad.
27. The computer-implemented method of claim 21, further comprising:
- receiving a notification from the electronic message repository of past unretrieved messages stored in the electronic message repository.
28. A non-transitory machine-readable medium storing instructions that, when executed by a computing system, causes the computing system to perform a method for cloud-based asynchronous communication, the method including:
- receiving a new incoming message event from an electronic message repository;
- retrieving an incoming message from the electronic message repository, the incoming message relating to a previously-received transaction request;
- determining whether a message type of the retrieved incoming message matches a current step in a transaction request process flow of the previously-received transaction request;
- upon determining that the message type of the retrieved incoming message matches the current step in the transaction request process flow of the previously-received transaction request, transmitting the retrieved incoming message to a cloud-based application; and
- upon determining that the message type of the retrieved incoming message does not match the current step in the transaction request process flow of the received transaction request, retaining the retrieved incoming message in the electronic message repository.
29. The non-transitory machine-readable medium of claim 28, the method further comprising:
- sending the received transaction request message to a PIN pad by way of the electronic message repository; and
- sending a subscription request to the electronic message repository for messages generated by the PIN pad.
30. The non-transitory machine-readable medium of claim 28,
- wherein the transaction request message is received from a cloud-based application;
- the method further comprising:
- receiving a transaction status message from the cloud-based application; and
- updating the current step in the transaction request process flow of the received transaction request according to the received transaction status message.
31. The non-transitory machine-readable medium of claim 29, the method further comprising:
- receiving a transaction complete message from the PIN pad; and
- sending a mailbox flush notification to the electronic message repository.
32. The non-transitory machine-readable medium of claim 30, wherein the cloud-based application is a point of sale (POS) application.
33. The non-transitory machine-readable medium of claim 29, wherein the current step in the transaction request process flow of the received transaction request is associated with one or more message types of messages sent to or from the PIN pad.
34. The non-transitory machine-readable medium of claim 28, the method further comprising:
- receiving a notification from the electronic message repository of past unretrieved messages stored in the electronic message repository.
35. A system for cloud-based asynchronous communication, the system comprising:
- a data storage device storing instructions for cloud-based asynchronous communication in an electronic storage medium; and
- a processor configured to execute the instructions to perform a method including:
- receiving a new incoming message event from an electronic message repository;
- retrieving an incoming message from the electronic message repository, the incoming message relating to a previously-received transaction request;
- determining whether a message type of the retrieved incoming message matches a current step in a transaction request process flow of the previously-received transaction request; and
- upon determining that the message type of the retrieved incoming message does not match the current step in the transaction request process flow of the previously-received transaction request, retaining the retrieved incoming message in the electronic message repository.
36. The system of claim 35, wherein the system is further configured for:
- sending the received transaction request message to a PIN pad by way of the electronic message repository; and
- sending a subscription request to the electronic message repository for messages generated by the PIN pad.
37. The system of claim 35,
- wherein the transaction request message is received from a cloud-based application; and
- wherein the system is further configured for:
- receiving a transaction status message from the cloud-based application; and
- updating the current step in the transaction request process flow of the received transaction request according to the received transaction status message.
38. The system of claim 36, wherein the system is further configured for:
- receiving a transaction complete message from the PIN pad; and
- sending a mailbox flush notification to the electronic message repository.
39. The system of claim 37, wherein the cloud-based application is a point of sale (POS) application.
40. The system of claim 36, wherein the current step in the transaction request process flow of the received transaction request is associated with one or more message types of messages sent to or from the PIN pad.
Type: Application
Filed: Feb 15, 2022
Publication Date: Jun 2, 2022
Inventor: Walter BANKS (Chandler, AZ)
Application Number: 17/651,132