Application-based point of sales information management system in mobile operating system

JP2025128163A5Active Publication Date: 2025-09-30CAPITAL ONE SERVICES LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025086349
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-05-18
Filing Date
2025-05-23
Publication Date
2025-09-30
Estimated Expiration
2041-05-17

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To provide a point of sales information management system in an application-based operating system.SOLUTION: A first application is configured to generate a first URL directed to a second application, and a parameter of the first URL includes an identifier of the first application. A mobile OS is configured to access the first URL to open a second application. The second application is configured to: receive a virtual account (VAN) from a server; start the server on a port; and generate a second URL directed to the first application. A parameter of the second URL includes the port. The mobile OS is configured to access the second URL to open the first application. The first application is configured to: establish a connection to the server, using the designated port; receive the VAN from the second application via the connection; and automatically input the VAN to a form field of a payment form.SELECTED DRAWING: Figure 4
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Patent Application No. 16 / 876,473, entitled "Application-Based Point of Sale System in a Mobile Operating System," filed May 18, 2020. The contents of the aforementioned patent application are incorporated herein by reference in their entirety.

[0002] Technical Field TECHNICAL FIELD Embodiments herein relate generally to computing platforms, and more particularly to providing application-based point-of-sale systems on mobile operating systems. [Background technology]

[0003] Some mobile operating systems restrict communication between two or more applications running on the same device. For example, some mobile operating systems may prevent a first application from communicating directly with a second application. Similarly, some mobile operating systems may restrict data exchange between such applications. Doing so may unnecessarily restrict legitimate and secure communication between applications. Summary of the Invention

[0004]

[0003] Embodiments disclosed herein provide a system, method, product, and computer-readable medium for communication between applications in a mobile operating system. In one example, a first application may generate a first URL directed to a second application, where a parameter of the first URL comprises an identifier of the first application. The mobile operating system (OS) may access the first URL to open the second application. The second application may receive a virtual account number (VAN) from a server. The second application may start a server on a port and generate a second URL directed to the first application, where the parameter of the second URL includes the port. The OS may access the second URL to open the first application. The first application may establish a connection with the server using the specified port and receive the VAN from the second application over the connection. The first application may auto-populate a form field of a payment form for the first application with the VAN. [Brief explanation of the drawings]

[0005] [Figure 1A] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 1B] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 1C] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 1D] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 1E]1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 1F] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 2A] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 2B] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 2C] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 2D] 1 illustrates an embodiment of a system for an application-based point of sale system on a mobile operating system. [Figure 3A] 1 illustrates an embodiment of an application-based point of sale system in a mobile operating system. [Figure 3B] 1 illustrates an embodiment of an application-based point of sale system in a mobile operating system. [Figure 3C] 1 illustrates an embodiment of an application-based point of sale system in a mobile operating system. [Figure 4] 1 illustrates one embodiment of a first logic flow. [Figure 5] 10 illustrates one embodiment of a second logic flow. [Figure 6A] 1 shows an example of a contactless card. [Figure 6B] 1 shows an example of a contactless card. [Figure 7] 1 illustrates an embodiment of a computing system. DETAILED DESCRIPTION OF THE INVENTION

[0006] Embodiments disclosed herein provide techniques for an application-based point-of-sale system accessible by other applications within a mobile operating system (OS) that limits communication between applications registered with different developers. Generally, a first application running on a device may benefit from data provided by a second application on the device. For example, the first application may be a merchant application registered with a merchant in the OS, and the second application may be an application provided by a financial institution registered with the financial institution in the OS. In such an example, a user of the merchant application may request to use data from the financial institution application, such as payment information, biographical information, etc., in the merchant application. In response to the request, the merchant application may generate a first uniform resource locator (URL) directed to the financial institution application. A parameter of the first URL may include an identifier for the merchant application.

[0007] The merchant application may then instruct the mobile OS to open or otherwise access the first URL, which causes the mobile OS to open the financial institution application on the device. The financial institution application may then start a local server within the OS that is accessible only to applications running on the mobile device. The local server is started on a port and may be a Transmission Control Protocol / Internet Protocol (TCP / IP) server or other type of server (e.g., a Hypertext Transfer Protocol (HTTP) server). In some embodiments, the financial institution application may receive authentication credentials for an account at the financial institution before starting the server. For example, if a user has not provided login credentials within a threshold time, e.g., 30 days, the financial institution application may request the user to provide login credentials. Additionally and / or alternatively, before starting the server, the financial institution application may receive encrypted data from a contactless card associated with the account and send the encrypted data to an authentication server. The authentication server may attempt to decrypt the encrypted data. If the server decrypts the encrypted data, the server may send an indication to the financial institution application that the encrypted data has been verified. Additionally, once the server decrypts the encrypted data, the server may generate a virtual account number (VAN) for the account. The server may provide the generated VAN, the expiration date of the VAN, and the card verification value (CVV) of the VAN to the financial institution application. Additionally, the server may provide other data to the financial institution application, such as a first name, a last name, a phone number, an email address, a billing address, and / or a shipping address.

[0008] The financial institution application may generate a second URL directed to the merchant application. The second URL may be based at least in part on an identifier of the merchant application specified as a parameter of the first URL. The second URL may further specify a port of the local server as a parameter. The financial institution application may further register the local server and / or the financial institution application with the OS as a background task so that the local server and / or the financial institution application continue to run in the background of the OS while other applications (e.g., the merchant application) run in the foreground of the OS. The financial institution application may instruct the mobile OS to open or otherwise access the second URL, which causes the OS to open the merchant application in the foreground of the OS.

[0009] Once opened, the merchant application may identify the port of the local server specified in the second URL and establish a connection with the local server at the specified port of the local interface (e.g., a local loopback IP address). In some embodiments, the merchant application may provide a certificate that can be validated by the server as part of the connection establishment. Additionally and / or alternatively, the merchant application may provide a token that can be validated by the server as part of the connection establishment. Once the connection is established, the financial institution application may exchange data with the merchant application over the connection, and vice versa. For example, the financial institution application may provide a VAN, expiration date, and CVV and / or other information (e.g., address information, etc.) to the merchant application using the connection. In such an example, the merchant application may auto-populate a form with the received data, allowing the user to complete a purchase or other operation using the received data. More generally, any number and type of data may be exchanged over the connection.

[0010] Advantageously, the mobile OS may restrict access to local servers by external entities, thereby improving device and data security. Furthermore, securely receiving payment data from a financial institution application increases the security of the payment data. For example, a user does not need to manually enter a VAN, expiration date, and / or CVV, which could compromise the security of the data. Furthermore, in some embodiments, a financial institution may provide a framework (e.g., a software development kit (SDK)) that includes the functionality necessary to perform the operations disclosed herein. This allows a third-party application (e.g., a merchant application) to integrate only the functionality it needs without requiring the full SDK and / or framework required to perform the operations disclosed herein. For example, by providing the merchant application with one or more APIs that can be used for data exchange, the SDK allows the merchant application to have a reduced size compared to including the full code base of the financial institution application in the merchant application to provide the functionality required for the merchant application.

