# Patent

## Title
Mobile reader device

## Abstract

The subject technology relates to methods for processing a payment using a mobile card reader. Implementations of the subject technology provide include steps for determining, using a first communication module, a first available bandwidth for data transacted between the card reader and a payment processing service, and determining, using the second communication module, a second available bandwidth for data transacted between a local device and the payment processing service. In some implementations, the method can further include steps for selecting a communication path for communicating with the payment processing service based on the first available bandwidth and the second available bandwidth. Systems and computer-readable media are also provided.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 14/189,997, entitled “MOBILE READER DEVICE,” filed on Feb. 25, 2014; which is hereby expressly incorporated herein by reference in its entirety.


BACKGROUND
Mobile card readers facilitate financial transactions between parties, such as a buyer and a merchant, by providing a means by which funds can be transferred using a payment card, such as a debit or credit card. Along with the rising ubiquity of Internet access, mobile card readers have enjoyed increasing popularity as a location-agnostic and cost effective alternative to conventional payment card scanning devices.



BRIEF DESCRIPTION OF THE DRAWINGS
Certain features of the subject technology are set forth in the appended claims. However, the accompanying drawings, which are included to provide further understanding, illustrate disclosed aspects and together with the description serve to explain the principles of the subject technology. In the drawings:
FIG. 1A illustrates a block diagram of an example mobile reader device, according to some aspects of the subject disclosure.
FIG. 1B illustrates a block diagram of example hardware modules in a reader device, according to some aspects of the disclosure.
FIG. 1C illustrates an example of a network environment that includes a reader device, as well as a local device for facilitating communication with a payment processing service, according to some aspects of the technology.
2 illustrates an example process for processing a payment using a mobile card reader, according to some aspects of the technology.
FIG. 3A illustrates an example process for processing a payment using a mobile card reader.
FIG. 3B illustrates an example process for activating a mobile card reader, according to some aspects of the technology.
FIG. 4 illustrates a block diagram of example hardware components of a local device for facilitating communication between a mobile card reader and a payment processing service, according to certain aspects of the technology.
FIG. 5 depicts a conceptual environment in which a mobile card reader of the subject technology can be used to facilitate a financial transaction between a buyer and a merchant.



