Patent Description:
According to one general aspect, a computer-implemented method according to claim <NUM> is defined.

The beacon signal can be a BLUETOOTH LOW ENERGY (BLE) beacon signal. The vending device identifier can include a uniform resource locator (URL). The vending device identifier can include a text label identifying the vending device.

Receiving the indication of the at least one product available for purchase can include receiving a web page. The purchase token can include a hash value. The hash value can be based on at least one of the vending device identifier; a random number generated by the vending device, the random number being included in the beacon signal; a secret, the secret being known by the vending device and the cloud-based vending service; a current date; a current time; and an identifier of the selected product.

The method can include, prior to receiving the purchase token for the selected product, receiving, from the cloud based vending service, a request to set up an account with the cloud-based vending service and sending, to the cloud-based vending service, account information in response to the request to set up the account. The request to purchase the product can include an indication of an account to be charged for the purchase. The indication of the account to be charged for the purchase can include a session cookie.

The method can include, prior to sending the vending device identifier, receiving, at the computing device, a selection of the vending device from a list of vending devices. The list of vending devices can be ranked based on physical proximity to the computing device.

In another general aspect, a system according to claim <NUM> is provided.

Implementations can include one or more of the following features. For example, the radio transceiver can include a BLUETOOTH LOW ENERGY (BLE) radio transceiver. The purchase token can include a first hash value. Validating the purchase token can include computing a second hash value and comparing the second hash value to the first hash value. The first hash value and the second hash value can both be based on at least one of the identifier of the vending device; a random number generated by the vending device, the random number being included in the beacon signal; a secret, the secret being known by the vending device and the cloud-based vending service; a current time; a current date; and an identifier of the product requested for purchase. Sending the request to purchase the selected product can include sending a session cookie indicating an account to charge for the selected product.

In another general aspect, a computer-implemented according to claim <NUM> is provided.

Implementations can include one or more of the following features. For example, the computing device can be a first computing device, and the method can further include retrieving, from the vending device by a second computing device, the record that the purchase token has been used to purchase the selected product and providing, to the cloud-based vending service by the second computing device, the record that the purchase token has been used to purchase the selected product. The purchase token can include a hash value. The hash value can be based on at least one of the vending device identifier; a random number generated by the vending device, the random number being included in the beacon signal; a secret, the secret being known by the vending device and the cloud-based vending service; a current date; a current time; and an identifier of the selected product. Prior art methods and devices are disclosed in <CIT>, which describes processes for enrolling devices, transmitting credentials, and ensuring secure communication, emphasizing the role of the cloud service in managing and distributing these credentials. The service can generate credentials in multiple formats and allows for real-time credential management, ensuring that credentials are securely stored, transmitted, and utilized across different devices and applications. <CIT> describes a vending system where transaction-specific tokens are generated by a cloud-based server for each purchase. When a user selects a product, the server authorizes the transaction and sends a unique token to the user's mobile application. The mobile application establishes a secure communication channel with the vending machine using a Diffie-Hellman based key exchange or similar method, where the mobile application generates a nonce and shares it with the vending machine. Both the mobile application and the vending machine independently create a key using the UUID, nonce, and a proprietary hash algorithm. The mobile application then sends the token to the vending machine, which verifies it by hashing the shared secret and comparing it with the received token's hash. If the hashes match, the vending machine dispenses the product, confirming the transaction's authenticity. <CIT> involves a point of sale terminal, a user device, and a cloud service working together to secure single transactions using token generation and hashing of shared secrets. The point of sale terminal generates a token that includes a transaction amount and a hash code, then wirelessly transmits this token to the user's mobile device. Upon receiving the token, the user device prompts the user to approve the transaction and sends the transaction amount and hash code back to the cloud-based token server for verification. The token server verifies the hash code against stored transaction data to ensure integrity and, upon successful verification, communicates with a payment server to complete the transaction. The hash code, generated based on shared secrets and transaction details, ensures secure, tamper-proof communication between the user device and the cloud service, ultimately facilitating a secure payment process.