[0011] With general reference to the notation and nomenclature used herein, one or more portions of the detailed descriptions which follow may be presented in terms of program procedures executed on a computer or network of computers. These procedural descriptions and representations are used by those skilled in the art to most effectively convey the substance of their work to others skilled in the art. A procedure is herein, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. These operations are operations requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is sometimes convenient, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.

[0012] Further, these operations are often referred to in terms, such as adding or comparing, that are commonly associated with mental operations performed by a human operator. However, no such capability of a human operator is necessary, or desirable in most cases, for any of the operations described herein that form part of one or more embodiments. Rather, these operations are machine operations. Useful machines for performing the operations of the various embodiments include digital computers selectively activated or configured by a computer program stored therein and written in accordance with the teachings herein, and / or include specially constructed apparatus or digital computers for the required purposes. Various embodiments also relate to apparatus or systems for performing these operations. These apparatus may be specially constructed for the required purposes. The required structure for these various machines will be apparent from the description given.

[0013] Reference is now made to the drawings. Like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding thereof. However, it may be apparent that novel embodiments may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to facilitate description thereof. The intention is to cover all modifications, equivalents, and alternatives within the scope of the claims.

[0014] 1A illustrates a schematic diagram of an exemplary system 100 consistent with disclosed embodiments. As shown, system 100 includes one or more mobile computing devices 110. Mobile device 110 is representative of any type of network-enabled computing device that runs a mobile operating system, such as a smartphone, tablet computer, wearable device, laptop, portable gaming device, etc. Mobile device 110 may include a processor 101 and memory 111. Processor 101 may be any computer processor, including, but not limited to, AMD® Athlon®, Duron®, and Opteron® processors, ARM® application, embedded, and secure processors, IBM® and Motorola® DragonBall® and PowerPC® processors, IBM and Sony® Cell processors, Intel® Celeron®, Core®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors, and similar processors. Processor 101 may also employ dual microprocessors, multi-core processors, and other multi-processor architectures.The memory 111 may include various types of computer-readable storage media in the form of one or more high-speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., one or more flash arrays), polymer memory such as ferroelectric polymer memory, ovonic memory, phase-change or ferroelectric memory, silicon oxide silicon nitride oxide (SONOS) memory, magnetic or optical cards, arrays of devices such as redundant array of independent disks (RAID) drives, solid-state memory devices (e.g., USB memory, solid-state drives (SSDs), and other types of storage media suitable for storing information).

[0015] As shown, the memory 111 of the mobile device 110 includes an instance of a mobile operating system (OS) 112. Exemplary mobile operating systems 112 include Android® and iOS® mobile operating systems. As shown, the OS 112 includes an account application 113 and one or more other applications 114. The account application 113 allows a user to perform various account-related operations, such as activating a payment card, viewing an account balance, purchasing items, and processing payments. In some embodiments, a user may authenticate using authentication credentials to access certain features of the account application 113. For example, the authentication credentials may include a username (or login) and password, biometric credentials (e.g., fingerprint, Face ID, etc.), etc. The other applications 114 are representative of any type of computing application, such as a web browser, a merchant application, a shopping application, a delivery service application, a ride-sharing application, a messaging application, a word processing application, a social media application, etc. For example, a first of the other applications 114 may be a merchant application provided by a merchant for purchasing goods, services, or any other type of item. As another example, a second one of the other applications 114 may be a ride-sharing application that allows a user to arrange and pay for transportation services. As yet another example, a third one of the other applications 114 may be a delivery service application that allows a user to purchase food for delivery.

[0016] Due to restrictions imposed by OS 112, applications registered (or assigned) to different developers (or entities) may not be able to communicate and / or exchange data. For example, with such restrictions, account application 113 (registered as a developer with a financial institution) may not be able to communicate and / or exchange data with other applications 114 (registered with an entity other than the financial institution). Similarly, a first one of the other applications 114 (registered with a first entity) may not be able to communicate with other one of the other applications 114 (registered with a second entity different from the first entity). Registration of an application may occur when the application is submitted to an application store associated with the provider of OS 112. Advantageously, however, embodiments disclosed herein provide techniques that securely enable communication and / or data exchange between applications registered with different developers (e.g., account application 113 and one of the other applications 114, and / or any two of the other applications 114).

[0017] FIG. 1B illustrates an embodiment in which application 114-1 receives a request to communicate with account application 113. For example, application 114-1 may be an application registered with a merchant. In such an example, a user may select one or more items to purchase via application 114-1. During the checkout process, application 114-1 may provide the user with the option to provide payment and / or personal information using account application 113. The user may then accept the option, thereby directing application 114-1 to communicate with account application 113 to receive data. In response to the request, application 114-1 may generate URL 125. URL 125 may be directed to account application 113. URL 125 may further include a parameter indicating that application 114-1 generated URL 125. URL 125 may be a universal link or any type of URL. The parameter may be any identifier suitable for uniquely identifying application 114-1, such as a unique identifier, a token, or a URL string. For example, URL 125 may be "capitalone: / / ?appid=merchantapp," where the "capitalone: / / " portion points to an instance of account application 113 on device 110 and "appid=merchantapp" is an identifier for application 114-1 generating URL 125.