DETAILED DESCRIPTION
The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the technology can be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description, which includes specific details for the purpose of providing a more thorough understanding of the subject technology. However, it will be clear that the subject technology is not limited to the specific details set forth herein and may be practiced without these specific details. In some instances, structures and components are shown in block diagram form to avoid obscuring the concepts of the technology.
Some conventional mobile card readers have limited hardware functionality and rely on a host device, such as a smart phone or tablet PC, for full functionality. Such readers often contain only hardware for reading magnetic stripe information, but rely on a host device, for example, to provide the processing and communication capabilities needed for completing a financial transaction. However, supporting host device hardware (e.g., smart phones or a tablet PC) is relatively expensive, and includes hardware unnecessary for payment processing. Accordingly, there is a need for stand-alone mobile reader device, which includes activation and payment processing functionality, without reliance on a host device.
FIG. 1A illustrates a conceptual block diagram of hardware components of an example mobile card reader 100. As illustrated, mobile card reader 100 includes a display 120, input pad 130 and card slot 140. It is understood that mobile card reader 100 can include additional hardware components, such as additional display and/or input device(s), without departing from the scope of the invention. Display 120 and input pad 130 can be integrated into a common touch based display screen, such as a capacitive touch screen. Additionally, display and input functionality can be provided using one or more devices in wireless communication with mobile card reader 100, such as a local device, as will be discussed in further detail with respect to FIG. 1B, below.
In the example of FIG. 1A, card slot 140 is configured as a dip-slot, e.g., for accepting integrated circuit cards, such as those conforming to the Europay, Mastercard, and Visa (EMV) standard. However, card slot 140 can be configured for accepting other payment cards that differ in geometry and/or information storage format. By way of example, card slot 140 can be configured to accept a magnetic stripe payment card, such as a debit or credit card that must be “swiped” through card slot 140.
As further illustrated, input pad 130 includes numerical input keys, as well as control keys, such as a “delete” key (DEL), a “clear” key (CLR) and a return/enter key (ENTER). However, it is understood that input pad 130 can include a fewer (or greater) number of entry options than those shown in the example of FIG. 1A.
In operation, mobile card reader 100 can function as a stand-alone unit, not requiring functional support of a “host device” for full operability. As such, mobile card reader 100 includes all hardware and software modules necessary for activation of the unit, as well as subsequent processing of payment information (e.g., using a payment processing service), such as that read from a payment card using card slot 140 and/or input using input pad 130. As described in further detail below, mobile card reader 100 can be configured to choose amongst multiple different communication paths for wireless communication with a payment processing service, for example, in bandwidth constrained circumstances, e.g., using a messaging service such as short messaging service (SMS), multimedia messaging service (SMS), or an email service.
FIG. 1B illustrates a block diagram of example hardware modules that support functionality of mobile reader device 100, according to some aspects of the disclosure. As illustrated, mobile reader device 100 includes processor/s 105, a long range communication module 106, a short-range communication module 107, and a reader 109. As further depicted, short-range communication module 107 includes various communication modules (e.g., for facilitating wireless communication over short distances), including: WiFi module 110, infrared (IR) module 111, and Bluetooth module 112.
Likewise, long-range communication module 106 includes a general packet radio service (GPRS) module to provide communication capabilities over greater distances, as compared to that of short-range communication module 107. In certain aspects, GPRS module 108 can facilitate communication with a cellular network, for example, using a 2G or 3G cellular communication system. Additionally, GPRS module 108 can be configured to provide communications over a wideband code division multiple access (WCDMA) mobile network. It is understood that short-range communication module 107 and/or long-range communication module 106 can include additional (or different) communication modules for supporting wireless communications to/from mobile card reader 100 and a communication network or local device.
In operation, financial information is received by mobile card reader 100 (using reader 109), when a payment card is inserted (or swiped) via card slot 140. Once financial information has been received (e.g., by processor/s 105), the availability and/or quality of one or more communication paths to a payment processing service are determined. Subsequently, an optimal communication path is selected for use in transacting data for the completion of a financial transaction, for example, between a buyer and a merchant.
In some implementations, wherein a high amount of bandwidth is available for communication between mobile card reader 100 and a payment processing service, long-range communication module 106 is used to transmit financial information to a payment processing service, for example, using a high-bandwidth transmission service. By way of example, the high-bandwidth transmission service may utilize a communication protocol supporting at least one of: an internet protocol (IP), a point-to-point protocol (PPP), or a X.25 protocol.
Alternatively, if communication with the payment processing service is bandwidth restricted, a low-bandwidth transmission service may be used to send/receive data via long-range communication module 106. By way of example, the low-bandwidth transmission service can utilize one or more of: a short messaging service (SMS), a multimedia messaging service (MMS), or an email service.
In some instances, an unusably low amount of bandwidth, or no bandwidth, is available for communication with the payment processing service, rendering mobile card reader 100 without a means for verifying/processing a financial transaction. In such cases, mobile card reader 100 can communicate with a proximate or nearby “local device” that is configured to facilitate communication with the payment processing service. For example, the local device may be a personal computer (PC) or other computing device having wireless (or wired) network resources that are not available to the mobile reader device.
FIG. 1C illustrates an example of a network environment 120 that includes a reader device, as well as a local device 124 for facilitating communication with a payment processing service 126. As illustrated, network environment 120 includes a mobile card reader 122, a local device 124, and a payment processing service 126, each of which are communicatively coupled via network 128. It is understood that network 128 can include, for example, any one or more of a personal area network (PAN), a local area network (LAN), a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), a cellular network, the Internet, and the like. Further, network 128 can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.
In the example of FIG. 1C, local device 124 is illustrated as a personal computer, however, depending on the desired implementation, local device 124 can be any type of computing device configured to receive wireless communications (e.g., from mobile card reader 122), and to transact data with a payment processing service via network 128. By way of non-limiting example, local device 124 can include a tablet computing device, smartphone, workstation, or server, etc. Additionally, it is understood that payment processing service 126 can comprise a single computer, or a network of computers, such as a cluster, configured to receive and validate financial information, e.g., to facilitate a monetary transaction between a buyer and a seller.
As discussed in further detail below, local device 124 can be used to facilitate communication between mobile card reader 122 and payment processing service 126 when mobile card reader 122 is unable to communicate directly with a communications network for access to the payment processing service. However, in certain implementations, local device 124 is configured to support other types of functionality with regard to mobile card reader 122. For example, using one or more wireless communication modules (e.g., Bluetooth module 112, WiFi module 110, and/or IR module 111), mobile card reader 122 can communicate with local device 124 to receive text inputs (via a keyed entry method or device, such as a keyboard). In another aspect, local device 124 may provide display functionality, e.g., using a bistable display, for displaying information relative to a financial transaction performed using mobile card reader 122.
FIG. 2 illustrates an example process 200 for selecting a communication channel for communication with a payment processing service. In the illustrated example, process 200 begins with step 202 when financial information is received (e.g., by one or more processors, such as processor/s 105), from a payment card. As discussed in further detail below, the financial information may be read from a magnetic stripe of a payment card (such as a debit or credit card), or the information may be read from an integrated circuit (IC) of a “chip” card, such as those conforming to the EMV standard.
Once the financial information has been received from the payment card, process 200 proceeds to step 204 in which an available bandwidth, or communication channel signal strength, is determined for communications between the mobile card reader and a payment service.
Subsequently, in step 206, a determination is made as to whether the available bandwidth falls below a first predetermined threshold. In certain aspects, the first predetermined threshold for bandwidth indicates a minimum preferred bandwidth for communication using a transmission service (protocols) that are better optimized for high speed network communications. If in step 206 it is determined that the available bandwidth is not below the first threshold, process 200 proceeds to step 208, wherein a high-bandwidth transmission service is selected for use in transacting payment processing information (including the financial information) with the payment processing service.
Alternatively, if in step 206 it is determined that the available bandwidth is below the first threshold, process 200 proceeds to step 210 wherein an additional determination is made as to whether the available bandwidth is greater than a second threshold. In some implementations, the second threshold indicates a minimum bandwidth requirement, below which an intermediary local device is used to facilitate communication with a payment processing service. As such, if in step 210 it is determined that the available bandwidth is greater than the second threshold, process 200 proceeds to step 212 in which a low-bandwidth transmission service is used for communication with the payment processing service. By way of non-limiting example, the low-bandwidth transmission service can include one or more of: a short messaging service (SMS), a multimedia messaging service (MMS), or an email service.
Alternatively, if in step 210 it is determined that the available bandwidth is not greater than the second threshold, process 200 proceeds to step 214 in which financial information is transmitted to a local device (e.g., local device 124), for use in verifying a financial transaction, for example, between a buyer and a merchant.
FIG. 3A illustrates an example process 300 for processing a payment using a mobile card reader, such as mobile card reader 100. Process 300 begins with step 302 in which payment information is received, e.g., by the mobile card reader, from a payment card of a buyer. As noted above, payment information may also be manually entered into mobile card reader 100, using input pad 130.
In addition to an indication of an amount of funds to be transferred, payment information can include various types of information about the buyer and/or the buyer's source of funds for the completion of a financial transaction. By way of example, payment information can include a credit card number, debit card number, bank account identifier (e.g., account and routing information), etc. In some implementations, payment information may include the address associated with a cryptographic wallet or account that is associated with a crypto-currency, such as Bitcoin. In some implementations, payment information may also include personal information related to the buyer, such as a first name, last name, middle name, address information and/or rewards account information, etc.
Once the mobile card reader has received the payment information, process 300 proceeds to step 304 in which an authorization request to process the payment information is generated. The authorization request can be composed of various types of information, including any part (or all) of the payment information. For added security, the authorization request may also contain information uniquely identifying a merchant or seller processing the payment information. For example, a merchant name, account identifier, email address and/or location can be included in the authorization request. By way of further example, the authorization request may be comprised of payment information of the buyer, as well as information identifying a location of the mobile card reader, such as global positioning system (GPS) information.
In step 306, the authorization request is optionally encrypted to provide additional security for the buyer's payment information, etc. In certain aspects, once the authorization request has been generated (as discussed in step 304), the authorization request is encrypted by an encryption engine or module of the mobile card reader. After encryption has been performed, the encryption engine will generate a secured version of the authorization request, e.g., a secure authorization request.
Subsequently, in step 308, the secure authorization request is transmitted to a payment processor, e.g., via a radio transceiver of the mobile card reader. In some implementations, a mode of transmission of the secure authorization may depend on an amount of bandwidth available to the mobile card reader. For example, if a high bandwidth connection, such as WiFi is available, then the secure authorization request may be transmitted using a WiFi connection.
Alternatively, if it is determined that a relatively low amount of bandwidth is available to the mobile card reader, for example, because the mobile card reader is in a location with limited wireless network access, then a low bandwidth messaging service may be used. For example, a low bandwidth messaging service such as a short messaging service (SMS), or multimedia messaging service (MMS). In some aspects, the low bandwidth transmission can utilize internet protocol (IP) routing, for example, the secure authorization request may be transmitted via an email service.
After the secure authorization request is received by the payment processor, the secure authorization request is processed to determine if the corresponding financial transaction should be permitted. Processing of the secure authorization request can be performed in different ways. In some implementations, the GPS location of the mobile card reader may be used to verify the secure authorization request, for example by comparing the GPS location with a known location/position of the merchant. However, it is understood that payment processing may be based on different or additional types of information, depending on the design implementation.
After a determination has been made as to whether to allow or decline the authorization request, process 200 proceeds to step 210, wherein an authorization response is received e.g., from the payment processor. In some implementations, the authorization response can be received using the same transmission method or service that was used to transmit the authorization request. For example, if the authorization request was transmitted by the mobile card reader using a SMS service, the authorization response may be received via SMS message. Furthermore, the authorization response may also contain encrypted information. As such, decryption or decoding of the authorization response may be required.
After the authorization response is received (and in some aspects decrypted), the mobile card reader can use the authorization response to indicate (e.g., to a user or merchant) whether the secure authorization request has been approved. Based on the result of the authorization response, the mobile card reader will be permitted to complete the corresponding financial transaction. Indications of an accepted (or declined) request can be echoed to the user, for example using a display (e.g., display 120) of the mobile card reader.
In another aspect, the subject technology includes steps for activating a mobile card reader device, e.g., by a merchant that wishes to use the device to accept payment cards. In some implementations, the subject technology provides convenient means of activating a mobile card reader by swiping a payment card of the merchant to associate the mobile card reader with the merchant and/or a payment account already associated with the merchant. For example, the merchant can create an account with a payment processing service; then, after acquiring a mobile card reader, the merchant may swipe his/her payment card to cause the mobile card reader to activate. An example process for activating a mobile card reader is illustrated in FIG. 3B.
Specifically, FIG. 3B illustrates an example process 301 for activating a mobile card reader using a payment card. Process 301 begins with step 303 in which merchant information is read from a payment card inserted into a card slot of the mobile card reader (e.g., card slot 140 discussed above). In alternative embodiments, merchant information may be manually received, for example, using an input pad on the mobile card reader. Merchant information can include various types of identifying information that is read from the merchant's payment card. For example, merchant information can include any, or all of the following: merchant name, address, payment card number, payment card type, merchant account number, or an activation code, etc.
Subsequently, in step 305, an activation request is generated based on the merchant information. Similar to the payment processing method discussed with respect to FIG. 3A, the activation request may be encrypted, for example, to provide increased security for the merchant information.
In step 307, the activation request is transmitted to an activation processing service using a transceiver of the mobile card reader. Transmission of the activation request can occur differently depending on the availability of network access (e.g., bandwidth) to the mobile card reader. In certain aspects, bandwidth availability for different communication types can be compared to determine availability of the highest bandwidth connection. For example, the mobile card reader may determine the availability of one or more of a WiFi connection, SMS service, MMS service, and/or email service, etc. If the highest bandwidth connection available is the WiFi, transmission of the activation request may be performed using the WiFi connection.
In some implementations, where only low bandwidth services are available, such as a messaging service (e.g., SMS, MMS or email), a messaging service is used to transmit the activation request. When using a low bandwidth messaging service, the activation request may be transmitted using a specific character limit (e.g., 160 characters or less). Accordingly, in some implementations, multiple transmissions may be needed to complete the transmission of an activation request.
In step 309, an activation response is received, wherein the activation response indicates either an authorization or a decline of the activation request. Based on the activation response, additional functionality of the mobile card reader can be provided, for example, if the activation response is approved. However, it the authorization response is declined, functionality of the mobile card reader (e.g., the ability to accept and process payment cards) is restricted.
In some aspects, additional information from the merchant may be required for activation. For example, mobile card reader activation may require an activation code or password that can be entered using a keypad, such as keypad 130, discussed above.
FIG. 4 illustrates a block diagram of example hardware components for a local device, according to some aspects of the technology. As discussed above, local device 400 can include various types of computing devices, such as personal computers, tablet PCs, or smart phones, etc. As illustrated, local device 400 includes storage 402, system memory 404, display interface 406, system bus 408, ROM 610, one or more processor(s) 412, card reader 414 and transceiver 416. In some aspects, the system bus 408 collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of mobile card reader 400. For instance, system bus 408 communicatively connects the processor(s) 412 with input interface 410, the system memory 404, the display 406 and the permanent storage device 402.
In some implementations, the processor(s) 412 retrieve instructions to execute (and data to process) in order to execute the steps of the subject technology. The processor(s) 412 can include a microcontroller, or a single processor or a multi-core processor in different implementations. Additionally, the processor(s) can comprise one or more graphics processing units (GPUs) and/or one or more decoders (e.g., analog/digital converters), for example, to drive a display (e.g., display 120) that is coupled to display interface 406.
Storage 402 can store static data and instructions needed by the processor(s) 412 and other modules of mobile card reader 400. Similarly, the processor(s) 412 can comprise one or more memory locations such as a CPU cache or processor in memory (PIM), etc. Storage device 402 can comprise a read-and-write memory device. In some aspects, this device can be a non-volatile memory that stores instructions and data even when mobile card reader 400 is without power. Some implementations of the subject disclosure can use a mass-storage device (such as solid state or magnetic devices) e.g., permanent storage device 402.
Although the system memory can be either volatile or non-volatile, in some examples the system memory 404 is a volatile read-and-write memory, such as a random access memory. System memory 404 can store some of the instructions and data that the processor needs at runtime, for example, to facilitate the process of mobile card reader activation, or payment processing, as discussed above.
In some implementations, the processes of the subject disclosure are stored in system memory 404, storage device 402 and/or one or more memory locations embedded with the processor(s) 412. From these various memory units, processor(s) 412 retrieve instructions to execute and data to process in order to execute the processes of some implementations of the instant disclosure.
The bus 408 also connects to card reader 414 and display interface 406. The input card reader 414 enables a user (e.g., a buyer or a merchant) to provide payment card information, for example via a payment card, to mobile card reader 400. Input devices used with card reader 414 can include for example, alphanumeric keypads, such as input device 130; however, other input devices may also be used, including pointing devices (also called “cursor control devices”) and/or wireless devices such as wireless keyboards, wireless pointing devices, etc.
Finally, as shown in FIG. 4, bus 408 also communicatively couples mobile card reader 400 to a network (not shown) through transceiver 416. It should be understood that the transceiver 416 can be configured to send/receive radio frequency transmissions using a variety of messaging services. As discussed above, transceiver 416 can be configured to transact data using one or more of a MMS service, SMS service, or an email service. In this manner, mobile card reader 400 can communicate with one or more computers or servers, such as that of a payment processing service or activation service for the mobile card reader.
In practice the methods of the subject technology can be carried out by mobile card reader 400. In some aspects, instructions for performing one or more of the method steps of the present disclosure are stored on one or more memory devices such as the storage 402 and/or the system memory 404. For example, stored instructions may be configured to cause processor(s) 412 to execute steps including, receiving payment information, wherein the payment information specifies a payment amount, generating an authorization request to process the payment information and encrypting the authorization request using an encryption engine to generate a secure authorization request. In certain aspects, the instructions can further include operations for transmitting the secure authorization request using the radio transceiver to a payment processor via a messaging service, wherein the messaging service comprises one or more of a SMS, a MMS or an email service, and receiving an authorization response from the payment processor via the messaging service.
FIG. 5 depicts a conceptual environment in which a reader of the subject technology is used to facilitate a financial transaction between a buyer and a merchant. Although the diagrams depict components as functionally separate, such depictions are merely for illustrative purposes. It will be apparent that the components portrayed in this figure can be arbitrarily combined or divided into separate software, firmware and/or hardware components, such as combined into a common device or mobile card reader (e.g., mobile card reader 100 discussed above). Furthermore, it will also be apparent that such components, regardless of how they are combined or divided, can execute on the same host or multiple hosts, and wherein multiple hosts can be connected by one or more networks.
In the example of FIG. 5, the system includes a mobile card reader 500, including reader 501, decoding engine 510, a user interaction engine 520, and a transaction engine 530. Additionally, the mobile card reader may also include (or have access to) one or more of a user database 540, a product or service database 550, and a transaction database 560, which are all coupled to transaction engine 530.
As used herein, the term engine refers to software, firmware, hardware, and/or other components used to effectuate a purpose. The engine will typically include software instructions that are stored in non-volatile memory (also referred to as secondary memory). When the software instructions are executed, at least a subset of the software instructions is loaded into memory (also referred to as primary memory) by a processor. The processor then executes the software instructions in memory. The processor may be a shared processor, a dedicated processor, or a combination of shared or dedicated processors. A typical program will include calls to hardware components (such as I/O devices), which typically requires the execution of drivers. The drivers may or may not be considered part of the engine, but the distinction is not critical.
As used herein, the term database is used broadly to include any known or convenient means for storing data, whether centralized or distributed, relational or otherwise.
In the example of FIG. 5, mobile card reader 500 can include various software and hardware modules including software, firmware, hardware, or any combination capable of at least receiving the signal, decoding if needed, exchanging information with a transaction server, for example to validate merchant information (form mobile card reader activation) or to verify the buyer and/or seller's account information, conducting the transaction, and generating a receipt. Typical components of mobile card reader 500 can include but are not limited to a battery, LCD driver, a display, a radio frequency (RF) antenna (e.g., a cellular antenna), a speaker, a Bluetooth circuit, and WiFi circuitry.
In response to a financial transaction between a buyer and a seller, mobile card reader 500 accepts information selected including but not limited to information from a financial transaction or information pertaining to financial transaction card used by the buyer in the transaction. Additionally, a financial transaction device can be utilized. Non-limiting examples of financial transaction devices include but are not limited to a wristband, RFID chip, cell phone, biometric marker and the like. At least a portion of this information is communicated to a third party financial institution or payment network to authorize the transaction.
Payment confirmation can be made with a communication channel of the buyer's choice. As non-limiting examples, confirmation of payment can be an electronic notification in the form selected from at least one of, email, SMS message, MMS message, email message, tweet (message delivered via Twitter), instant message, communication within a social network and the like. In response to the transaction, a confirmation (e.g., an authorization response) is made that the buyer is authorized to use the financial transaction card. In certain implementations, a confirmation can be provided that indicates a sufficiency of funds available to the buyer.
In the example of FIG. 5, reader 501 is configured to read data encoded in a magnetic strip of a card being swiped by a buyer and send a signal that corresponds to the data read to mobile card reader 500. However, as discussed above, reader 501 can be configured to receive various payment card types, including but not limited to IC cards that can be provided to reader 501 using a dip slot (e.g., dip slot 140 discussed with respect to FIG. 1).
The size of mobile card reader 500 can be miniaturized for portability. In addition, the mobile card reader 501 is also designed to reliably read the card with minimum error via a single swipe by counteracting vendor specific filtering. Note that this broad overview is meant to be non-limiting as components to this process are represented in different embodiments.
Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.
In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software aspects of the subject disclosure can be implemented as sub-parts of a larger program while remaining distinct software aspects of the subject disclosure. In some implementations, multiple software aspects can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software aspect described here is within the scope of the subject disclosure. In some implementations, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
These functions described above can be implemented in digital electronic circuitry, in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.
Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media. The computer-readable media can store a computer program executable by at least one processing unit, such as a microcontroller, and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.
While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.
As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium” and “computer readable media” are entirely restricted to tangible, physical objects that store information in a form readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals.
Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
It is understood that any specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged, or that all illustrated steps be performed. Some of the steps may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.
A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. A phrase such as an aspect may refer to one or more aspects and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A phrase such as a configuration may refer to one or more configurations and vice versa.
The word “exemplary” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims.

