The present disclosure relates to systems and methods enabling users to execute secure transactions with third-party providers from within a primary interface of a computing device.
Software developers solve non-trivial problems and operate best on schedules that include extended periods of uninterrupted time for thought and creation, effectively allowing them to “get in the zone.” Consequently, anything that interrupts a software developer's state of concentration can be detrimental. Unfortunately, tasks such as acquiring domain names, acquiring Secure Sockets Layer (SSL)/Extended Validation (EV) certificates, automatically renewing original server certificates, upgrading server capacity, and others that are necessary for testing, deploying, or scaling code often involve significant interruptions to the workflow of software developers. These tasks typically require software developers to switch between multiple tools and websites to execute on financial transactions.
One existing tool, SSLMate, provides a terminal command interface for purchasing SSL certificates for encrypted linkages between web servers and Internet browsers. While SSLMate allows the user to make an initial terminal command to initiate the purchase, the user is still required to exit the terminal to (1) go to their email client and (2) then go to RapidSSL.com, where the user must review and approve all of the purchase details, and finally (3) return to the terminal, where the user must run a final command to confirm receipt of the certificate.
The present application discloses one or more of the features recited in the appended claims and/or the following features which, alone or in any combination, may comprise patentable subject matter:
According to the present disclosure, a method for enabling a secure transaction from within a primary interface of a computing device may comprise receiving, by the primary interface, a user input from a user indicating a domain name of interest in a syntax of the primary interface; transmitting, by the computing device, a first command to a server to cause the server to determine an availability of the domain name; receiving, by the computing device, an indication of the availability of the domain name from the server; generating, by the primary interface, in response to an indication from the server that the domain name is available, a user prompt to query whether the domain name should be purchased in the syntax of the primary interface; receiving, by the primary interface, a user input indicating that the domain name should be purchased in the syntax of the primary interface; and transmitting, by the computing device, a second command to the server to cause the server to purchase the domain name.
In some embodiments, the primary interface may be a terminal window of the computing device.
In some embodiments, transmitting the first and/or second commands to the server may cause the server to determine whether the user input is associated with an existing user account and to create, in response to a determination that the user input is not associated with an existing user account, a new user account.
In some embodiments, the method may further comprise receiving, by the computing device, an indication from the server that the new user account has been created; and generating, by the primary interface, in response to the indication from the server that the new user account has been created, a user prompt to set up a billing method which is to be used to purchase the domain name in the syntax of the primary interface.
In some embodiments, transmitting the first and/or second commands to the server may further cause the server to determine, in response to the creation of the new user account, whether the new user account belongs to an existing group having an existing billing method.
In some embodiments, the method may further comprise receiving, by the computing device, an indication from the server that the new user account does not belong to an existing group; and generating, by the primary interface, in response to the indication from the server that the new user account does not belong to an existing group, a user prompt to set up a billing method which is to be used to purchase the domain name in the syntax of the primary interface.
In some embodiments, transmitting the first and/or second commands to the server may cause the server to determine whether the user input is associated with an existing user account and to retrieve, in response to a determination that the user input is associated with an existing user account, an existing billing method that is to be used to purchase the domain name.
In some embodiments, the method may further comprise deploying an application to the domain name from the primary interface using the syntax of the primary interface.
According to another embodiment of the present disclosure, a method for enabling a secure transaction from within a primary interface of a computing device may comprise receiving, by the primary interface of the computing device, an aliasing request in a syntax of the primary interface, the aliasing request including an existing domain name and a new domain name that is to alias the existing domain name; transmitting, by the computing device, a first command to a server to cause the server to determine whether the new domain name is registered and to determine, in response to a determination that the new domain name is not registered, an availability of the new domain name; receiving, by the computing device, an indication of the availability of the new domain name from the server; generating, by the primary interface, in response to an indication from the server that the new domain name is available, a user prompt to query whether the new domain name should be purchased in the syntax of the primary interface; receiving, by the primary interface, a user input indicating that the new domain name should be purchased in the syntax of the primary interface; and transmitting, by the computing device, a second command to the server to cause the server to purchase the new domain name and to alias the existing domain name with the new domain name.
In some embodiments, the primary interface may be a terminal window of the computing device.
In some embodiments, transmitting the first and/or second commands to the server may cause the server to determine whether the user input is associated with an existing user account and to create, in response to a determination that the user input is not associated with an existing user account, a new user account.
In some embodiments, the method may further comprise receiving, by the computing device, an indication from the server that the new user account has been created; and generating, by the primary interface, in response to the indication from the server that the new user account has been created, a user prompt to set up a billing method which is to be used to purchase the domain name in the syntax of the primary interface.
In some embodiments, transmitting the first and/or second commands to the server may further cause the server to determine, in response to the creation of the new user account, whether the new user account belongs to an existing group having an existing billing method.
In some embodiments, the method may further comprise receiving, by the computing device, an indication from the server that the new user account does not belong to an existing group; and generating, by the primary interface, in response to the indication from the server that the new user account does not belong to an existing group, a user prompt to set up a billing method which is to be used to purchase the domain name in the syntax of the primary interface.
In some embodiments, transmitting the first and/or second commands to the server may cause the server to determine whether the user input is associated with an existing user account and to retrieve, in response to a determination that the user input is associated with an existing user account, an existing billing method that is to be used to purchase the domain name.
In some embodiments, the method may further comprise deploying an application to the domain name from the primary interface using the syntax of the primary interface.
According to another embodiment of the present disclosure, a computing device may comprise a primary interface configured to receive a user input indicating a domain name of interest in a syntax of the primary interface; cause the computing device to transmit a first command to a server to cause the server to determine an availability of the domain name; receive an indication of the availability of the domain name from the server; generate, in response to a determination that the domain name is available, a user prompt to query whether the domain name should be purchased in the syntax of the primary interface; receive a user input indicating that the domain name should be purchased in the syntax of the primary interface; and cause the computing device to transmit a second command to the server to cause the server to purchase the domain name.
In some embodiments, the primary interface may be a terminal window of the computing device.
In some embodiments, the primary interface may be further configured to deploy an application to the domain name from the primary interface using the syntax of the primary interface.
In some embodiments, the primary interface may be further configured to receive a user input indicating a billing method to be used to purchase the domain name and to cause the computing device to transmit the billing method to the server.
In some embodiments, the second command may cause the server to purchase the domain name using the billing method.
Additional features, which alone or in combination with any other feature(s), including those listed above and those listed in the claims, may comprise patentable subject matter and will become apparent to those skilled in the art upon consideration of the following detailed description of illustrative embodiments exemplifying the best mode of carrying out the invention as presently perceived.
The concepts described in the present disclosure are illustrated by way of example and not by way of limitation in the accompanying figures. For simplicity and clarity of illustration, elements illustrated in the figures are not necessarily drawn to scale. For example, the dimensions of some elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference labels have been repeated among the figures to indicate corresponding or analogous elements. The detailed description particularly refers to the accompanying figures in which:
While the concepts of the present disclosure are susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the figures and will be described herein in detail. It should be understood, however, that there is no intent to limit the concepts of the present disclosure to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives consistent with the present disclosure and the appended claims.
References in the specification to “one embodiment,” “an embodiment,” “an illustrative embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may or may not necessarily include that particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
The disclosed embodiments may be implemented, in some cases, in hardware, firmware, software, or any combination thereof. The disclosed embodiments may also be implemented as instructions carried by or stored on a transitory or non-transitory computer-readable storage medium, which may be read and executed by one or more processors. A computer-readable storage medium may be embodied as any storage device, mechanism, or other physical structure for storing or transmitting information in a form readable by a computing device (e.g., a volatile or non-volatile memory, a media disc, or other media device).
In the drawings, some structural or method features may be shown in specific arrangements and/or orderings. However, it should be appreciated that such specific arrangements and/or orderings may not be required. Rather, in some embodiments, such features may be arranged in a different manner and/or order than shown in the illustrative figures. Additionally, the inclusion of a structural or method feature in a particular figure is not meant to imply that such feature is required in all embodiments and, in some embodiments, may not be included or may be combined with other features.
The presently disclosed systems and methods allow software developers to be more productive by reducing interruptions. In particular, the presently disclosed systems and methods allow software developers to remain within their primary interface (e.g., the terminal) and to leverage one syntax, as opposed to switching between multiple interfaces (terminal to email to web, etc.) with multiple different syntaxes. New users are able to create an account, set up a billing method, deploy an application and label it (with a brand new domain) without leaving the terminal window and without context switching for the user. Additionally or alternatively, an administrator is able to set up a team or organization with team billing method, thereby allowing any new member to join the team or organization and instantly get to work without need to input account details or otherwise. It should be appreciated that, in the present disclosure, the term “primary interface” refers to a user interface for developing (e.g., writing or editing) software.
To do so, a user may first log in to the program from within the terminal window by executing a command line (e.g., “now—login”). The user may then add a payment method through executing another command line (e.g., “now billing add”). The user may then run a command to make a secure purchase of, for example, a domain. The system may issue an authorization on the payment method and attempt to purchase the domain. The purchase may occur instantaneously and the system may capture the authorized amount from the payment method.
In some embodiments, where aliasing is desired, the system and methods may configure the Domain Name System (DNS) records for the domain so that any requests to the domain will reach the system's servers successfully. The aliasing process may occur without context switching for the user (e.g. the user does not need to configure DNS records, to configure nameservers, to learn about DNS or nameservers, or to setup WHOIS information). Instead, the user is able to deliver their product in a presentable fashion (with a branded domain) entirely from within the terminal window.
Referring now to
The computing device 102 is configured to be used by a user to engage in a secure transaction from within a primary interface of the computing device 102 with one or more servers 104, 106. In the illustrative embodiment, the primary interface is embodied as a terminal window 150 of the computing device 102, as shown in
In the illustrative embodiment, the computing device 102 includes a processor 110, a memory 112, a data storage 114, an I/O subsystem 116, I/O devices 118, and a communication device 120. The computing device 102 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a laptop computer, a notebook computer, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. It should be appreciated that the computing device 102 may include other or additional components to those shown in
The processor 110 may be embodied as any type of processor capable of performing the functions described herein. For example, the processor 110 may be embodied as a single or multi-core processor(s), digital signal processor, microcontroller, or other processor or processing/controlling circuit. Similarly, the memory 112 may be embodied as any type of volatile or non-volatile memory or data storage capable of performing the functions described herein. In operation, the memory 112 may store various data and software used during operation of the computing device 102 such operating systems, applications, programs, libraries, and drivers. The memory 112 is communicatively coupled to the processor 110 via the I/O subsystem 116, which may be embodied as circuitry and/or components to facilitate input/output operations with the processor 110, the memory 112, and other components of the computing device 102. For example, the I/O subsystem 116 may be embodied as, or otherwise include, memory controller hubs, input/output control hubs, firmware devices, communication links (i.e., point-to-point links, bus links, wires, cables, light guides, printed circuit board traces, etc.) and/or other components and subsystems to facilitate the input/output operations.
The data storage 114 may be embodied as any type of device or devices configured for short-term or long-term storage of data such as, for example memory devices and circuits, memory cards, hard disk drives, solid-state drives, or other data storage devices. The data storage 114 may store compressed and/or decompressed data processed by the computing device 102. The data storage 114 may be configured to store the information provided by the user to complete an account set up with the primary server 106. The data storage 114 may also store data to expedite the purchasing process. The data storage 114 may store libraries for the command scripts to be run by the computing device 102.
In the illustrative embodiment, the I/O devices 118 include a user interface 122, a display 124, speakers 126, and a microphone 128. As discussed below, these I/O devices 118 may be used to receive input from the user and output progress to the user in making the secure purchase through the terminal window 150. The user interface 122 may include any combination of input/output devices, such as, for example, buttons, keyboard, or a computer touchscreen. For example, the user may input account information through the user interface 122 to send to the primary server 106. The display 124 and speakers 124 may present the progress the user has achieved in making a secure purchase from within the terminal window 150 using a command line. The display 124 may also show the terminal window 150 to be implemented by the system 100. In some embodiments, the microphone 128 may further be used as an input into the terminal window 150. The microphone 128 may capture information verbally presented by the user. In another embodiment, the I/O devices 118 may include other devices to input and output information to and from the user on the computing device 102. The computing device 102 may send some or all of the information collected from the I/O devices 118 to the primary server 106.
The computing device 102 further includes a communication device 120, which may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications between the computing device 102 and the primary server 106 and the third-party server 108 the network 104. The communication device 120 may be configured to use any one or more communication technology (e.g., wired or wireless communications) and associated protocols (e.g., Ethernet, Bluetooth®, Wi-Fi®, WiMAX, etc.) to effect such communication. The computing device 102 can include other peripheral devices as might be necessary to perform the functions of the computing device 102, such as displays, keyboards, other input/output devices, and other peripheral devices.
The network 104 may be embodied as any type of network capable of facilitating communications between the computing device 102 and the primary server 106 and the third-party server 108. For example, the network 104 may be embodied as, or otherwise include, a wired or wireless local area network (LAN), a wired or wireless wide area network (WAN), a cellular network, and/or a publicly-accessible, global network such as the Internet. As such, the network 104 may include any number of additional devices, such as additional computers, routers, and switches, to facilitate communications thereacross.
In the illustrative embodiment, the primary server 106 may be configured to receive input from the computing device 102 to be processed to make a secure purchase within the terminal window 150 of the computing device 102. The primary server 106 may communicate with the third-party server 108 after processing the input received from the computing device 102 in order to execute a transaction. The primary server 106 illustratively includes a communication device 130, a processor 132, an I/O subsystem 134, a memory 136, and a database 138. The primary server 106 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a laptop computer, a notebook computer, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. It should be appreciated that the primary server 106 may include other or additional components to those shown in
In some embodiments, the primary server 106 may be embodied as multiple servers 106 in order to perform separate tasks, similar tasks, or a combination of separate and similar tasks. For example, there may be a different primary server 106 to receive input from the computing device 102 and process that input and another separate primary server 106 to perform the transactions and authorizing the payment of the transactions.
In some embodiments, the database 138 may store an organization structure to provide team billing for a team or organization. The computing device 102 may add or remove members to the team to utilize the team billing method and instantly get to work without the need to input account details or otherwise. The primary server 106 may communicate with the computing device 102 to facilitate modification of the organization structure.
In the illustrative embodiment, the third-party server 108 may include many of the similar components as the primary server 106. The third-party server 108 may be configured to communicate with the primary server 102 and/or the computing device 102 in order to make a secure transaction. The secure transaction may be, for example, acquiring domain names; acquiring SSL/EV certificates; automatically renewing original server certificates; and upgrading server capacity. The third-party server 108 may be configured to communicate with both of the computing device 102 and the primary server 106. The third-party server 108 illustratively includes a communication device 140, a processor 142, an I/O subsystem 144, a memory 146, and a database 148. Each of the communication device 140, processor 142, I/O subsystem 144, memory 146, and database 148 functions similarly as the similar components of the primary server 106 as described above. Each of the communication device 140, processor 142, I/O subsystem 144, memory 146, and database 148 may also be embodied similarly to the corresponding components of the primary server 106.
The third-party server 108 may be embodied as any type of computation or computer device capable of performing the functions described herein, including, without limitation, a computer, a multiprocessor system, a server, a rack-mounted server, a blade server, a laptop computer, a notebook computer, a network appliance, a web appliance, a distributed computing system, a processor-based system, and/or a consumer electronic device. It should be appreciated that the third-party server 108 may include other or additional components to those shown in
Referring now to
Referring now to
As shown in
As shown in
Referring now to
As shown in
In response to receiving an indication from the user that the user wants to execute the transaction, the now command-line program sends instructions to the now API server 106 to execute the transaction with the domain server 108. As shown in
It should be appreciated that the one of ordinary skilled in the art would understand that the commands illustrated in
While certain illustrative embodiments have been described in detail in the figures and the foregoing description, such an illustration and description is to be considered as exemplary and not restrictive in character, it being understood that only illustrative embodiments have been shown and described and that all changes and modifications that come within the spirit of the disclosure are desired to be protected. There exist a plurality of advantages of the present disclosure arising from the various features of the apparatus, systems, and methods described herein. It will be noted that alternative embodiments of the apparatus, systems, and methods of the present disclosure may not include all of the features described, yet still benefit from at least some of the advantages of such features. Those of ordinary skill in the art may readily devise their own implementations of the apparatus, systems, and methods that incorporate one or more of the features of the present disclosure.
This application claims the benefit of U.S. Provisional Patent Application No. 62/492,116, filed Apr. 29, 2017, the entire disclosure of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62492116 | Apr 2017 | US |