[0018] In some embodiments, application 114-1 uses an application programming interface (API) of OS 112 to determine whether URL 125 is valid (e.g., to indicate whether the application targeted by URL 125 is installed on device 110). For example, OS 112 may provide a “canOpenURL” API that indicates whether a URL provided as input to the API is valid. Typically, an application developer may register one or more URLs with a provider of OS 112 when submitting an application to an application store. Doing so may facilitate verification by the API provided by the OS. In such an example, application 114-1 may provide URL 125 (and / or a portion of URL 125 directed to account application 113) to the API, which indicates whether account application 113 is installed on the device and can be opened using URL 125. Doing so enhances security by verifying that the correct application is installed and by preventing attempts by third parties to provide applications masquerading as account application 113. In the latter case, third-party applications may not register with the URLs provided as input to the API, thereby preventing masquerading attempts. In such an example, if the API returns an invalid response, accessing URL 125 may cause OS 112 to launch a web browser directed to a website associated with the entity registering account application 113 (e.g., a financial institution's website and / or an application store from which account application 113 may be downloaded).

[0019] Next, application 114-1 and / or OS 112 may access, open, or otherwise follow URL 125, thereby opening account application 113 in the foreground of OS 112. FIG. 1C illustrates an embodiment in which account application 113 is opened in response to accessing URL 125. In response, account application 113 may optionally receive authentication credentials for the account. In some embodiments, account application 113 determines whether the user's last provided authentication credentials exceed a threshold (e.g., 30 days, 60 days, etc.). For example, if the user has not provided a login / password for 75 days and the threshold is 30 days, account application 113 may request that the user provide a login / password, biometric credentials, etc. Additionally and / or alternatively (and as described in more detail with reference to FIGS. 2A-2D ), account application 113 may optionally proactively initiate verification of encrypted data generated by the contactless card.

[0020] The account application 113 may then start a local server 115 to run on the mobile device 110. The local server 115 may be any type of server, such as a TCP / IP server, an HTTP server, a Hypertext Transfer Protocol Secure (HTTPS) server, a streaming server, etc. However, only local applications (e.g., applications running on the mobile device 110) may access the local server 115. The OS 112 may restrict attempts to access the local server 115 from external sources (e.g., over a network). The account application 113 may start the local server 115 on a specific port number. The account application 113 may select the port according to any feasible selection scheme, such as randomly generating a port number, using a predetermined port number, etc.

[0021] 1D illustrates an embodiment in which account application 113 generates URL 126. URL 126 may be directed to application 114-1 and may include a port number of local server 115. For example, URL 126 may be "merchantapp: / / ?port=2080," where the "merchantapp: / / " portion is directed to application 114-1 and the "port=2080" portion indicates that local server 115 is open on port 2080. Account application 113 determines the portion of URL 126 directed to application 114-1 based on the identifier of application 114-1 specified in URL 125. In some embodiments, similar to URL 125, account application 113 makes an API call to OS 112 to determine whether URL 126 is valid before accessing URL 126. More generally, URL 126 may comprise any parameters sufficient to establish a connection to local server 115 on the selected port. In some embodiments, account application 113 may encrypt the port number or any additional parameters of URL 126, for example, using an encryption or public key. In such embodiments, application 114-1 may decrypt the port number and / or additional parameters, for example, using a corresponding decryption key, e.g., a private key. Additionally, any URL parameters exchanged between applications may be encrypted for added security.

[0022] Additionally, account application 113 may register local server 115 and / or account application 113 as background tasks with OS 112. Doing so allows local server 115 and / or account application 113 to continue running in the background of OS 112 while other applications run in the foreground of OS 112. Although local server 115 is started, in some embodiments, account application 113 may start local server 115 after generating URL 126.

[0023] FIG. 1E illustrates an embodiment in which account application 113 and / or OS 112 open URL 126 to open application 114-1, while local server 115 and / or account application 113 continue to run in the background of OS 112. In response to receiving URL 126, application 114-1 may identify the port number of local server 115 specified as a parameter of URL 126. As mentioned, if URL 126 contains encrypted data, application 114-1 may decrypt the encrypted port number (or any other relevant parameters) of URL 126. Application 114-1 may then request to establish a connection with local server 115 on the specified port, for example, a local loopback IP address (e.g., 127.0.0.1 for IPv4, ::1 for IPv6, etc.), a “localhost” hostname, or other predefined local IP address. The connection may be established using a protocol supported by local server 115 (e.g., TCP / IP connection establishment, etc.). In some embodiments, application 114-1 provides a token and / or digital certificate (or signature) as part of a connection request to local server 115-1. Local server 115 may determine whether the token is valid and / or expected (e.g., the token identifies application 114-1 that may match the token received as a parameter of URL 125). Similarly, local server 115 may verify the certificate using a public key associated with application 114-1. If the token and / or certificate are valid, local server 115 may establish a connection with application 114-1. If not, local server 115 may deny the connection request.

[0024] FIG. 1E illustrates an embodiment in which a connection between application 114-1 and local server 115 is established (local server 115 continues to run as a background task of OS 112). As shown, account application 113 may include data 117. Data 117 may be any type of data stored locally on device 110. Data 117 may include remotely stored data received by account application 113. For example, data 117 may include a payment card number, expiration date, CVV, address, first name, last name, email address, phone number, or any other attribute of an account with account application 113. Advantageously, local server 115 may provide data 117 to application 114-1 while local server 115 runs in the background of OS 112 and application 114-1 runs in the foreground of OS 112. In some embodiments, local server 115 may encrypt data 117. In such embodiments, application 114-1 may decrypt data 117 upon receipt.

[0025] FIG. 1F illustrates an embodiment in which application 114-1 receives data 117 from local server 115. As noted, in some embodiments, application 114-1 may decrypt data 117 if it is encrypted. Application 114-1 may identify data 117 and determine that data 117 includes one or more attributes of the user and / or associated account. Application 114-1 may then pre-populate one or more form fields with data 117, allowing the user to complete checkout using the data securely received from local server 115. As noted, doing so allows data 117 to be securely transferred between applications on the same device 110. Furthermore, by requiring only a minimal set of requirements (e.g., API, minimal SDK, etc.), application 114-1 can receive any amount of data from local server 115. The size of application 114-1 would otherwise be much larger to support the disclosed functionality. Furthermore, the embodiments disclosed herein enable applications 114-1 and 114-3 to exchange data even if the applications are registered with different developers.

[0026] FIG. 2A illustrates a schematic diagram of an exemplary system 200 consistent with disclosed embodiments. As shown, the system 200 includes one or more contactless cards 201, one or more of the mobile computing devices 110, and an authentication server 220. The contactless card 201 represents any type of payment card, such as a credit card, a debit card, an ATM card, or a gift card. The contactless card 201 may include one or more communication interfaces 209, such as a radio frequency identification (RFID) chip, configured to communicate with the computing device 110 via NFC, the EMV standard, or other short-range protocols for wireless communication. While NFC is used as an exemplary communication protocol, the present disclosure is equally applicable to other types of communication, such as the EMV standard, Bluetooth, and / or Wi-Fi. The authentication server 220 represents any type of computing device, such as a server, a workstation, a computing cluster, a cloud computing platform, a virtualized computing system, or the like.

[0027] As shown, contactless card memory 202 includes applet 203, counter 204, private key 205, diversified key 206, and unique customer identifier (ID) 207. Applet 203 is executable code configured to perform the operations described herein. Counter 204, private key 205, diversified key 206, and customer ID 207 are used to provide security in system 200, as described in more detail below.

[0028] As mentioned, contactless card 201 may be used to enhance security of local server 115 and mobile device 110. For example, a user of device 110 may desire to use data from account application 113 in application 114-1. Accordingly, FIG. 2A illustrates an embodiment in which account application 114-1 has generated and accessed URL 125 directed to account application 113. OS 112 may then open account application 113, which may receive authentication credentials for the user's account. Account application 113 may then instruct the user to tap contactless card 201 to device 110. Generally, when contactless card 201 is brought within communication range of communication interface 218 (e.g., a card reader / writer) of device 110, applet 203 of contactless card 201 may generate encrypted data as part of the authentication process required to activate contactless card 201. To enable NFC data transfer between the contactless card 201 and the mobile device 110, the account application 113 may communicate with the contactless card 201 when the contactless card 201 is sufficiently close to the communication interface 218 of the mobile device 110. The communication interface 218 may be configured to read from and / or communicate with the communication interface 209 of the contactless card 201 (e.g., via NFC, Bluetooth, RFID, etc.). Thus, an exemplary communication interface 218 includes an NFC communication module, a Bluetooth communication module, and / or an RFID communication module.

[0029] As mentioned, system 100 is configured to implement key diversification to protect data, which may be referred to herein as key diversification technology. Generally, server 220 (or other computing device) and contactless card 201 may be provisioned with the same private key 205 (also referred to as a master key or master symmetric key). More specifically, each contactless card 201 is programmed with a unique private key 205 that has a corresponding pair within (or managed by) server 220. For example, when contactless card 201 is manufactured, the unique private key 205 may be stored in memory 202 of contactless card 201. Similarly, the unique private key 205 may be stored in the customer record (or profile) associated with contactless card 201 within account data 224 of server 220 (and / or stored in another secure location, such as hardware security module (HSM) 225). The private key 205 may be kept secret from all parties other than contactless card 201 and server 220, thereby enhancing the security of system 100. In some embodiments, applet 203 of contactless card 201 may encrypt and / or decrypt data (e.g., customer ID 207) using private key 205 and the data as input to an encryption algorithm. For example, encrypting customer ID 207 with private key 205 may result in an encrypted customer ID. Similarly, authentication server 220 may encrypt and / or decrypt data associated with contactless card 201 using the corresponding private key 205.

[0030] In some embodiments, counter 204 and / or private key 205 of contactless card 201 and server 220 may be used in conjunction with counter 204 to enhance security using key diversification. Counter 204 comprises a value that is synchronized between a given contactless card 201 and server 220. Counter value 204 may comprise a number that changes each time data is exchanged between contactless card 201 and server 220 (and / or contactless card 201 and mobile device 110). When preparing to send data (e.g., to server 220 and / or mobile device 110), applet 203 of contactless card 201 may increment counter value 204. Contactless card 201 may then provide private key 205 and counter value 204 as input to an encryption algorithm, which may generate diversified key 206 as output. The encryption algorithm may include an encryption algorithm, a hash-based message authentication code (HMAC) algorithm, a cipher-based message authentication code (CMAC) algorithm, etc. Non-limiting examples of encryption algorithms may include symmetric encryption algorithms such as 3DES or AES128, symmetric HMAC algorithms such as HMAC-SHA-256, and symmetric CMAC algorithms such as AES-CMAC. Examples of key diversification techniques are described in detail in U.S. Patent Application No. 16 / 205,119, filed November 29, 2018. The aforementioned patent application is incorporated herein by reference in its entirety.

[0031] Continuing with the key diversification example, contactless card 201 may encrypt data (e.g., customer ID 207 and / or any other data) using diversified key 206 and the data as inputs to an encryption algorithm. For example, encrypting customer ID 207 with diversified key 206 may result in encrypted customer ID 208. Once generated, applet 203 may transmit encrypted customer ID 208 to mobile device 110, for example, via NFC. Account application 113 may then transmit encrypted customer ID 208 to authentication server 220 via network 230.

[0032] The authentication application 223 may then attempt to authenticate the encrypted data. For example, the authentication application 223 may attempt to decrypt the encrypted customer ID 208 using a copy of the private key 205 stored by the server 220. In another example, the authentication application 223 may provide the private key 205 and the counter value 204 as inputs to an encryption algorithm, which may generate the diversified key 206 as an output. The resulting diversified key 206 may correspond to the diversified key 206 of the contactless card 201 and may be used to decrypt the encrypted customer ID 208. Thus, the authentication application 223 may successfully decrypt the encrypted data, thereby verifying the encrypted customer ID 208. For example, as noted, the customer ID 207 may be used to generate the encrypted customer ID 208. In such an example, the authentication application 223 may decrypt the encrypted customer ID 208 using the private key 205 of the authentication server 220. If the decryption results in a customer ID 207 associated with an account in account data 224, authentication application 223 verifies the encrypted customer ID 208. Further, authentication application 223 may instruct VAN generator 226 to generate a virtual account number, expiration date, and CVV for the account corresponding to customer ID 207. VAN generator 226 may then store the generated VAN, expiration date, and CVV instructions in a record associated with the account in account data 224. The virtual account number is a temporary (e.g., one-time use) number that may be generated using a random number generator or other randomizing function. In some embodiments, the VAN may be linked to a contactless card 201 that is tapped to device 110 to generate the encrypted customer ID 208.In other embodiments, if a user authenticates their account using valid account credentials in the account application 113, the VAN may be linked to another contactless card 201 associated with the authenticated account (e.g., the authenticated account holder has more than one card and taps a first card 201 to the device 110 to generate a VAN linked to a second card 201, and taps the first card 201 to the device 110 to generate a VAN linked to the second card 201). Using a VAN rather than the actual account number (e.g., the account number printed on the contactless card 201) has the advantage that the actual account number remains secure.

[0033] If the authentication application 223 cannot decrypt the encrypted customer ID 208 to obtain the expected result (e.g., the customer ID 207 of the account associated with the contactless card 201), the authentication application 223 does not verify the encrypted customer ID 208 and the VAN generator 226 does not generate a VAN. Due to the failed verification, the authentication application 223 may return an error to the account application 113, which may refrain from starting the local server 115.

[0034] Regardless of the decryption technique used, authentication application 223 may successfully decrypt encrypted customer ID 208 and thereby verify encrypted customer ID 207 (e.g., by comparing the resulting customer ID 208 to the customer ID stored in account data 224 and / or based on an indication of successful decryption using keys 205 and / or 206). While keys 205, 206 are shown as stored in memory 222, keys 205, 206 may be stored elsewhere, such as in secure element and / or HSM 225. In such an embodiment, secure element and / or HSM 225 may use keys 205 and / or 206 and a cryptographic function to decrypt encrypted customer ID 207. Similarly, secure element and / or HSM 225 may generate diversified key 206 based on private key 205 and counter value 204, as described above. While shown as hosted on the same system, authentication application 223 and VAN generator 226 may be hosted on different systems. In some embodiments, the orchestration layer (OL) may arrange for the verification of encrypted data by authentication application 223 and / or the generation of a VAN by VAN generator 226.

[0035] 2B illustrates an embodiment in which authentication application 223 verifies encrypted customer ID 208. As shown, authentication application 223 may return instructions for verification 210 to account application 113. Similarly, VAN generator 226 may send VAN 227 (including the expiration date and CVV) to account application 113. In some embodiments, VAN 227 is sent along with verification 210. In other embodiments, VAN 227 is sent separately from verification 210. Based on receiving verification 210 and / or VAN 227, account application 113 may decide to initiate local server 115. In some embodiments, VAN 227 is generated and / or sent after local server 115 is initiated. Additionally, account application 113 may receive other data from server 220 associated with the account in account data 224, such as first name, last name, phone number, email address, billing address, and / or shipping address.

[0036] 2C illustrates an embodiment in which account application 113 starts local server 115 on device 110. As shown, local server 115 includes VAN 227. Account application 113 may then generate a URL that includes the port number of local server 115, which is directed to requesting application 114-1. The URL then opens requesting application 114-1, allowing application 114-1 to establish a connection with local server 115 running in the background of OS 112.

[0037] 2D illustrates an embodiment in which the other application 114-1 has established a connection with the local server 115. As shown, the local server 115 may provide the VAN 227 (including the expiration date and CVV) to the other application 114-1. The other application 114-1 may then auto-populate the VAN 227 into a form presented by the other application 114-1, such as a payment form. As described above, the local server 115 may further provide other account-related details, such as a billing address associated with the VAN 227, a billing address for the account in the account data 224, a shipping address from the account data 224, the name of the account holder, etc. In doing so, the other application 114-1 can auto-populate one or more form fields with the relevant data to automate at least a portion of the checkout process (or other processes or workflows of the other application 114-1). More generally, the account application 113, including the local server 115, provides an application-based point-of-sale system accessible to other applications within the mobile operating system 112, although these applications may be registered with different entities within the OS 112.

[0038] FIG. 3A is a schematic diagram 300 illustrating an example embodiment that enables communication between applications within a mobile operating system. As shown, FIG. 3A includes a mobile device 110 executing an example application 114. For example, application 114 may be an application that allows a user to place an order and provide payment information or an order. As shown, a graphical user interface (GUI) of application 114 includes a payment form having fields 301-305, where field 301 is a name field, field 302 is an account number field, field 303 is an expiration date field, field 304 is a CVV field, and field 305 is an address field. As shown, application 114 may output a notification 309 specifying that the user selects notification 309 to complete checkout using a virtual account number from a banking application, such as account application 113.

[0039] 3B is a schematic diagram 310 illustrating an embodiment in which the user selects notification 309. In doing so, application 114 may generate a URL 125 to account application 113, where URL 125 includes the identifier of application 114 as a parameter. When opened, URL 125 causes account application 113 to open in the foreground of OS 112. As shown in FIG. 3B, account application 113 may prompt the user to provide authentication credentials (not shown) and output a notification 306 specifying that contactless card 201 be tapped to mobile device 110 to proceed with authentication. When contactless card 201 is tapped to mobile device 110, account application 113 sends instructions to contactless card 201 via communication interface 218 to generate encrypted data (e.g., encrypted customer ID 208) as described above and send the encrypted data to account application 113. Upon receipt, account application 113 may send the encrypted data to server 220, where authentication application 223 verifies the encrypted data using key diversification as described above. Authentication application 223 may then send a verification instruction to account application 113. Furthermore, if the encrypted data is verified, authentication application 223 may instruct VAN generator 226 to generate a VAN, an expiration date for the VAN, and an account number for the VAN. VAN generator 226 may then send the VAN, expiration date, and CVV to account application 113. Furthermore, server 220 may send additional data to account application 113, such as the account holder's name, billing address, shipping address, phone number, email address, etc.

[0040] When the account application 113 receives an indication specifying that the server 220 has verified the encrypted data, the account application 113 may start the local server 115 on the device 110. The account application 113 may then generate a URL 126 directed to the requesting application 114, where the parameters of the URL 126 include the port number of the local server 115. The application 114 may then connect to the local server 115 as described above and request relevant data such as, for example, the name, address, VAN, expiration date, and CVV.

[0041] FIG. 3C is a schematic diagram 320 illustrating an embodiment in which application 114 receives requested data from local server 115. Application 114 may include an SDK or API that enables application 114 to request and / or receive data and parse the received data. As shown, application 114 may auto-populate the user's name into name field 301, a virtual account number into account number field 302, an expiration date into expiration date field 303, a CVV into CVV field 304, and an address into address field 305. The user may then complete the purchase using button 311. Doing so may complete the purchase. Additionally, the data entered into fields 301-305 may be stored in a user profile associated with application 114.

[0042] The operation of the disclosed embodiments may be further described with reference to the following figures. Some figures may include logic flows. While such figures presented herein may include specific logic flows, it can be understood that the logic flows merely provide examples of how the general functionality as described herein may be implemented. Furthermore, a given logic flow does not necessarily have to be executed in the order presented, unless otherwise specified. Furthermore, a given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. In this context, the embodiments are not limited.

[0043] 4 illustrates one embodiment of a logic flow 400. The logic flow 400 may represent some or all of the operations performed by one or more embodiments described herein. For example, the logic flow 400 may include some or all of the operations for providing an application-based point of sale system in a mobile operating system. The embodiments are not limited in this context.

[0044] As shown, logic flow 400 begins at block 405, in which device 110 outputs a first application in the foreground of mobile OS 112. For example, the first application may be application 114-1, which may be an application provided by a merchant. At block 410, the first application may receive an instruction specifying to receive data from a second application. The second application may be account application 113. For example, while attempting to order groceries using the merchant application, a user may specify to pay for the groceries using a virtual account number from account application 113. At block 415, the first application generates a first URL directed to the second application. The first URL may include a unique identifier of the first application as a parameter.

[0045] At block 420, the OS 112 authorizes access to the first URL, thereby opening a second application (e.g., account application 113) in the foreground of the OS 112. At block 425, the second application may receive account authentication credentials and / or encrypted data from the contactless card 201. For example, the user may provide biometric credentials and tap the contactless card 201 to the device 110, which may cause the card 201 to generate and transmit encrypted data. The second application may then transmit the encrypted data to the authentication server 220. Once the encrypted data is verified, the server 220 may generate a VAN, expiration date, and CVV for the account. At block 430, the second application receives verification of the VAN, expiration date, CVV, and encrypted data from the server 220. At block 435, the second application creates a local server 115 on the mobile device 110 at a specified port.

[0046] At block 440, the second application generates a second URL. The second URL may be directed to the first application. A parameter of the second URL may include a port number of the local server 115. At block 445, the second application registers the local server 115 and / or the second application as a background task with the OS 112, thereby allowing the local server 115 and / or the second application to run in the background of the OS 112 for a period of time. In some embodiments, the second application encrypts the parameter of the second URL. At block 450, the second URL is accessed to open the first application in the foreground of the OS 112, while the local server 115 and / or the second application continue to run in the background of the OS 112. The first application may decrypt the parameter of the second URL (if encrypted).

[0047] At block 455, the first application establishes a connection with the local server 115. At block 460, the first application requests and receives data comprising the VAN, expiration date, and CVV from the local server 115. If encrypted, the first application may decrypt the received VAN, expiration date, and CVV. At block 465, the first application processes the received data. For example, the application 114 may auto-fill a payment form with the VAN, expiration date, CVV, address information, first name, and last name. The user may then complete a grocery purchase using the auto-filled payment information at the merchant application 114.

[0048] 5 illustrates one embodiment of a logic flow 500. The logic flow 500 may represent some or all of the operations performed by one or more embodiments described herein. For example, the logic flow 500 may include some or all of the operations for providing an application-based point of sale system in a mobile operating system. The embodiments are not limited in this context.

[0049] As shown, logic flow 500 begins at block 505, where a user brings contactless card 201 within communication range of mobile device 110 (e.g., using a tap gesture), causing contactless card 201 to generate and transmit encrypted data (e.g., encrypted customer ID 208). At block 510, applet 203 on contactless card 201 generates diversified key 206 by encrypting counter value 204 and master key 205 stored in contactless card memory 202 using an encryption algorithm. In some embodiments, applet 203 may increment counter 204 before encryption. At block 515, contactless card 201 encrypts data (e.g., customer identifier 207) using diversified key 206 and the encryption algorithm to generate encrypted data (e.g., encrypted customer ID 208).

[0050] At block 520, contactless card 201 may send the encrypted data to account application 113 of mobile device 110, for example, using NFC. At block 525, account application 113 of mobile device 110 may send the data received from contactless card 201 to authentication application 223 of server 220. At block 530, authentication application 223 of server 220 may use private key 205 and counter value 204 as inputs to an encryption algorithm to generate diversified key 206. In one embodiment, authentication application 223 increments counter value 204 of server 220 to synchronize it with the counter value 204 in the memory of contactless card 201.

[0051] At block 535, the authentication application 223 uses the diversified key 206 to decrypt the encrypted customer ID 208 received from the contactless card 201 via the mobile device 110. In doing so, at least the customer ID 207 may be obtained. By obtaining the customer ID 207, the authentication application 223 may verify the data received from the contactless card 201 at block 540. For example, the authentication application 223 may compare the customer ID 207 with the customer identifier of the associated account in the account data 224 and verify the data based on a match. At block 545, the VAN generator 226 generates a VAN, an expiration date, and a CVV based on the verification of the encrypted data at block 540.

[0052] At block 550, the server 220 may send an instruction to the account application 113 specifying that the VAN, expiration date, CVV, and encrypted data have been verified. In some embodiments, no verification instruction is sent. In such embodiments, the transmission of the VAN, expiration date, and CVV (and / or any other account-related data) serves as an indication that the encrypted data has been verified. At block 555, the account application 113 may initiate the local server 115. In doing so, the local server 115 can act as a point-of-sale application to other applications running on the mobile device 110, for example, by providing the VAN and related data to complete a purchase in the other application.

[0053] FIG. 6A illustrates a contactless card 201, which may comprise a payment card such as a credit card, debit card, and / or gift card. As shown, the contactless card 201 may be issued by a service provider 602, which displays the card's name on the front or back. In some examples, the contactless card 201 may comprise, but is not limited to, an identification card unrelated to a payment card. In some examples, the payment card may comprise a dual-interface contactless payment card. The contactless card 201 may comprise a substrate 610, which may include a single layer or one or more laminated layers composed of plastic, metal, and other materials. Exemplary substrate materials include polyvinyl chloride, polyvinyl chloride acetate, acrylonitrile butadiene styrene, polycarbonate, polyester, anodized titanium oxide, palladium, gold, carbon, paper, and biodegradable materials. In some examples, the contactless card 201 may have physical characteristics conforming to the ID-1 format of the ISO / IEC 7810 standard; otherwise, the contactless card may conform to the ISO / IEC 14443 standard. However, it should be understood that contactless cards 201 according to the present disclosure may have different characteristics and the present disclosure does not require contactless cards to be implemented as payment cards.

[0054] The contactless card 201 may also include identification information 615 displayed on the front and / or back of the card, and a contact pad 620. The contact pad 620 may be configured to establish contact with other communication devices, such as the mobile device 110, a user device, a smartphone, a laptop, a desktop, or a tablet computer. The contactless card 201 may also include processing circuitry, an antenna, and other components not shown in FIG. 6A . These components may be located behind the contact pad 620 or elsewhere on the substrate 610. The contactless card 201 may also include a magnetic strip or tape (not shown in FIG. 6A ) that may be located on the back of the card.

[0055] 6B, contact pad 620 of contactless card 201 may include processing circuitry 625 for storing and processing information, including microprocessor 630 and memory 202. It will be understood that processing circuitry 625 may include additional components, including processors, memory, error and parity / CRC checkers, data encoders, anti-collision algorithms, controllers, command decoders, security primitives, and tamper-proof hardware, as needed to perform the functions described herein.

[0056] The memory 202 may be read-only memory, write-once read-multiple memory, or read / write memory, such as RAM, ROM, and EEPROM, and the contactless card 201 may include one or more of these memories. Read-only memory may be read-only or one-time programmable at the factory. One-time programming allows it to be written once and read many times. Write-once / read-multiple memory may be programmed at some point after the memory chip leaves the factory. Once programmed, the memory may not be rewritten, but it may be read many times. Read / write memory may be programmed and reprogrammed many times after leaving the factory. Read / write memory may be read many times after leaving the factory.

[0057] Memory 202 may be configured to store one or more applets 203, counter value 204, secret key 205, diversified key 206, and one or more customer IDs 207. One or more applets 203 may comprise one or more software applications configured to run on one or more contactless cards, such as a Java Card applet. However, it is understood that applet 203 is not limited to a Java Card applet and may instead be any software application capable of operating on a contactless card or other device with limited memory. Customer ID 207 may comprise a unique alphanumeric identifier assigned to a user of contactless card 201, which may distinguish the contactless card user from other contactless card users. In some examples, customer ID 207 may identify both the customer and the account assigned to that customer, and may further identify the contactless card associated with the customer's account. In some embodiments, applet 203 may use customer ID 207 as input to an encryption algorithm using keys 205 and / or 206 to encrypt customer ID 207. Similarly, applet 203 may construct a URL that includes encrypted customer ID 207 as a parameter.

[0058] Although the processor and memory elements of the foregoing exemplary embodiments are described with reference to contact pads, the present disclosure is not limited thereto, and it will be understood that these elements may be implemented external to, or completely separate from, the pads 620, or as additional elements in addition to the processor 630 and memory 202 elements located within the contact pads 620.

[0059] In some examples, the contactless card 201 may include one or more antennas 655. The one or more antennas 655 may be disposed within the contactless card 201 and around the processing circuit 625 of the contact pad 620. For example, the one or more antennas 655 may be integrated with the processing circuit 625, or the one or more antennas 655 may be used with an external booster coil. As another example, the one or more antennas 655 may be external to the contact pad 620 and the processing circuit 625.

[0060] In one embodiment, the coil of the contactless card 201 may function as the secondary of an air-core transformer. The terminal may communicate with the contactless card 201 by disconnecting power or amplitude modulation. The contactless card 201 may infer data transmitted from the terminal using gaps in the contactless card's power connection, which may be maintained functionally through one or more capacitors. The contactless card 201 may return communication by switching the load on the contactless card's coil or load modulation. Load modulation may be detected in the terminal's coil through interference. More generally, using the antenna 655, processing circuitry 625, and / or memory 202, the contactless card 201 provides a communication interface for communicating via NFC, Bluetooth, and / or Wi-Fi communications.

[0061] As described above, contactless card 201 may be built on a software platform operable on a memory-limited smart card or other device, such as a Java Card, and one or more applications or applets may be securely executed. The applets may be added to the contactless card to provide one-time passwords (OTPs) for multi-factor authentication (MFA) in various mobile application-based use cases. The applets may be configured to respond to one or more requests, such as near-field wireless data exchange requests, from a reader, such as a mobile NFC reader (e.g., communication interface 218 of device 110), and generate an NDEF message comprising a cryptographically secure OTP (e.g., an encrypted customer ID) encoded as an NDEF text tag.

[0062] 7 illustrates an embodiment of an exemplary computing architecture 700 comprising a computing system 702 that may be suitable for implementing various embodiments as described above. In various embodiments, computing architecture 700 may comprise or be implemented as part of an electronic device. In some embodiments, computing architecture 700 may represent a system implementing one or more components of systems 100 and / or 200, for example. In some embodiments, computing system 702 may represent contactless card 201, mobile device 110, and authentication server 220, for example. The embodiments are not limited in this context. More generally, computing architecture 700 is configured to implement all logic, applications, systems, methods, apparatus, and functions described herein with reference to FIGS. 1-6B.

[0063] The terms “system,” “component,” and “module,” as used in this application, are intended to refer to any computer-related entity: hardware, a combination of hardware and software, software, or software in execution, an example of which is provided by exemplary computing architecture 700. For example, a component may be, but is not limited to, a process running on a computer processor, a computer processor, a hard disk drive, multiple storage drives (optical and / or magnetic storage media), an object, an executable, a thread of execution, a program, and / or a computer. By way of example, both an application running on a server and the server may be a component. One or more components may reside within a process and / or thread of execution, and components may be localized on one computer and / or distributed among two or more computers. Furthermore, components may be communicatively coupled to each other by various types of communication media to coordinate their operations. Coordination may include unidirectional or bidirectional exchange of information. For example, components may communicate information in the form of signals communicated over the communication media. Information may be embodied as signals assigned to various signal lines. In such assignments, each message is a signal. However, further embodiments may alternatively use data messages. Such data messages may be transmitted over a variety of connections, examples of which include parallel interfaces, serial interfaces, and bus interfaces.

[0064] Computing system 702 includes various typical computing elements, such as one or more processors, multi-core processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices, video cards, audio cards, multimedia input / output (I / O) components, power supplies, etc. However, embodiments are not limited to implementation by computing system 702.

[0065] 7, computing system 702 includes a processor 704, a system memory 706, and a system bus 708. Processor 704 may be any of a variety of commercially available computer processors, including, but not limited to, AMD® Athlon®, Duron®, and Opteron® processors, ARM® application, embedded, and secure processors, IBM® and Motorola® DragonBall® and PowerPC® processors, IBM and Sony® Cell processors, Intel® Celeron®, Core®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, and XScale® processors and similar processors. Dual microprocessors, multi-core processors, and other multi-processor architectures may also be used as processor 704.

[0066] The system bus 708 provides an interface from the system memory 706 to system components including, but not limited to, the processor 704. The system bus 708 may be any of several types of bus structures that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. Interface adapters may connect to the system bus 708 through a slot architecture. Examples of slot architectures include, but are not limited to, Accelerated Graphics Port (AGP), CardBus, (Extended) Industry Standard Architecture ((E)ISA), MicroChannel Architecture (MCA), NuBus, Peripheral Component Interconnect (Expansion) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA), etc.