## Claims

1. A mobile card reader, comprising:
one or more processors;
a card reader coupled to the one or more processors;
a first communication module coupled to the one or more processors; and
a second communication module coupled to the one or more processors, and wherein the one or more processors are configured to perform operations comprising:
determining, using the first communication module, a first available bandwidth for data transacted between the card reader and a payment processing service, wherein the payment processing service facilitates verification of a financial transaction between a buyer and a merchant;
determining, using the second communication module, a second available bandwidth for data transacted between a local device and the payment processing service, wherein the local device is configured for facilitating communication between the mobile card reader and the payment processing service; and
selecting, using the one or more processors, a communication path for communicating with the payment processing service based on the first available bandwidth and the second available bandwidth.

2. The mobile card reader of claim 1, wherein determining the second available bandwidth further comprises:
determining, by the processors, an availability of the local device for facilitating communication with the payment processing service.

3. The mobile card reader of claim 1, wherein selecting the communication path further comprises:
selecting, using the first communication module, a low-bandwidth transmission service if the first available bandwidth is below a first predetermined threshold.

4. The mobile card reader of claim 3, wherein the low-bandwidth transmission service comprises one or more of: a short messaging service (SMS), a multimedia messaging service (MMS), or an email service.

5. The mobile card reader of claim 1, wherein selecting the communication path further comprises:
selecting, using the first communication module, a high-bandwidth transmission service if the first available bandwidth is above a second predetermined threshold.

