ENVIRONMENT AND METHODS FOR ENABLING ELECTRONIC TRANSACTIONS
20220044242 · 2022-02-10
Inventors
- Andrew Kortina (New York, NY, US)
- William Ready (Winnetka, IL, US)
- Dan Manges (Chicago, IL, US)
- John Sturino (Palo Alto, CA, US)
- Juan Benitez, II (Los Gato, CA, US)
Cpc classification
G06Q20/227
PHYSICS
International classification
G06Q20/40
PHYSICS
Abstract
A method includes receiving a request for registered payment options associated with a user computing device, where the request includes an identifier uniquely identifying one of the user computing device and the user. The method includes identifying one or more payment options associated with the device identifier, where each of the one or more payment options is associated with respective payment instrument information. The method includes providing one or more codes, where each code of the one or more codes identifies a respective payment option of the one or more payment options. The method includes receiving a first code of the one or more codes and transaction information. The method includes accessing, based upon the first code, payment instrument information associated with the payment option identified by the first code, and causing the processing of the payment instrument information in relation to a transaction identified by the transaction data.
Claims
1. A computer system comprising: a non-transitory memory storing instructions; and a processor configured to execute instructions to cause the system to: receiving, at the computer system, a request from an application executing on a first computing device associated with a user using a software library of the application provided by a service provider associated with the computer system; determining, by the computer system based on the request, a token that corresponds to a payment funding source registered to the user, wherein the token does not include an underlying identifying primary account number corresponding to a payment funding source for that token; transmitting, by the computer system, the token to the first computing device; receiving, by the computer system, data indicating a selection of the token for processing a transaction from the application on the first computing device using the software library; generating, by the computer system, a temporary token corresponding to the token; transmitting, by the computer system, the temporary token to the first computing device; receiving, by the computer system, the transaction and the temporary token from a second computing device of a different entity using the software library installed on the second computing device, wherein the different entity is not provided access to the underlying identifying primary account number corresponding to the payment funding source for the token; and processing the transaction using the temporary token.
2. The computer system of claim 1, wherein the software library includes function calls for communicating information with an intermediary party.
3. The computer system of claim 2, wherein the intermediary party saves at least a portion of information related to the funding source.
4. The computer system of claim 2, wherein the instructions further comprising: transmitting, the at least a portion of the information related to the funding source, to a third computing device of another entity different from the different entity of the second computing device.
5. The computer system of claim 2, wherein the instructions further comprising: in response to communicating with the intermediary party, the intermediary party transmitting a unique token associated with the funding source.
6. The computer system of claim 2, wherein the intermediary party transmits codes associated with one or more funding sources to the second computing device of the different entity.
7. The computer system of claim 2, wherein the intermediary party saves at least a portion of the information related to the funding source in response to a accepted control selected on a user interface of the first computing device.
8. A method, comprising: receiving, at a computer system, a request from an application executing on a first computing device associated with a user using a software library of the application provided by a service provider associated with the computer system; determining, by the computer system based on the request, a plurality of tokens that each correspond to a particular payment funding source registered to the user, wherein each of the plurality of tokens do not include an underlying identifying primary account number corresponding to a respective payment funding source for that token; transmitting, by the computer system, the plurality of tokens to the first computing device; receiving, by the computer system, data indicating a selection of a particular token of the plurality of tokens for processing a transaction from the application on the first computing device using the software library; generating, by the computer system, a temporary token corresponding to the particular token; transmitting, by the computer system, the temporary token to the first computing device; receiving, by the computer system, the transaction and the temporary token from a second computing device of a different entity using the software library installed on the second computing device, wherein the different entity is not provided access to the underlying identifying primary account number corresponding to the particular payment funding source for the particular token; and processing the transaction using the temporary token.
9. The method of claim 8, wherein the software library includes function calls for communicating information with an intermediary party.
10. The method of claim 9, wherein the intermediary party stores at least a portion of the information associated the respective payment funding source for temporary token.
11. The method of claim 9, wherein the intermediary party saves at least a portion of the information related to the funding source in response to an accepted control selected on a user interface of the first computing device.
12. The method of claim 9, wherein the intermediary party looks up the information related to the funding source for transmitting to the second computing device.
13. The method of claim 9, transmitting, the at least a portion of the information related to the funding source, to a third computing device of another entity different from the different entity of the second computing device.
14. The method of claim 13, wherein the third computing device of the another entity processes a transaction using the funding associated with the temporary token.
15. A non-transitory machine-readable medium having stored thereon machine-readable instructions executable to cause a machine to perform operations comprising: receiving, at a computer system, a request from an application executing on a first computing device associated with a user using a software library of the application provided by a service provider associated with the computer system; determining, by the computer system based on the request, a token that corresponds to a payment funding source registered to the user, wherein the token does not include an underlying identifying primary account number corresponding to a payment funding source for that token; transmitting, by the computer system, the token to the first computing device; receiving, by the computer system, data indicating a selection of the token for processing a transaction from the application on the first computing device using the software library; generating, by the computer system, a temporary token corresponding to the token; transmitting, by the computer system, the temporary token to the first computing device; receiving, by the computer system, the transaction and the temporary token from a second computing device of a different entity using the software library installed on the second computing device, wherein the different entity is not provided access to the underlying identifying primary account number corresponding to the payment funding source for the token; and processing the transaction using the temporary token.
16. The non-transitory machine-readable medium of claim 15, wherein the software library includes function calls for communicating information with an intermediary party.
17. The non-transitory machine-readable medium of claim 16, wherein the intermediary party saves at least a portion of information related to the funding source.
18. The non-transitory machine-readable medium of claim 16, wherein the instructions further comprising: in response to communicating with the intermediary party, the intermediary party transmitting a unique token associated with the funding source.
19. The non-transitory machine-readable medium of claim 16, wherein the intermediary party transmits codes associated with one or more funding sources to the second computing device of the different entity.
20. The non-transitory machine-readable medium of claim 16, wherein the intermediary party saves at least a portion of the information related to the funding source in response to an accepted control selected on a user interface of the first computing device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0028] The foregoing and other objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037] The features and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements.
DETAILED DESCRIPTION
[0038]
[0039] The retail mobile application 108 installed upon the mobile device 102, in some implementations, is configured to communicate transaction information to the payment gateway 104 using a payment software library portion 110 of the retail mobile application 108. The payment software library portion 110 of the retail mobile application 108, in some implementations, is provided by the payment gateway 104 (e.g., a third party transaction processing solution provider) to the retailer for incorporation into the retail mobile application 108. The payments software library portion 110 executes function calls made by the retail mobile application 108 to communicate the transaction information to the payment gateway 104. The payment software library 110, for example, is provided to the retailer by the payment gateway 104 to incorporate into the retail mobile application 108 during development. The payment software library 110 includes function calls supporting the collection and repeated use of payment instrument information.
[0040] A user may install the retail mobile application 108 upon the mobile device 102 and initiate a transaction. The payment software library 110, in some implementations, provides a unique device identifier 128 to the payment gateway 104 to identify any payment instruments already registered to the payment gateway 104 by the mobile device 102. For example, the unique device identifier may include the telephone number of the mobile device 102, a unique device identifier configured by the manufacturer of the mobile device 102, or a unique identifier allocated by the retailer via the retail mobile application 108.
[0041] In other implementations, if a device identifier 128 has not yet been established, the payment software library 110 requests a unique identifier for the mobile device 102. For example, the payment gateway 104 may allocate a unique identifier (e.g., random number, string, etc.) for uniquely identifying the mobile device 102. The retail mobile application 108 may store the unique identifier in a memory location accessed by the payment software library 110 (e.g., a memory location available to any mobile application executing the functionality provided by the payment software library 110). The payment gateway 104, upon receipt of the device identifier 128, attempts to identify one or more stored (e.g., registered) cards using a card identification engine 116. For example, the card identification engine 116 may match the device identifier 128 to device identifiers 124 stored within a payment gateway database 122. Each device identifier 124 within the payment gateway database 122, for example, may be associated with one or more card identifiers 126. Although described in the following examples as operations performed in relation to a credit card, the card identifiers 126, in some examples, may include identifiers representing credit cards, debit cards, stored value cards, gift cards, and other electronic payment instruments.
[0042] If no cards are identified, a routine may be initiated by the retail mobile application 108 and a card storing engine 114 to collect and store information for a new payment instrument. The payment software library 110, in some implementations, includes one or more subprograms to encrypt and transmit payment instrument information to the payment gateway 104 for secure storage. The payment gateway 104, in some implementations, enables encryption of the information upon the mobile device 102 through an encryption key allocated to the retailer. The encryption mechanism, for example, may be described in U.S. patent application Ser. No. 13/633,106, entitled “Differential Client-Side Encryption of Information Originating from a Client”, and filed Oct. 1, 2012, the contents of which are hereby incorporated by reference in its entirety.
[0043] If, instead, one or more cards were previously registered by the mobile device 102 (e.g., through the retail mobile application 108 or another application configured to use the payment software library 110 to communicate with the payment gateway 104), the card identification engine 116 may return registered cards 130 to the retail mobile application 108. The information provided by the payment gateway 104 regarding each of the registered cards 130, for example, may include a unique card identifier, a payment instrument type (e.g., American Express, Mastercard, Visa, etc.), the last four digits of the account number, and/or the expiration date of the card.
[0044] The retail mobile application 108 may present the registered cards 130 to the user for selection. The registered cards 130, for example, may each be identified to the user using a portion of the information (e.g., payment instrument type, last four digits of the account number, and/or the expiration date of the card).
[0045] Upon selection of one of the registered cards 130, in some implementations, the user is presented with a request for authentication information 132 to authenticate the user as the cardholder. The authentication information 132, in some implementations, includes a value that can be used by the payment instrument processing service 106 to validate card information. In some examples, the authentication information 132 may include a CVV code and/or a zip code of the card holder. In other implementations, payment processing proceeds without an authentication requirement. For example, based upon one or more of retailer preferences, user preferences, and type of mobile device 102 (e.g., personal device such as a smart phone vs. multi-user (e.g., family, etc.) device such as a tablet computer), the retail mobile application 102 may identify whether to proceed with payment or to first authenticate a selected payment instrument. In some implementations, the retail mobile application 108 is hardcoded to always authenticate.
[0046] Upon receipt of the authentication information 132, in some implementations, a card validation engine 118 of the payment gateway 104 provides the authentication information 132 to the payment instrument processing service 106 along with credit card information 134. The payment processing service 106 conducts a standard verification procedure (e.g., verifying matching information between the card information 134 and the authentication information 132) and provides an authorization result 136 to the payment gateway 104 in response. The card validation engine 118 then provides the authorization result 136 to the payment software library 110 of the retail mobile application 108.
[0047] In some implementations, a user password may be used in addition to or in lieu of the credit card-based authentication information 132. For example, for additional security, a user may password protect the retail mobile application 108 to avoid having purchases made without the consent of the cardholder. In another example, if the card holder has difficulty remembering the CVV number, the cardholder may instead password protect the card authorization process provided by the payment software library 110. The payment gateway 104, for example, may authenticate password information provided by the user.
[0048] Having authorized the credit card for use with the transaction, the retailer may rely upon the payment gateway 104, upon receipt of transaction data (e.g., amount, payee, etc.) to conduct the transaction, for example using a payment processing engine 120. Examples of the functionality of the processing of the transaction are described in further detail in U.S. patent application Ser. No. 13/633,106, entitled “Differential Client-Side Encryption of Information Originating from a Client”, and filed Oct. 1, 2012.
[0049] Should the user install a second mobile application configured to conduct transactions via the payment gateway 104 (not illustrated), in some implementations, the second mobile application may use the payment software library 110 to display a list of the credit cards 130 that the user previously saved in response to the second mobile application providing the device identifier 128 to the payment gateway 104. In this manner, once a user has registered one or more payment instruments with the payment gateway 104 via the mobile device 102, all applications configured to conduct transactions via the payment gateway 104 (e.g., all applications performing functionality supported by the payment software library 110) may present that user the opportunity to use those payment instruments which were previously registered via other retailer mobile applications. Upon entering the credit card transaction form of the second retailer mobile application, for example, the user may be presented with the opportunity to authorize the second retailer mobile application to receive the payment instrument information (e.g., credit card number, expiration date, etc.) stored in relation to the retailer mobile application 108. For example, the user may complete authorization of payment instrument sharing between the retailer mobile application 108 and the second application by completing an authorization step presented by the payment software library 110. Authorization, for example, may include entering credit card authentication information (e.g., the CVV) for each saved payment instrument being authorized. This and other features are described in greater detail below.
[0050]
[0051] In some implementations, the method 200 begins with entering a payment dialogue (202) of a retail mobile application configured to enable electronic transactions via a payment gateway. The payment dialogue, for example, may include purchase information (e.g., a list of items selected for purchase, a total funds owed, payment instrument information, etc.). The user may enter the payment dialogue, in some examples, from within a shopping cart review or upon selecting a control to make a purchase.
[0052] In some implementations, if no payment instruments have been registered with the mobile device (204), a new payment instrument entry dialogue may be entered (206). The new payment instrument entry dialogue includes a request for payment instrument information. For example, one or more input fields may be presented to the user for entering payment instrument information.
[0053] If the new payment instrument is to be stored for future use (210), in some implementations, registration of the new payment instrument is requested (212). In some implementations, upon entry, by the user, of payment instrument information the user is presented with the option to store the new payment instrument information with a third party entity, such as the payment gateway 104 described in relation to
[0054] In some implementations, validation of the registration of the new payment instrument is received (214). For example, the payment gateway 104 may provide the software payment library 110 of the retail mobile application 108 with a validation of the registration of the new payment instrument.
[0055] If, rather than entering new payment instrument information, one or more payment instruments were found to be previously registered with the mobile device (204), in some implementations, the one or more registered payment instruments are presented as payment options to the user (216). For example, the a routine provided by the software payment library 110 of the retail mobile application 108 may present each registered payment instrument through partial card identification (e.g., credit card type, payment instrument name, expiration date, last four digits of the account number, etc.). A selectable control may be included in the presentation of each payment instrument configured, upon selection, to initiate payment processing using the associated payment instrument.
[0056] In some implementations, a payment instrument selection and corresponding authentication value is received (218). In some implementations, the authentication value relates to the payment instrument. For example, the payment instrument may be a credit card, and the authentication value may include the CVV code and/or user zip code for authentication with a credit card processing system, such as the payment instrument processing service 106 described in relation to
[0057] In some implementations, validation of the payment instrument is requested (220). If the authentication value relates to the payment instrument, in some implementations, the payment gateway may forward the authentication information and credit card information (e.g., as stored with the payment gateway) to the payment instrument processing service 106 (as described in relation to
[0058] If authentication of the payment instrument has failed (222), in some implementations, the user may be prompted for re-entry of the authentication value (224) and validation of the authentication information may be requested again (220). In some implementations, the user may be provided with a certain number of attempts (e.g., 3, 5, etc.) to present valid authentication information prior to being denied access to the payment instrument for completing the transaction.
[0059] If, instead, the payment instrument is authenticated (222), in some implementations, the transaction is initiated via the selected payment instrument (226). For example, the transaction may be initiated via the payment gateway 104. Processing of the transaction, in some implementations, may be conducted external to the viewpoint of the user interface of the retail mobile application 108. For example, the user may be redirected to continue interacting with the retail mobile application 108 while the transaction is processed in the background.
[0060] In some implementations, confirmation information is presented to the user (228). The confirmation information, in some implementations, relates to success in initiating transaction processing via the payment gateway 104. For example, the actual transaction may be pending processing via the payment instrument processing service 106. In other implementations, the confirmation information relates to successful completion of payment of the transaction. The confirmation information, in some implementations, is presented to the user outside the retailer mobile application 102. For example, a retailer server may email the user regarding the details of the completed transaction.
[0061] While described in a particular series of steps, in some implementations, one or more steps of the method 200 may be conducted in a different order or in parallel with each other. For example, transaction may be initiated using the new payment instrument (226) prior to storing the new payment instrument (210). In some implementations, one or more steps may be combined or split into two or more steps. For example, rather than receiving selection of the payment instrument and an authentication value (218), in some implementations, an authentication value (e.g., password, biometric identifier, etc.) may be obtained prior to presenting the payment instrument options to the user (216). In some implementations, one or more steps may be added or adjusted within the method 200. For example, in some implementations, rather than requesting a new payment instrument (206), the method 200 may present one or more stored payment instruments affiliated with the retailer. In one example, the retailer may store payment instrument data on a retailer server. Further to this example, the retailer, upon authorization from the user, may forward payment instrument data to the payment gateway for entry as a new payment option. In another example, the retailer may use a third party service for storage of payment instrument data, such as the payment gateway 104 described in relation to
[0062]
[0063] As illustrated in
[0064] As illustrated in
[0065] As illustrated in
[0066]
[0067] As illustrated in
[0068] In some implementations, upon selection of a how it works control 408, the user is presented with an information dialogue 422, as illustrated in relation to a screen shot 420 of
[0069] Further details regarding the functionality of storing the payment instrument with the payment gateway, in some implementations, are presented to the user upon selection of a more control 424. For example, turning to
[0070]
[0071] Turning to
[0072] In some implementations, the payment gateway 506 attempts to identify the computing device (512). If the computing device is not identified, or if there are no active (e.g., not expired) payment instruments registered in relation to the computing device, the payment gateway 506 responds (514a) to the entity server 504 informing the entity server 504 that no payment options are registered. The entity server 504, in tum, informs the entity application 502 that no payment options are registered (514b). In other implementations, the payment gateway 506 responds directly to the payment software library portion of the entity application 502. In some implementations, along with being informed of the lack of registered payment options, the entity application 502 is provided a session identifier for a transaction session established with the payment gateway 506.
[0073] In some implementations, the entity application 502 presents a payment instrument entry dialogue (516) to the user of the computing device, such as the screen shot 400 illustrated in
[0074] In some implementations, the entity application 502 presents an option (518) for the user to store a new payment instrument with the payment gateway 506. For example, the payment software library portion of the entity application may present an offer to store payment instrument information with the payment gateway 506. In some implementations, the option may be presented in the same user interface as the payment instrument entry dialogue, for example as illustrated in
[0075] In some implementations, encrypted payment instrument data and a session identifier are transmitted (520a) from the entity application 502 to the entity server 504. The payment software library portion of the entity application 502, for example, may provide the encrypted payment instrument data. The entity server 504, in turn, forwards the encrypted payment instrument data and session identifier (520b) to the payment gateway 506. The entity server 504, in some implementations, logs information related to the payment instrument data, such as non-encrypted (e.g., public) information. In other implementations, the entity application 502 transmits the encrypted payment instrument information and the session identifier directly to the payment gateway 506.
[0076] The payment gateway 506, in some implementations, forwards payment instrument data for processing (522) with the payment instrument processing server 508. For example, the payment gateway 506 may decrypt the payment instrument data previously encrypted by the payment software library portion of the entity application 502. The payment software library portion of the entity application 502, for example, may encrypt the payment instrument data using an encryption algorithm provided by the payment gateway 506.
[0077] In some implementations, the payment instrument processing server 508 processes the payment instrument data (524). The payment instrument processing server 508 then provides a result related to the processing of the payment instrument data (526) to the payment gateway 506. The result, for example, may include verification of the user's authorization to use the payment instrument for the transaction. In another example, the result may include verification of success of payment using the payment instrument.
[0078] The payment gateway 506, in some implementations, generates a unique token associated with the payment instrument (528). The unique token, for example, may be used by the entity application 502 to identify the payment instrument when conducting a transaction at a later time. The entity server 504, for example, may recognize the unique token and associate a transaction with a particular payment instrument without directly having access to the payment instrument information. In some implementations, the unique token is generated prior to completion of processing of the payment instrument data For example, upon validation of credit card information but prior to completion of a payment using the credit card, the payment gateway 506 may generate a unique token associated with the credit card.
[0079] In some implementations, the payment gateway 506 provides the unique token and the processing result (530) to the entity server 504. The entity server 504, in some implementations, forwards at least one of the processing result and the unique token (532) to the entity application 502. If the result relates to the processing of a payment, the processing may occur at some time after the submission of payment information by the user. In this circumstance, the result may be presented to the user via a different communication method, such as an email alert. In some implementations, the token may be reserved by the entity server 504 and withheld from the entity application 502, for example for security purposes.
[0080] Turning to
[0081] In some implementations, the payment gateway 506 attempts to identify payment instruments registered with the computing device (554). The payment gateway, in some implementations, provides codes associated with one or more registered payment options (556a) to the entity server 504. In some implementations, the codes are each unique tokens previously generated by the payment gateway 506 to identify the registered payment options. In some implementations, the codes include information used to uniquely identify information (e.g., stored tokens, stored public information) related to the payment options. The unique identification information, for example, may bet stored by the entity server 504 or by the computing device executing the entity application 502.
[0082] In some implementations, the entity server 504 forwards the codes for the one or more registered payment options (556b) to the entity application 502. For example, the entity server 504 may supply the codes for the one or more registered payment options to a payment software library portion of the entity application 502. Additionally or alternatively, the entity server 504 may supply payment instrument-related information identified as being associated with the codes. In other implementations, the payment gateway 506 may supply codes directly to the payment software library portion of the entity application 502, and the payment software library portion of the entity application 502 may correlate the codes with stored public information related to each payment instrument (e.g., as stored on the mobile device executing the entity application 502).
[0083] In some implementations, the payment software library portion of the entity application 502 presents a payment option selection dialogue (558). The payment option selection dialogue, for example, may include controls associated with each of the payment options identified by the payment gateway 506, such as the control illustrated in relation to
[0084] In some implementations, the entity application 502 transmits (560) the code associated with the selected payment method and an authentication value to the payment gateway 506. The payment software library portion of the entity application 502, for example, may transmit the information to the payment gateway 506. The authentication value, for example, may include a CVV code, user zip code, or other information useful to the payment instrument processing server 508 in validating the user access to the payment instrument.
[0085] In some implementations, the payment gateway 506 identifies payment instrument data associated with the code (562). For example, sensitive information, such as a credit card number, stored by the payment gateway 506 may be retrieve in response to receipt of the code provided by the payment software library portion of the entity application 502.
[0086] In some implementations, the payment gateway 506 forwards payment instrument data and the authentication value for validation (564) with the payment instrument processing server 508. In some implementations, the payment instrument processing server 508 processes the payment instrument data (566). In some implementations, the payment processing server 508 provides validation of the payment instrument data (568) to the payment gateway 506.
[0087] In some implementations, the payment gateway 506 generates a temporary token associated with the payment instrument (570). Rather than providing the actual unique token (e.g., generated in step 528 of method 500), for example, the payment gateway 506 may secure the payment instrument information by transmitting a temporary token to the entity application 502. In some implementations, the payment gateway 506 transmits the temporary token (572) to the entity application 502. For example, the temporary token may be provided to the payment software library portion of the entity application 502.
[0088] In some implementations, the entity application 502 transmits the temporary token (574a) to the entity server 504. For example, the software library portion of the entity application 502 may provide the temporary token to the entity server 504. The entity server 504, in some implementations, forwards the temporary token (574b) to the payment gateway 506. Responsive to receipt of the temporary token, in some implementations, the payment gateway 506 transmits the unique token associated with the payment instrument (576) to the entity server 504. In this manner, for example, the entity server 504 may correlate transaction information to a uniquely identified payment instrument.
[0089] As shown in
[0090] The cloud computing environment 600 may include a resource manager 606. The resource manager 606 may be connected to the resource providers 602 and the computing devices 604 over the computer network 608. In some implementations, the resource manager 606 may facilitate the provision of computing resources by one or more resource providers 602 to one or more computing devices 604. The resource manager 606 may receive a request for a computing resource from a particular computing device 604. The resource manager 606 may identify one or more resource providers 602 capable of providing the computing resource requested by the computing device 604. The resource manager 606 may select a resource provider 602 to provide the computing resource. The resource manager 606 may facilitate a connection between the resource provider 602 and a particular computing device 604. In some implementations, the resource manager 606 may establish a connection between a particular resource provider 602 and a particular computing device 604. In some implementations, the resource manager 606 may redirect a particular computing device 604 to a particular resource provider 602 with the requested computing resource.
[0091]
[0092] The computing device 700 includes a processor 702, a memory 704, a storage device 706, a high-speed interface 708 connecting to the memory 704 and multiple high-speed expansion ports 710, and a low-speed interface 712 connecting to a low-speed expansion port 714 and the storage device 706. Each of the processor 702, the memory 704, the storage device 706, the high-speed interface 708, the high-speed expansion ports 710, and the low-speed interface 712, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 702 can process instructions for execution within the computing device 700, including instructions stored in the memory 704 or on the storage device 706 to display graphical information for a GUI on an external input/output device, such as a display 716 coupled to the high-speed interface 708. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
[0093] The memory 704 stores information within the computing device 700. In some implementations, the memory 704 is a volatile memory unit or units. In some implementations, the memory 704 is a non-volatile memory unit or units. The memory 704 may also be another form of computer-readable medium, such as a magnetic or optical disk.
[0094] The storage device 706 is capable of providing mass storage for the computing device 700. In some implementations, the storage device 706 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. Instructions can be stored in an information carrier. The instructions, when executed by one or more processing devices (for example, processor 702), perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices such as computer- or machine-readable mediums (for example, the memory 704, the storage device 706, or memory on the processor 702).
[0095] The high-speed interface 708 manages bandwidth-intensive operations for the computing device 700, while the low-speed interface 712 manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In some implementations, the high-speed interface 708 is coupled to the memory 704, the display 716 (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports 710, which may accept various expansion cards (not shown). In the implementation, the low-speed interface 712 is coupled to the storage device 706 and the low-speed expansion port 714. The low-speed expansion port 714, which may include various communication ports (e.g., USB, Bluetooth®, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
[0096] The computing device 700 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 720, or multiple times in a group of such servers. In addition, it may be implemented in a personal computer such as a laptop computer 722. It may also be implemented as part of a rack server system 724. Alternatively, components from the computing device 700 may be combined with other components in a mobile device (not shown), such as a mobile computing device 750. Each of such devices may contain one or more of the computing device 700 and the mobile computing device 750, and an entire system may be made up of multiple computing devices communicating with each other.
[0097] The mobile computing device 750 includes a processor 752, a memory 764, an input/output device such as a display 754, a communication interface 766, and a transceiver 768, among other components. The mobile computing device 750 may also be provided with a storage device, such as a micro-drive or other device, to provide additional storage. Each of the processor 752, the memory 764, the display 754, the communication interface 766, and the transceiver 768, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
[0098] The processor 752 can execute instructions within the mobile computing device 750, including instructions stored in the memory 764. The processor 752 may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor 752 may provide, for example, for coordination of the other components of the mobile computing device 750, such as control of user interfaces, applications run by the mobile computing device 750, and wireless communication by the mobile computing device 750.
[0099] The processor 752 may communicate with a user through a control interface 758 and a display interface 756 coupled to the display 754. The display 754 may be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 756 may comprise appropriate circuitry for driving the display 754 to present graphical and other information to a user. The control interface 758 may receive commands from a user and convert them for submission to the processor 752. In addition, an external interface 762 may provide communication with the processor 752, so as to enable near area communication of the mobile computing device 750 with other devices. The external interface 762 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
[0100] The memory 764 stores information within the mobile computing device 750. The memory 764 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. An expansion memory 774 may also be provided and connected to the mobile computing device 750 through an expansion interface 772, which may include, for example, a SIMM (Single In Line Memory Module) card interface. The expansion memory 774 may provide extra storage space for the mobile computing device 750, or may also store applications or other information for the mobile computing device 750. Specifically, the expansion memory 774 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, the expansion memory 774 may be provide as a security module for the mobile computing device 750, and may be programmed with instructions that permit secure use of the mobile computing device 750. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
[0101] The memory may include, for example, flash memory and/or NVRAM memory (non-volatile random access memory), as discussed below. In some implementations, instructions are stored in an information carrier. that the instructions, when executed by one or more processing devices (for example, processor 752), perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices, such as one or more computer- or machine-readable mediums (for example, the memory 764, the expansion memory 774, or memory on the processor 752). In some implementations, the instructions can be received in a propagated signal, for example, over the transceiver 768 or the external interface 762.
[0102] The mobile computing device 750 may communicate wirelessly through the communication interface 766, which may include digital signal processing circuitry where necessary. The communication interface 766 may provide for communications under various modes or protocols, such as GSM voice calls (Global System for Mobile communications), SMS (Short Message Service), EMS (Enhanced Messaging Service), or MMS messaging (Multimedia Messaging Service), CDMA (code division multiple access), TDMA (time division multiple access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000, or GPRS (General Packet Radio Service), among others. Such communication may occur, for example, through the transceiver 768 using a radio-frequency. In addition, short-range communication may occur, such as using a Bluetooth®, Wi-Fi™, or other such transceiver (not shown). In addition, a GPS (Global Positioning System) receiver module 770 may provide additional navigation- and location-related wireless data to the mobile computing device 750, which may be used as appropriate by applications running on the mobile computing device 750.
[0103] The mobile computing device 750 may also communicate audibly using an audio codec 760, which may receive spoken information from a user and convert it to usable digital information. The audio codec 760 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of the mobile computing device 750. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on the mobile computing device 750.
[0104] The mobile computing device 750 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 780. It may also be implemented as part of a smart-phone 782, personal digital assistant, or other similar mobile device.
[0105] Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
[0106] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms machine-readable medium and computer-readable medium refer to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term machine-readable signal refers to any signal used to provide machine instructions and/or data to a programmable processor.
[0107] To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
[0108] The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes a front end component (e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the systems and techniques described here), or any combination of such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.
[0109] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0110] In view of the structure, functions and apparatus of the systems and methods described here, in some implementations, an environment, systems and methods for enabling electronic transactions are provided. Having described certain implementations of methods and apparatus for supporting electronic transactions via a mobile device, it will now become apparent to one of skill in the art that other implementations incorporating the concepts of the disclosure may be used. Therefore, the disclosure should not be limited to certain implementations, but rather should be limited only by the spirit and scope of the following claims.