[0067] The system memory 706 may include various types of computer-readable storage media in the form of one or more high-speed memory units, such as read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), double data rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory (e.g., one or more flash arrays), polymer memory such as ferroelectric polymer memory, ovonic memory, phase-change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, arrays of devices such as redundant array of independent disks (RAID) drives, solid-state memory devices (e.g., USB memory, solid-state drive (SSD)), and other types of storage media suitable for storing information. In the illustrated embodiment shown in FIG. 7, the system memory 706 may include non-volatile memory 710 and / or volatile memory 712. The non-volatile memory 710 may store a basic input / output system (BIOS).

[0068] Computing system 702 may include various types of computer-readable storage media in the form of one or more low-speed memory units, including an internal (or external) hard disk drive (HDD) 714, a magnetic floppy disk drive (FDD) 716 that reads from or writes to a removable magnetic disk 718, and an optical disk drive 720 that reads from or writes to a removable optical disk 722 (e.g., a CD-ROM or DVD). HDD 714, FDD 716, and optical disk drive 720 may be connected to system bus 708 by an HDD interface 724, an FDD interface 726, and an optical drive interface 728, respectively. HDD interface 724 for external drive implementations may include at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Computing system 702 is generally configured to implement all of the logic, systems, methods, devices, and functions described herein with reference to FIGS. 1-6B.