6. The mobile card reader of claim 5, wherein the high-bandwidth transmission service utilizes a protocol supporting at least one of: an internet protocol (IP), a point-to-point protocol (PPP), or a X.25 protocol.

7. The mobile card reader of claim 1, wherein selecting the communication path further comprises:
selecting, using the second communication module, the local device for facilitating communication with the payment processing service if the first available bandwidth is below a third predetermined threshold.

8. A computer-implemented method comprising:
determining, by a processor of a mobile card reader, a first available bandwidth for data transacted between the mobile card reader and a payment processing service;
determining, by the processor, a second available bandwidth for data transacted between a local device and the payment processing service, wherein the local device is configured for facilitating communication between the mobile card reader and the payment processing service; and
selecting, by the processor, a communication path for communicating with the payment processing service based on the first available bandwidth and the second available bandwidth.

9. The computer-implemented method of claim 8, wherein determining the second available bandwidth further comprises:
determining, by a processor, an availability of the local device for facilitating communication with the payment processing service.

10. The computer-implemented method of claim 8, wherein selecting the communication path further comprises:
selecting, by the processor, a low-bandwidth transmission service if the first available bandwidth is below a first predetermined threshold.

11. The computer-implemented method of claim 10, wherein the low-bandwidth transmission service comprises one or more of: a short messaging service (SMS), a multimedia messaging service (MMS), or an email service.