This disclosure is directed to approaches (systems and methods) for vending of products and services (e.g., any number of consumer products or services including drinks, food, electronics, movie rentals, video game rentals, personal care products, entry into a venue, etc.) from vending machines or vending devices using a cloud-based vending service (e.g., Internet-based vending service). In the approaches described herein, the cloud-based vending service can, among other operations, process financial transactions (e.g., in cooperation with a computing device) to facilitate purchase of products and/or services from an associated vending machine (or vending device). The computing device can be a mobile computing device, such as a smartphone or a tablet computer, with access to the cloud-based vending service (e.g., via the Intemet and/or a cellular, or other data network). In other implementations, the computing device can take other forms, such as netbook, laptop computer, etc. In this disclosure, the terms vending machine and vending device are used interchangeably and the configuration of a particular vending machine or vending device will depend on the particular implementation. Further in this disclosure, the terms product(s) and service(s) are also used interchangeably and a particular item being purchased using the approaches described herein will depend on the specific implementation.

In the described implementations, the computing device (mobile computing device) can be used to provide a "proxy" data network (e.g., Intemet connection) for the vending machine, where the vending machine communicates with the mobile computing device using a low power radio transceiver, such as a BLUETOOTH LOW ENERGY (BLE) radio transceiver. In other implementations, other radio transceivers can be used for communication between a vending device and a mobile computing device (or other computing device). Such approaches allow a consumer to make a cloud-based vending purchase from such a vending machine without the vending machine having a dedicated Intemet or data network connection. Such approaches can be financially advantageous for an operator (owner) of the vending machine, as providing a dedicated Intemet (or data network) connection in the vending machine can be cost prohibitive (e.g., due to profit margins of vending machine sales).

<FIG> is a block diagram illustrating a system <NUM> for cloud-based vending, according to an implementation. As shown in <FIG>, the system <NUM> includes a server <NUM>, a data network (network) <NUM> (such as the Intemet or other data network), a mobile computing device <NUM>, a first vending device (vending machine) <NUM> and a second vending device <NUM>. The elements of the system <NUM> are shown by way of example and for purposes of illustration. In other implementations, the system <NUM> can include additional servers, additional data networks, additional mobile computing devices (or other computing devices), and/or additional vending devices (or a single vending device).

As shown in <FIG>, the server <NUM> can include (e.g., implement, host, etc.) a cloud-based vending service <NUM>. The server <NUM> can be configured to communicate with the network <NUM> via a data connection that can include a wireless data connection and/or a wired data connection. In the system <NUM>, the mobile computing device <NUM> can include a web browser <NUM> and a beacon monitor <NUM>. The web browser <NUM> can be used to display information (on a display of the mobile computing device <NUM>) related to making a cloud-based vending purchase from the vending device <NUM>. The mobile computing device <NUM> can be configured to communicate with the network <NUM> (and the cloud-based vending service through the network <NUM>) via a data connection that can include a wireless data connection and/or a wired data connection.

The vending devices <NUM> and <NUM> of the system <NUM> can include, respectively, BLE radios <NUM> and <NUM>, and controllers <NUM> and <NUM>. The BLE radios <NUM> and <NUM> (or other radio transceivers) can be configured to communicate via a wireless data connection (e.g., a local connection) with the mobile computing device <NUM> to facilitate cloud-based vending product purchases from the vending devices <NUM> and <NUM>. For purposes of illustration and clarity, approaches for making cloud-based vending purchases are generally described herein with reference to the vending device <NUM>. In other implementations, cloud-based vending purchases can be similarly conducted with the vending device <NUM> (or other vending devices).

In the system <NUM>, the BLE radio <NUM> (and the BLE radio <NUM>) can transmit (periodically transmit) a beacon signal that includes a URL corresponding with the vending device <NUM> (or the vending device <NUM>). In an implementation, such a beacon signal can be transmitted approximately every <NUM> milliseconds. In other implementations a beacon signal can be transmitted more frequently or less frequently. The URL can also indicate (e.g., include a designation of) the cloud-based vending service <NUM> with which the vending device is associated. For example, with reference to the vending device <NUM>, the URL included in its beacon signal can include an identifier (e.g., a unique identifier) of the vending device <NUM> and a web address for the cloud-based vending service <NUM>. The unique identifier of the vending device (vending device ID) can indicate to the cloud-based vending service, the exact vending device (e.g., the vending device <NUM>) from which a consumer wishes to make a purchase. For instance, the vending device ID can be a text label that is unique with respect to other vending devices that are associated with the cloud-based vending service <NUM>).