[0069] The drives and associated computer-readable media provide volatile and / or nonvolatile storage of data, data structures, computer-readable instructions, computer-executable instructions, etc. For example, a number of program modules may be stored on the drives and memory units 710, 712, including an operating system 730, one or more application programs 732, other program modules 734, and program data 736. In one embodiment, the one or more application programs 732, other program modules 734, and program data 736 may include, for example, various applications and / or components of the systems 100, 200, such as applet 203, counter 204, private key 205, diversified key 206, customer ID 207, operating system 112, account application 113, other applications 114, authentication application 223, account data 224, and / or encrypted customer ID 208.

[0070] A user may enter commands and information into the computing system 702 through one or more wired / wireless input devices, for example, a keyboard 738 and a pointing device such as a mouse 740. Other input devices may include a microphone, infrared (IR) remote control, radio frequency (RF) remote control, game pad, stylus pen, card reader, dongle, fingerprint reader, grab, graphics tablet, joystick, keyboard, retina reader, touch screen (e.g., capacitive, resistive, etc.), trackball, track pad, sensor, stylus, etc. These and other input devices are often connected to the processor 704 through an input device interface 742 coupled to the system bus 708, but may be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc.

[0071] A monitor 744 or other type of display device is also connected to the system bus 708 via an interface, such as a video adapter 746. The monitor 744 may be internal or external to the computing system 702. In addition to the monitor 744, computers typically include other peripheral output devices, such as speakers, printers, etc.