12. The computer-implemented method of claim 8, wherein selecting the communication path further comprises:
selecting, by the processor, a high-bandwidth transmission service if the first available bandwidth is above a second predetermined threshold.

13. The computer-implemented method of claim 8, wherein selecting the communication path further comprises:
selecting, by the processor, the local device for facilitating communication with the payment processing service if the first available bandwidth is less than the second available bandwidth.

14. The computer-implemented method of claim 8, wherein selecting the communication path further comprises:
selecting, by the processor, the local device for facilitating communication with the payment processing service if the first available bandwidth is less than a third predetermined threshold.

15. A non-transitory computer-readable storage medium comprising instructions stored therein, which when executed by one or more processors, cause the processors to perform operations for facilitating selection of a communication path between a mobile card reader and a payment processing service, the operations comprising:
determining, by a processor of a mobile card reader, a first available bandwidth for data transacted between the mobile card reader and a payment processing service;
determining, by the processor, a second available bandwidth for data transacted between a local device and the payment processing service, wherein the local device is configured for facilitating communication between the mobile card reader and the payment processing service; and
selecting, by the processor, a communication path for communicating with the payment processing service based on the first available bandwidth and the second available bandwidth.

16. The non-transitory computer-readable storage medium of claim 15, wherein determining the second available bandwidth further comprises:
determining, by the processors, an availability of the local device for facilitating communication with the payment processing service.

17. The non-transitory computer-readable storage medium of claim 15, wherein selecting the communication path further comprises:
selecting, by the processors, a low-bandwidth transmission service if the first available bandwidth is below a first predetermined threshold.

18. The non-transitory computer-readable storage medium of claim 17, wherein the low-bandwidth transmission service comprises one or more of: a short messaging service (SMS), a multimedia messaging service (MMS), or an email service.

19. The non-transitory computer-readable storage medium of claim 15, wherein selecting the communication path further comprises:
selecting, by the processors, a high-bandwidth transmission service if the first available bandwidth is above a second predetermined threshold.