The beacon signal can also include a random number (RN) that is generated by the vending device <NUM> (e.g., by the controller <NUM>), where a given RN is used for a single cloud-based vending transaction. The use of such a per-transaction RN prevents reuse of purchase tokens (as described herein) for purchase of products from the vending device <NUM>. Said another way, in the described approaches, the vending device <NUM> can be configured to dispense a single product (or multiple products purchased together) for each per-transaction RN generated by the vending device <NUM> (and an associated purchase token).

The beacon monitor <NUM> of the mobile computing device <NUM>, when in transmission range of the BLE radio <NUM> (and/or the BLE radio <NUM>), can detect a corresponding beacon signal from the vending device <NUM> (and/or the vending device <NUM>). In response to detecting a beacon signal (or beacon signals), the mobile computing device <NUM> can provide a notification (e.g., on a display of the mobile computing device <NUM>) that a purchase can be made from the vending device <NUM> and/or the vending device <NUM>. In an implementation, the beacon monitor <NUM> can communicate with the web browser <NUM> to indicate detection of one or more beacon signals. In response to this indication from the beacon monitor <NUM>, the web browser <NUM> can display a list of vending devices that are in range (BLE radio transmission range) of the mobile computing device <NUM> (e.g., using their unique text labels). In other implementations, the indication that the mobile computing device <NUM> is in range of the beacon signal of the vending device <NUM> and/or the beacon signal of the vending device <NUM> can be provided in other ways, such as with a user interface of an application corresponding with the cloud-based vending service <NUM>. Such a cloud-based vending service application can be installed and executed (e.g., in response to receiving a beacon signal) on the mobile computing device <NUM>. In still other implementations, the beacon monitor <NUM> can be integrated with the web browser <NUM> on the mobile computing device <NUM>.

In the system <NUM>, in the event the beacon monitor <NUM> detects that the mobile computing device <NUM> is within range of multiple beacon signals (e.g., the beacon signal from the vending device <NUM> and the beacon signal from the vending device <NUM>), the beacon monitor <NUM> (or other component of the mobile computing device <NUM>) can be configured to rank the vending devices <NUM> and <NUM>, such as in a displayed list as discussed above, in order of their physical proximity to the mobile computing device. For instance, vending devices that are closer to the mobile computing device can be ranked higher than vending devices that are further away from (but still in transceiver range of) the mobile computing device <NUM>. In an implementation, such ranking can be determined, by the mobile computing device <NUM>, based on the received signal strengths of the respective beacon signal (e.g., as compared to their transmission signal strengths, which can be indicated in the respective beacon signals). Such a list of vending machines can include their unique text labels (or other vending device IDs), so that a consumer can verify the vending device from which they wish to make a purchase matches a device selected from the list of vending devices on the mobile computing device <NUM> (or other computing device). This approach can assist a consumer in selecting the correct vending device in circumstances where radio signal interference may result in a vending device closest to the mobile computing device <NUM> not being listed first in a list of vending devices that is ranked by received beacon signal strength.

<FIG> is a flowchart illustrating a method <NUM> for cloud-based vending, according to an implementation. For purposes of illustration, the method <NUM> will be described with further reference to the system <NUM> shown in <FIG>. It will be appreciated, however, that the method <NUM> can be implemented in systems having other arrangements. It will also be appreciated that, in some implementations, certain operations of the method <NUM> can be eliminated or modified. Furthermore, the method <NUM> could include operations other than those shown in <FIG>.

At block <NUM>, the method <NUM> includes a vending device, such as the vending device <NUM>, transmitting a beacon signal, such as the beacon signals described herein. For instance, the beacon signal of block <NUM> can include a packet that, in tum, includes a URL for an associated cloud-based vending service, a vending device ID (e.g., a unique text label) and a per transaction RN. As described herein, the beacon signal can be a signal transmitted by a BLE radio transceiver or other appropriate radio transceiver.

At block <NUM>, the method <NUM> can include a computing device, such as the mobile computing device <NUM>, receiving the beacon signal (e.g., at beacon monitor <NUM>) and sending the vending device ID to the URL of the beacon signal (e.g., to the cloud-based vending service <NUM>), such as in response to a user indicating they wish to make a vending purchase. In instances where the mobile computing device <NUM> is within range of multiple vending device beacon signals, a user of the mobile computing device <NUM> can select the particular vending device from which they wish to make a purchase from a list of the multiple vending devices. As described herein, such a list may include unique text labels associated with each vending device that is within radio signal range of the mobile computing device <NUM>. Such a list may be a ranked list of vending devices that are in range, such as a list that is ranked based on received beacon signal strength (e.g., by physical proximity, nearest to farthest, to the mobile computing device <NUM>).