[0072] The computing system 702 may operate in a networked environment using logical connections via wired and / or wireless communications to one or more remote computers, such as a remote computer 748. The remote computer 748 may be a workstation, a server computer, a router, a personal computer, a portable computer, a microprocessor-based entertainment device, a peer device, or other common network node and typically includes many or all of the elements described relative to the computing system 702, although for simplicity, only a memory / storage device 750 is shown. The logical connections shown include wired / wireless connections to a local area network (LAN) 752 and / or larger networks, e.g., a wide area network (WAN) 754. Such LAN and WAN networking environments are commonplace in offices and businesses, facilitating enterprise-wide computer networks such as intranets. All of these may connect to a global communications network, e.g., the Internet. In an embodiment, the network 230 of FIG. 2 is one or more of the LAN 752 and the WAN 754.

[0073] When used in a LAN networking environment, the computing system 702 is connected to the LAN 752 through a wired and / or wireless communication network interface or adapter 756. The adapter 756 may facilitate wired and / or wireless communication to the LAN 752, which may include a wireless access point disposed thereon for communicating with the wireless functionality of the adapter 756.

[0074] When used in a WAN networking environment, the computing system 702 may include a modem 758 or have other means for establishing communications over the WAN 754, such as connected to a communications server on the WAN 754 or via the Internet. The modem 758 may be internal or external, a wired and / or wireless device, and connects to the system bus 708 via the input device interface 742. In a networked environment, program modules depicted relative to the computing system 702, or portions thereof, may be stored in the remote memory / storage device 750. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between computers may be used.