At block <NUM>, the method <NUM> can include the mobile computing device <NUM> receiving an indication of at least one product that is available for purchase from the vending device <NUM>. In one implementation, this indication can be a web page that displays products available for purchase. In other implementations, products available for purchase could be displayed by an application that is associated with the cloud-based vending service <NUM>, where the application is installed and executed on the mobile computing device <NUM>. In still other implementations, other approaches for displaying products that are available for purchase can be used.

At block <NUM>, the method <NUM> can include receiving, at the mobile computing device <NUM>, a selection of a product for purchase from the at least one product of block <NUM> as part of sending a request to purchase the selected product (e.g., in response to receiving the selection) to the cloud-based vending service <NUM>. In other instances, a consumer may select more than one product for purchase and the mobile computing device <NUM> may provide an indication, after the consumer makes the multiple selections, to purchase the multiple products in a single transaction. In an implementation, sending the request to purchase the selected product (or products) may include sending an indication of an account (e.g., a credit card account, bank account, etc.) that is to be charged for the purchase. For instance, a session (browser) cookie that contains such account information can be included as part of the request to purchase.

At block <NUM>, the method <NUM> can include the cloud-based vending service processing the transaction for the selected products or products. For example, the cloud-based vending service <NUM> can charge an account that was indicated in the request to purchase, such as included in a cookie, as discussed above. In other instances, the cloud-based vending service <NUM> may send a request to the mobile computing device <NUM> for payment information (e.g., to be entered by the consumer), such as a credit card number and/or information to establish an account with the cloud-based vending service <NUM>.

Also at block <NUM>, after processing the transaction for the requested purchase, the cloud-based vending service <NUM> can produce and sends a purchase token (e.g., indicating the selected product or products have been paid for) to the mobile computing device <NUM> (e.g., via the network <NUM>). The purchase token may be an encrypted hash value (e.g., a one-way hash value) that is based one or more values related to the request purchase. For instance, the purchase token can be an encrypted hash value (e.g., generated using an SHA-<NUM> algorithm, an MD5 algorithm, and so forth) that is based on at least one of the vending device ID; the per transaction RN associated with the purchase; a secret value that is known only by the vending device and the cloud-based vending service; a current date, a current time; and an identifier of the selected product or products.

After receiving the purchase token at block <NUM>, the mobile computing device <NUM> can, at block <NUM>, send the purchase token to the vending device <NUM>. At block <NUM> the vending device <NUM> can, in response to receiving the purchase, generate a second hash value based on the same set of values and same hashing algorithm as used by the cloud-based vending service <NUM> to generate the purchase token. The vending device <NUM> can then compare the purchase token with the second hash value and, if they match, dispense the product or products (e.g., a physical product or access to a service or venue) associated with the purchase token. In such an approach, the use of an encrypted (one-way) hash prevents the use of fraudulent tokens to obtain products from a vending device, such as the vending device <NUM>. Further, use of a secret value that is known only to the cloud-based vending service <NUM> and the vending device <NUM> can also prevent the use of fraudulent tokens.

The method <NUM>, at block <NUM>, further includes the vending device <NUM> sending an acknowledgement to the mobile computing device <NUM> that the purchase token has been used or, alternatively, the vending device <NUM> retaining a record that the purchase token has been used. If the vending device <NUM> retains a record that the purchase token has been used, that record can be retrieved later, such as by a second computing device (not shown). For instance, when the vending device <NUM> is being serviced (e.g., filled with products) a service person can retrieve records of used purchase tokens. Alternatively, the second computing device can be, for example, a computing device of a second consumer that makes a purchase from the vending device <NUM>. At block <NUM>, the method <NUM> includes either the mobile computing device <NUM> or the second computing device sending the acknowledgment, or retrieved record that the purchase token has been used to the cloud-based vending service <NUM>, which can indicate to the cloud-based vending service <NUM> that the purchase associated with the purchase token has been successfully completed.

According to one general aspect, a computer-implemented method can include receiving, at a computing device, a beacon signal including a vending device identifier and sending, to a cloud-based vending service, the vending device identifier. The method can also include receiving, from the cloud-based vending service, an indication of at least one product available for purchase from the vending device and receiving, at the computing device, an indication of a selected product of the at least one product available for purchase. The method can further include sending, to the cloud based service, a request to purchase the selected product and receiving, from the cloud-based vending service, a purchase token for the selected product. The method can still further include sending, to the vending device, the purchase token and receiving, from the vending device, an acknowledgment that the purchase token has been used to purchase the selected product.