[0075] The computing system 702 is operable to communicate with wired and wireless devices or entities using the IEEE 802 family of standards, such as wireless devices operatively arranged for wireless communication (e.g., IEEE 802.16 wireless modulation techniques). This includes at least Wi-Fi (or Wireless Fidelity), WiMax, Bluetooth® wireless technologies, and the like. Thus, communication can be in a predefined structure, similar to a traditional network, or simply ad hoc communication between at least two devices. Wi-Fi networks use radio technologies called IEEE 802.11x (a, b, g, n, etc.) to provide secure, reliable, and high-speed wireless connectivity. Wi-Fi networks can be used to connect computers to each other, to the Internet, or to wired networks (using IEEE 802.3-related media and functions).

[0076] Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include a processor, a microprocessor, a circuit, a circuit element (e.g., a transistor, a resistor, a capacitor, an inductor, etc.), an integrated circuit, an application specific integrated circuit (ASIC), a programmable logic device (PLD), a digital signal processor (DSP), a field programmable gate array (FPGA), a logic gate, a register, a semiconductor device, a chip, a microchip, a chipset, etc. Examples of software may include a software component, a program, an application, a computer program, an application program, a system program, a machine program, an operating system software, a middleware, a firmware, a software module, a routine, a subroutine, a function, a method, a procedure, a software interface, an application program interface (API), an instruction set, a computing code, a computer code, a code segment, a computer code segment, a word, a value, a symbol, or any combination thereof. The decision whether an embodiment is implemented using hardware and / or software elements may vary according to any number of factors, such as desired computational speed, power level, heat tolerance, processing cycle budget, input data rate, output data rate, memory resources, data bus speed and other design or performance constraints.