Implementations can include one or more of the following features. For example, the method can include, after receiving the acknowledgment, sending a message to the cloud-based vending service indicating that the purchase token has been used to purchase the selected product. The beacon signal can be a BLUETOOTH LOW ENERGY (BLE) beacon signal. The vending device identifier can include a uniform resource locator (URL). The vending device identifier can include a text label identifying the vending device.

In another general aspect, a system can include a vending device including a radio transceiver configured to transmit a beacon signal including an identifier of the vending device, a cloud-based vending service associated with the vending device and a mobile computing device. The mobile computing device can be configured to receive the beacon signal and to communicate with the cloud-based vending service and the vending device to purchase a product from the vending device and send, to the cloud-based vending service, the identifier of the vending device. The mobile computing device can also be configured to receive, from the cloud-based vending service, an indication of at least one product available for purchase from the vending device; receive an indication of a product selection; and send, to the cloud-based vending service, a request to purchase the selected product. The mobile computing device can also be configured to receive, from the cloud-based vending service, a purchase token for the selected product; send, to the vending device, the purchase token; and receive, from the vending device, an acknowledgment that the purchase token has been used to purchase the selected product. The vending device can be configured to validate the purchase token and dispense the selected product.

In another general aspect, a computer-implemented method can include receiving, at a computing device, a beacon signal including a vending device identifier and sending, to a cloud-based vending service, the vending device identifier. The method can also include receiving, from the cloud-based vending service, an indication of at least one product available for purchase from the vending device and receiving, at the computing device, an indication of a selected product of the at least one product available for purchase. The method can further include sending, to the cloud based service, a request to purchase the selected product and receiving, from the cloud-based vending service, a purchase token for the selected product. The method can still further include sending, to the vending device, the purchase token; processing, by the vending device, the purchase token, the processing including dispensing the selected product; and retaining, at the vending device, a record that the purchase token has been used to purchase the selected product.

Implementations can include one or more of the following features. For example, the computing device can be a first computing device, and the method can further include retrieving, from the vending device by a second computing device, the record that the purchase token has been used to purchase the selected product and providing, to the cloud-based vending service by the second computing device, the record that the purchase token has been used to purchase the selected product. The purchase token can include a hash value. The hash value can be based on at least one of the vending device identifier; a random number generated by the vending device, the random number being included in the beacon signal; a secret, the secret being known by the vending device and the cloud-based vending service; a current date; a current time; and an identifier of the selected product.

<FIG> shows an example of a generic computer device <NUM> and a generic mobile computer device <NUM>, which may be used with the techniques described here. Computing device <NUM> is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Computing device <NUM> is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices.

Thus, for example, expansion memory <NUM> may be provided as a security module for device <NUM>, and may be programmed with instructions that permit secure use of device <NUM>.

Claim 1:
A computer-implemented method comprising:
receiving, at a computing device (<NUM>), a beacon signal including a vending device identifier and a random number generated by a vending device (<NUM>, <NUM>), the random number being for a single transaction;
sending, to a cloud-based vending service (<NUM>), the vending device identifier;
receiving, from the cloud-based vending service (<NUM>), an indication of at least one product available for purchase from the vending device (<NUM>, <NUM>);
receiving, at the computing device (<NUM>), an indication of a selected product of the at least one product available for purchase;
sending, at the computing device (<NUM>) to the cloud based vending service (<NUM>), a request to purchase the selected product, the request including the random number;
receiving, at the computing device (<NUM>) from the cloud-based vending service (<NUM>), a purchase token for the selected product, wherein the purchase token includes a first hash value that is based on the random number;
sending, at the computing device (<NUM>) to the vending device (<NUM>, <NUM>), the purchase token for validation; and
receiving, at the computing device from the vending device (<NUM>, <NUM>), an acknowledgment that the purchase token has been validated and used to purchase the selected product,
the validation including:
generating a second hash value based on the same set of values and same hashing algorithm as used by the cloud-based vending service (<NUM>) to generate the purchase token including the first hash value; and
comparing the purchase token with the second hash value and, if they match, dispensing the selected product or products by the vending device (<NUM>, <NUM>).