[0077] One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium that represent various logic within a processor, which, when read by a machine, causes the machine to manufacture logic that performs the techniques described herein. Such representations, known as “IP cores,” are stored on tangible machine-readable media and provided to various customers or manufacturing facilities for loading into manufacturing machines that create the logic or processors. Some embodiments may be implemented using, for example, a machine-readable medium or article that may store instructions or sets of instructions that, when executed by the machine, cause the machine to perform methods and / or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, etc., and may be implemented using any suitable combination of hardware and / or software. A machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and / or storage unit, such as memory, removable or non-removable media, erasable or non-erasable media, writable or rewritable media, digital or analog media, hard disk, floppy disk, compact disk read-only memory (CD-ROM), compact disk recordable (CD-R), compact disk rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various digital versatile disks (DVDs), tape, cassette, etc. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, etc., and may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled and / or interpreted programming language.

[0078] The foregoing description of exemplary embodiments has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the disclosure to the precise form disclosed. Many modifications and variations are possible in light of this disclosure. It is intended that the scope of the disclosure be limited not by this detailed description, but by the appended claims. Future applications claiming priority to this application may claim the disclosed subject matter differently and may generally include any set of one or more limitations as variously disclosed or demonstrated herein.

Claims

1. A method of claim 1, comprising: a first application executing on a processor of a mobile device receiving encrypted data from a contactless card; the first application sending the encrypted data to a server for verification; the first application receiving an indication from the server that the encrypted data has been verified; the first application starting a local server at a port based on the received validation; the first application creating a link directed to a second application running on the processor, the parameters of the link comprising the port; the second application receiving data via the port; the second application automatically populating form fields of the second application with data; A method for providing

2. The data received by the second application comprises a virtual account number (VAN), and auto-populating the data comprises auto-populating the VAN into a payment form field of the second application. The method of claim 1.

3. The method of claim 2, further comprising: the first application receiving the VAN from the server after the encrypted data is verified. The method of claim 2.

4. The link is a uniform resource locator (URL). The method of claim 1.

5. The URL parameter comprises an identifier of the second application. The method of claim 4.

6. Generating the link directed to the second application is based on an identifier of the second application received at the URL. The method of claim 5.

7. The method of claim 6, further comprising: the first application registering the local server as a background task with a mobile operating system of the mobile device. The method of claim 1.

8. The method of claim 7, further comprising the second application establishing a connection with the local server at a specified port on a local loopback Internet Protocol (IP) address. The method of claim 1.

9. The method of claim 8, wherein the parameters of the link comprising the port are encrypted by the first application, the method further comprising the second application decrypting the parameters to identify the port. The method of claim 1.

10. The method further comprising the second application providing a token or certificate to the local server and establishing a verified connection before receiving the data over the port. The method of claim 1.

11. The data further comprises at least one of an expiration date, a card verification value (CVV), a name, and an address, and said auto-populating comprises auto-populating at least one of the expiration date, the CVV, the name, or the address into a corresponding form field. The method of claim 1.

12. The first application is a financial institution application and the second application is a merchant application. The method of claim 1.

13. The method further comprising, prior to generating the link directed to the second application, the first application calling an application programming interface (API) of a mobile operating system to verify that the second application is installed on the mobile device. The method of claim 3.

14. A computing device comprising: a processor; and a memory storing instructions that, when executed by the processor, configure the mobile device as follows: The instructions may include: The first application is receiving encrypted data from a contactless card; sending the encrypted data to a server for verification; receiving an indication from the server that the encrypted data has been verified; starting a local server on a port based on the received verification; generating a link to a second application executing on the processor, the link parameters comprising the port; configured to run The second application receiving data from the local server via the port; populating form fields of the second application with the received data; configured to perform Configure it as follows: Computing devices.

15. The data received by the second application comprises a virtual account number (VAN), and auto-populating the data comprises auto-populating a payment form field of the second application with the VAN. The computing device of claim 14.

16. The method of claim 15, further comprising: the first application receiving the VAN from the server after the encrypted data is verified.

16. The computing device of claim 15.

17. The method of claim 16, further comprising: the first application registering the local server as a background task with a mobile operating system of the mobile device; and the local server continuing to run while the second application is running in the foreground. The computing device of claim 14.

18. The method of claim 17, further comprising the second application establishing a connection with the local server at a specified port on a local loopback Internet Protocol (IP) address. The computing device of claim 14.

19. The method of claim 18, wherein the parameters of the link with the port are encrypted by the first application, and the computing device further comprises the second application decrypting the parameters to identify the port. The computing device of claim 14.

20. The data further comprises at least one of an expiration date, a card verification value (CVV), a name, and an address, and said auto-populating comprises auto-populating at least one of the expiration date, the CVV, the name, or the address into a corresponding form field. The computing device of claim 14.