Dynamic image filter based on purchase transactions
By receiving and processing quotation and purchase codes in social networks, identifying and linking transactions between users and merchants, the problem of poor integration of social networks and payment processing systems in the prior art is solved, and a more convenient e-commerce transaction experience and user interaction are achieved.
Patent Information
- Application Number
- CN202510020000.6
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2018-07-31
- Filing Date
- 2019-07-31
- Publication Date
- 2025-05-09
AI Technical Summary
The existing social networks are difficult to effectively integrate payment processing systems, which limits the convenience and experience of users in e-commerce transactions in social networks.
By receiving a quote code associated with a merchant's quote, the quote is identified and associated with the user; receiving a purchase code, determining its association with the merchant's quote, and detecting the completion of the purchase transaction; upon completion of the transaction, additional image filters are added in response to enable the device to add visual indicators associated with the merchant in the media content item.
It enables more convenient e-commerce transactions in social networks and enhances user experience. By enabling additional features after transactions are completed, such as adding merchant logos to images, it improves user-merchant interaction.
Smart Images

Figure CN119963194A_ABST
Abstract
Description
[0001] This application is a divisional application of the Chinese patent application “Dynamically Configurable Social Media Platform” with application number 201980050728.6 (filing date July 31, 2019).
[0002] Priority claim
[0003] This application claims priority to U.S. Provisional Patent Application Serial No. 16 / 051,067, filed on July 31, 2018, the benefit of which is hereby claimed, and the contents of which are incorporated herein by reference in their entirety. Technical Field
[0004] The present disclosure generally relates to the technical field of social networks. In particular, methods, systems and devices for facilitating e-commerce transactions via social networks are disclosed. Background Art
[0005] The role of social networks in users' daily activities is expanding. Initially, social networks were a way to keep in touch with friends by sharing messages and other content (such as photos). Soon, social networks became a way to obtain information from a variety of content sources (such as news, weather, and other information). Users enjoy a single unified interface through which they can complete many electronic tasks without having to switch applications or learn multiple usage paradigms to complete these tasks. The use of social networks for payment processing is a recent development that further unifies the user's computing interface. As users continue to take advantage of these new capabilities, improved methods of integrating social networks with payment processing are expected. Summary of the invention
[0006] According to one aspect of the present disclosure, a method is provided, comprising: receiving an offer code associated with an offer from a merchant from a device associated with a user; identifying the offer based on the offer code; storing an association between the offer and the user based on the identification of the offer; receiving a purchase code from the device; determining that the purchase code is associated with the offer from the merchant; detecting completion of a purchase transaction, the purchase transaction having been completed based on the association between the offer and the purchase code; and in response to detecting completion of the purchase transaction, enabling a list of available image filters on the device to include additional image filters, the additional image filters enabling the device to add a visual indicator associated with the merchant to a media content item, the media content item comprising image data captured on the device.
[0007] According to another aspect of the present disclosure, a system is provided, comprising: one or more processors; and a memory storing instructions, which, when executed by the one or more processors, configure the system to perform operations, the operations comprising: receiving a quote code associated with a quote from a merchant from a device associated with a user; identifying the quote based on the quote code; storing an association between the quote and the user based on the identification of the quote; receiving a purchase code from the device; determining that the purchase code is associated with the quote from the merchant; detecting completion of a purchase transaction, the purchase transaction having been completed based on the association between the quote and the purchase code; and in response to detecting completion of the purchase transaction, enabling a list of available image filters on the device to include additional image filters, the additional image filters enabling the device to add a visual indicator associated with the merchant to a media content item, the media content item comprising image data captured on the device.
[0008] According to another aspect of the present disclosure, a non-transitory computer-readable storage medium is provided, comprising instructions that, when executed, configure a hardware processing circuit to perform operations, the operations comprising: receiving a quote code associated with a quote from a merchant from a device associated with a user; identifying the quote based on the quote code; storing an association between the quote and the user based on the identification of the quote; receiving a purchase code from the device; determining that the purchase code is associated with the quote from the merchant; detecting completion of a purchase transaction, the purchase transaction having been completed based on the association between the quote and the purchase code; and in response to detecting completion of the purchase transaction, enabling a list of available image filters on the device to include additional image filters, the additional image filters enabling the device to add a visual indicator associated with the merchant to a media content item, the media content item comprising image data captured on the device. BRIEF DESCRIPTION OF THE DRAWINGS
[0009] In the accompanying drawings, which are not necessarily drawn to scale, like numbers may describe similar components in different views. Like numbers with different letter suffixes may represent different instances of similar components. In the figures of the accompanying drawings, some embodiments are shown by way of example and not limitation.
[0010] Figure 1 is an exemplary block diagram of a messaging system for exchanging data (eg, messages and associated content) over a network.
[0011] Figure 2 is a block diagram showing more details about a messaging system according to some embodiments.
[0012] Figure 3 Shows Figure 1 An exemplary database utilized by the messaging system of FIG.
[0013] Figure 4A An example relational design for a portion of database 120 is shown.
[0014] Figure 4B An example relational design for a portion of database 120 is shown.
[0015] Figure 4C An example relational design for a portion of database 120 is shown.
[0016] Figure 5 An exemplary optical code is shown.
[0017] Figure 6 An exemplary use of optical codes to obtain product information is shown.
[0018] Figure 7 is a data flow diagram illustrating the flow of data that can be implemented in one or more disclosed embodiments.
[0019] Figure 8 An example data flow is shown that may be implemented in some disclosed embodiments.
[0020] Fig.9A A user interface is shown that can apply one or more image filters to an image.
[0021] Fig. 9B A zoomed-in view of the image filter list is shown.
[0022] Fig.10 is a flow chart of a method for configuring a social networking application in response to redemption of an offer.
[0023] Fig.11 is a block diagram illustrating an example software architecture.
[0024] Fig.12 is a block diagram illustrating exemplary components (also referred to herein as “modules”) of a machine. DETAILED DESCRIPTION
[0025] The following description includes systems, methods, techniques, instruction sequences, and computer program products that embody the illustrative embodiments of the present disclosure. In the following description, for the purpose of explanation, many specific details are set forth to provide an understanding of the various embodiments of the subject matter of the present invention. However, it will be apparent to those skilled in the art that embodiments of the subject matter of the present invention can be practiced without these specific details. Typically, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.
[0026] QR codes and other optical barcodes (e.g., Universal Product Code (UPC) barcodes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Hypercode) are a convenient way to share small pieces of information with mobile devices, wearable devices, and other smart devices. For example, a QR code is a two-dimensional optical barcode that encodes information readable by devices equipped with a camera sensor (e.g., a smartphone).
[0027] To further increase integration between payment processing systems and social networks, the disclosed embodiments propose a technical solution that, in certain aspects, can selectively enable various social network features in response to activity within the payment system. As an example, a user can take advantage of a promotion offered by a merchant by first capturing an image of the promotion using a camera of their mobile device. After capturing the image, the mobile device can upload identification information of the offer (e.g., a code encoded in the promotional image) to the social network. The social network can then map the code to a predetermined offer at a particular merchant. Information indicating that the user has chosen to capture the offer using the camera of their mobile device is recorded within the user information on the social network.
[0028] At a later time, the user may visit the merchant and, when making a purchase, use the payment system integrated with the social network to make the purchase. As part of completing the purchase transaction, the social network may communicate with the merchant system. Based on this communication, the social network may determine the amount of the transaction and may communicate to the merchant a payment authorization for the transaction.
[0029] The social network, while processing a purchase transaction, may also note the user's prior interest in a merchant's offer. In response, a purchase transaction may be conducted based on the offer. For example, if the offer is for a specific discount, the discount may be applied to the purchase transaction. If an offer for a free item is provided upon redemption, the user may be notified that the free item is available to them. In some aspects, when the merchant completes their portion of the purchase transaction, they may notify the social network that their portion of the transaction is complete. Additionally, the merchant may identify one or more features of the social network that are now enabled for the user as a result of the user completing the purchase transaction (and redeeming the offer) at the merchant.
[0030] Merchant-enabled features can enhance the user's experience when using a social network and, in some cases, can also achieve certain business goals for the merchant. For example, if a merchant is sponsoring a particular event that a user may be attending, the merchant may make one or more image filters available to the user after the user completes a transaction at the merchant. In some aspects, the filters may be responsive to the geographic location of the user's mobile device. For example, if the filter is applied to an image while the mobile device is in the vicinity of an event sponsored by the merchant, the filter may add additional visual indicators to the image. In some aspects, the filter may also add a quote associated with the merchant to the image. Thus, if the user chooses to share the image with friends on the social network, their friends may also be able to take advantage of the quote.
[0031] Figure 1 1 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes a plurality of client devices 102, each of which hosts a plurality of applications including a messaging client application 104. Each messaging client application 104 is communicatively coupled to other instances of the messaging client application 104 and a messaging server system 108 via a network 106 (e.g., the Internet). As used herein, the term "client device" may refer to any machine that interfaces with a communication network (e.g., network 106) to obtain resources from one or more server systems or other client devices. The client device may be, but is not limited to, a mobile phone, a desktop computer, a portable computer, a portable digital assistant (PDA), a smart phone, a tablet computer, an ultrabook, a netbook, a portable computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics system, a game console, a set-top box, or any other communication device that a user may use to access a network.
[0032] exist Figure 1 In the example shown, each messaging client application 104 is capable of communicating and exchanging data with another messaging client application 104 and a messaging server system 108 via a network 106. The data exchanged between a messaging client application 104 and a messaging server system 108 includes functionality (e.g., commands to call functions) and payload data (e.g., text, audio, video, or other multimedia data).
[0033] The network 106 may include an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, The network 106 or a portion of the network 106 may include a wireless or cellular network, and the connection to the network 106 may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other types of cellular or wireless couplings. In this example, the coupling may implement any of a variety of types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) network, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other standards defined by various standards development organizations, other remote protocols, or other data transmission technologies.
[0034] The messaging server system 108 provides server-side functionality to certain messaging client applications 104 via the network 106. Although certain functions of the system 100 are described herein as being performed by the messaging client applications 104 or by the messaging server system 108, it should be understood that the location of certain functions in the messaging client applications 104 or the messaging server system 108 is a design choice. For example, it may be technically preferable to first deploy certain technologies and functions within the messaging server system 108 and then migrate the technologies and functions to the messaging client applications 104 where the client devices 102 have sufficient processing power.
[0035] The messaging server system 108 supports various services and operations provided to the messaging client applications 104. Such operations include sending data to the messaging client applications 104, receiving data from the messaging client applications 104, and processing data generated by the messaging client applications 104. As examples, the data may include message content, client device information, geo-location information, media annotations and overlays, message content persistence conditions, social network information, and live event information. The data exchange in the messaging system 100 is invoked and controlled through functions available through the user interface (UI) of the messaging client applications 104.
[0036] Returning now specifically to the messaging server system 108, an application program interface (API) server 110 is coupled to and provides a programming interface to an application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 in which data associated with messages processed by the application server 112 is stored.
[0037] The API server 110 receives and sends message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the API server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client application 104 in order to invoke functions of the application server 112. The API server 110 exposes various functions supported by the application server 112, including: account registration; login functionality; sending messages from a particular messaging client application 104 to another messaging client application 104 via the application server 112; sending media files (e.g., images or videos) from the messaging client application 104 to the application server 112 for possible access by another messaging client application 104; setting of collections of media data (e.g., stories); retrieval of a friend list of a user of the client device 120; retrieval of such collections; retrieval of messages and content; adding and removing friends from a social graph; the location of friends in a social graph; detecting application events (e.g., related to the messaging client application 104).
[0038] The application server 112 hosts a number of applications and subsystems, including a messaging server application 114 and a social networking system 116. The messaging server application 114 implements a number of message processing techniques and functions, particularly relating to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client application 104. As described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). The messaging server application 114 then makes these collections available to the messaging client applications 104. Other processor- and memory-intensive processing of the data can also be performed on the server side by the messaging server application 114, given the hardware requirements for such processing.
[0039] The social networking system 116 supports various social networking functions and services and makes these functions and services available to the messaging server application 114. To do so, the social networking system 116 maintains and accesses an entity graph within the database 120. Examples of functions and services supported by the social networking system 116 include identifying other users of the messaging system 100 with whom a particular user has a relationship or with whom the user is "following," as well as also identifying other entities and interests of a particular user.
[0040] The methods, devices, and systems disclosed herein may provide the social messaging system 100 with e-commerce functionality for products offered by the social network provider as well as products offered by entities that are not closely associated with the social network provider. For example, a separate company or separate organization without common ownership may offer products for sale within the native user interface of the social networking system 116. Users of the social messaging system 100 may utilize the user interface native to the social messaging system 100 to perform e-commerce functionality for these products, resulting in an easier to use e-commerce system than a traditional social networking system, which may require transitioning from the user interface of the social networking system to a separate e-commerce application when purchasing products offered by an independent organization or entity.
[0041] Figure 2 1 is a block diagram showing further details about the messaging system 100 according to an example embodiment. Specifically, the messaging system 100 is shown to include a messaging client application 104 and an application server 112, which in turn embody a plurality of subsystems, namely, a transient timer system 202, a collection management system 204, a quote management system 206, a payment system 208, and a dynamic functionality system 210.
[0042] The transient timer system 202 is responsible for enforcing temporary access to content permitted by the messaging client application 104 and the messaging server application 114. To this end, the transient timer system 202 incorporates a plurality of timers that selectively display and enable access to messages and associated content via the messaging client application 104 based on duration and display parameters associated with the message, or a collection of messages (e.g., a story). Further details regarding the operation of the transient timer system 202 are provided below.
[0043] The collection management system 204 is responsible for managing collections of media (e.g., collections of text, images, video, and audio data). In some examples, collections of content (e.g., messages including images, videos, text, and audio) may be organized into "event galleries" or "event stories." Such collections may be available for a specified period of time (e.g., the duration of an event to which the content is related). For example, content related to a concert may be available as a "story" for the duration of the concert. The collection management system 204 may also be responsible for publishing an icon that provides notification of the existence of a particular collection to the user interface of the messaging client application 104.
[0044] The offer management system 206 may manage data associated with offers that may be provided by the social networking system 116. An offer may be associated with a particular merchant and may provide one or more benefits when a user of the social networking system 116 transacts with the merchant. For example, an offer may provide a discounted price at a merchant. In some aspects, an offer may provide for the accumulation of loyalty points for a merchant, or may provide a free item from a merchant associated with a purchase transaction. The offer management system 206 may store information related to offers provided by the social networking system 116. Figure 4A Discuss the information.
[0045] The payment system 208 may provide payment processing within the social networking system 116. The payment system 208 may interface with one or more merchants that support offers, for example, via the social networking system 116. The payment system 208 may capture a transaction code that may be scanned by the client device 102. The payment system 208 may interface with the merchant to determine an amount associated with the transaction. The payment system 208 may also apply one or more offers to the transaction to determine a discount amount for the transaction. The payment system 208 may further authorize the merchant to debit the authorized amount from a credit card stored in the payment system 208.
[0046] The dynamic functionality system 210 may selectively enable various functionality of the social networking system 116. In some aspects, functionality may be selectively enabled based on information received from the offer management system 206. For example, in some aspects, when an offer managed by the offer management system 206 is redeemed by a user of the social networking system 116, the dynamic functionality system 210 may configure the social networking system 116 to make additional image filters available to the user. As an operational example, redeeming an offer at a popular grocery store may enable an image filter for the user, where the image filter is configured to add the logo of the grocery store to an image provided by the user.
[0047] Figure 33 is a schematic diagram 300 illustrating data that may be stored in database 120 of messaging server system 108 according to certain exemplary embodiments. Although the contents of database 120 are illustrated as including a plurality of tables, it should be understood that data may be stored in other types of data structures (e.g., as an object-oriented database).
[0048] The database 120 includes message data stored in a message table 314. The entity table 302 stores entity data including an entity graph 304. The entities whose records are maintained within the entity table 302 may include individuals, corporate entities, organizations, objects, places, events, etc. Regardless of the type, any entity about which the messaging server system 108 stores data may be a recognized entity. Each entity has a unique identifier and an entity type identifier (not shown).
[0049] The entity graph 304 also stores information about relationships and associations between entities. Such relationships can be social, professional (e.g., working in the same company or organization), interest-based, or activity-based, just to name a few.
[0050] The database 120 also stores annotation data in the form of examples of filters in the annotation table 312. The filters for which data is stored in the annotation table 312 are associated with videos (for which data is stored in the video table 310) and / or images (for which data is stored in the image table 308) and are applied to the videos and / or images. In one example, the filter is displayed as an overlay superimposed on an image or video during presentation to the recipient user. The filter can be of various types, including a user-selected filter from a filter library presented to the sender user by the messaging client application 104 when the sender user is composing a message. Other types of filters include geographic location filters (also referred to as geo-filters) that can be presented to the sender user based on geographic location. For example, based on geographic location information determined by a global positioning system (GPS) unit of the client device 102, the messaging client application 104 can present a geographic location filter specific to a neighborhood or a specific location within a user interface. Another type of filter is a data filter, which may be selectively presented to the sender user by the messaging client application 104 based on other input or information collected by the client device 102 during the message creation process. Examples of data filters include the current temperature at a particular location, the current speed the sender user is traveling, the battery life of the client device 102, or the current time.
[0051] Other annotation data that may be stored in the image table 308 is so-called "shot" data. A "shot" may be real-time special effects and sounds that may be added to an image or video.
[0052] As described above, the video table 310 stores video data, which in one embodiment is associated with a message for which the video data is maintained in the message table 314. Similarly, the image table 308 stores image data associated with a message for which the message data is stored in the entity table 302. The entity table 302 may associate various annotations from the annotation table 312 with the various images and videos stored in the image table 308 and the video table 310.
[0053] The story table 306 stores data related to a collection of messages and associated images, video, or audio data that are compiled into a collection (e.g., a story, or gallery). The creation of a particular collection may be initiated by a particular user (e.g., a user for whom a record is maintained in the entity table 302). A user may create a "personal story" in the form of a collection of content that the user has created and sent / broadcasted. To this end, the user interface of the messaging client application 104 may include a user-selectable icon to enable the sending user to add specific content to his or her personal story.
[0054] A collection may also constitute a "live story," which is a collection of content from multiple users that is created manually, automatically, or using a combination of manual and automatic techniques. For example, a "live story" may consist of a curated stream of user-submitted content from various locations and events. For example, a user whose client device has location services enabled and who is at a common location or event at a particular time may be presented with an option via the user interface of the messaging client application 104 to contribute content to a particular live story. The live story may be identified to the user by the messaging client application 104 based on his or her location. The end result is a "live story" told from the perspective of the community.
[0055] Another type of content collection is called a "location story," which enables users whose client devices 102 are located within a particular geographic location (e.g., on a college or university campus) to contribute to a particular collection. In some embodiments, contributions to location stories may require secondary authentication to verify that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).
[0056] Figure 4A An example relational design for a portion of database 120 is shown. Figure 4A1 shows a code mapping table 325, an offer table 330, a user table 340, and a claimed offer table 350. For an offer represented by a row of the offer table 330, the offer table 330 includes an offer ID 3002, a merchant identifier 3003, offer details 3004, and feature enablement details 3006. The offer ID 3002 uniquely identifies the offer and can be used in other tables to cross-reference the offer. The merchant identifier 3003 uniquely identifies the merchant associated with the offer. In some aspects, the offer details column 3004 may include multiple columns. The offer details column 3004 may include information about the nature of the offer, such as merchant information, discount information, eligible item information, etc. In some aspects, the feature enablement details column 3006 may include multiple columns. The feature enablement details column 3006 may define one or more features of a social network (such as a social network provided by the social networking system 116). For example, in some aspects, feature enablement details column 3006 may identify one or more filters, videos, stories, or other social network capabilities to be enabled when the offer (identified by offer ID 3002) has been redeemed.
[0057] User table 340 includes user identifier 3012 and credit card information 3014. In some aspects, credit card information 3014 may provide information (e.g., number, expiration date, code) about multiple credit cards that may be used by the user (e.g., 3012) for payment.
[0058] Requested quotes table 350 includes an offer ID column 3022, a user ID column 3024, specific credit card information for a credit card associated with an offer (e.g., 3022), and an indication of whether the requested offer has been redeemed 3028. There may be multiple rows in requested quotes table 350 for one or more offers in quotes table 330. For example, if offers were requested by multiple users, there may be multiple entries for each user in the requested quotes table. The combination of offer ID 3022 and user ID 3024 uniquely identifies the requested offer in requested quotes table 350.
[0059] Figure 4B An example relational design for a portion of database 120 is shown. Figure 4B The merchant table 360 and the function table 370 are included. The merchant table 360 may include a merchant identifier 362 and merchant interface information 364. The merchant identifier 362 may provide a cross-reference with the merchant identifier 3003 included in the quote table 330. The merchant interface information 364 may define the information required for the social networking system 116 to interface with the system maintained by a particular merchant. For example, the merchant interface information 364 may include: a host name, a protocol identifier, an IP address, a uniform resource locator, or other information necessary to perform electronic communications with a merchant system.
[0060] Figure 4C An example relational design of a portion of database 120 is shown. Figure 4C A purchase code table 380 is included. Purchase code table 380 provides an association between purchase codes and merchants. Thus, when social networking system 116 receives purchase code 382, it may identify merchant 384. Merchant identifier 384 may be cross-referenced with other merchant identifiers (such as any of merchant identifiers 3003 and / or 362). Purchase code table 380 may also include offer identifier 386. Offer identifier 386 may identify an offer to be used with purchase code 382. Offer identifier 386 may be cross-referenced with any other offer identifiers discussed above.
[0061] Figure 5 An exemplary optical code is shown. The exemplary optical code 500 uses a custom graphic for a viewfinder pattern or alignment pattern. The optical code 500 includes a custom graphic 510 (e.g., a company logo) and a mark 520, which represents the data encoded into the optical code. In this example, the custom graphic 510 is a company logo, such as a "ghost" logo. It will be understood that the "ghost" logo is only an example custom graphic, and other graphics, icons, or symbols can be used as a viewfinder pattern or alignment pattern using the techniques described herein. Other example custom graphics used as functional patterns may include designs with multiple paths, multiple polygons, multiple aesthetic elements, or other design features.
[0062] In an alternative embodiment, the custom graphics 510 may be different from the company logo. In this example, the mark 520 is a point that is arranged in a pattern with a specific interval or position that can be readable by a machine. Although the optical code 500 displays the mark 520 as a point, other shapes and marks (e.g., a square or asymmetric shapes in various geometric shapes) may be used. The mark 520 may be arranged in a uniform pattern or an uneven pattern. In some cases, the mark may have different sizes or a uniform size. In addition, the mark 520 may be a predetermined arrangement, or an arrangement that can be dynamically determined when decoding data from the mark. In some embodiments, the custom graphics 510 and the mark 520 may be surrounded by a boundary shape, such as an outer box 525. Although the outer box 525 of Figure 500 is shown as a square with rounded corners, the outer box 525 may have the form of various other shapes using various geometric shapes.
[0063] Figure 6 The present invention is an overview of a specific example embodiment of recognizing and decoding an optical code to identify a merchant offer. In various aspects, the optical code may include a custom graphic as described above. As described with reference to example code 406 Figure 6 An example embodiment of which is arranged with reference to Figure 5The example optical code 500 described is similar. In diagram 400, scene 402 shows an offer 404 and a user 410, the offer 404 including an optical code 406. Figure 6 In the example embodiment of , offer 404 is displayed as a printed advertisement carried by a physical structure in a public space. It should be understood that the offer including optical code 406 can be displayed in various ways in other embodiments, such as on a user device display, a computer display, woven or otherwise affixed to clothing or another product, or included in various printed materials. Callout 412 depicts a magnified view of a portion of scene 402. Callout 412 includes a client device 102 of user 410, which includes an optical sensor (e.g., a camera sensor of a smart phone) operable to detect an optical signal 408 of optical code 406.
[0064] In the example embodiment, client device 102 captures an image of offer 404 including optical code 406. Note that in this example embodiment, user 410 need not capture the entire offer 404, but may instead capture an image more closely focused on optical code 406. Offer management system 206 identifies offer 404 from optical code 406. User 410 may then redeem offer 404 at the merchant that provided the offer, details of which will be discussed further below.
[0065] Figure 7 700 is a data flow diagram illustrating data flows implemented in one or more example embodiments. Data flow 700 illustrates that in this example embodiment, user 410 uses their client device 102 to capture an image. The image represents an identification code (e.g., 406) for an offer (e.g., 404). The offer may appear in a variety of forms, including code 705a, user-generated content 705b, or advertisement 705c. Any of code 705a, user-generated content 705b, or advertisement 705c may include a code or other optically encoded data value that may be extracted from the captured image. Figure 7 The data flow 700 will be discussed in conjunction with the example portion of the database 120, as discussed above with respect to Figure 4A Thus, when the user 410 scans the code, the disclosed embodiments can identify the offer (e.g., from the code). For example, in some aspects, some disclosed embodiments can refer to Figure 4A The code mapping table 325 shown. The code mapping table 325 can map the code 2992 read from the image captured by the client device 102 to the offer identifier 2994. The code 2992 can be equivalent to Figure 7 Code 705a is shown.
[0066] User 410 may then request the offer by associating the offer (identified by offer ID 2994) with credit card 706 via social networking system 116. Social networking system 116 may store the information as described above with respect to Figure 4A The information related to the requested quote, the user 410, and the credit card 706 in the requested quote form 350 are discussed.
[0067] The social networking system 116 may also notify the organization 760 that supports or holds the credit card 706 of the solicited offer via one or more messages 750. For example, the one or more messages 750 may indicate to the organization 760 that the credit card 706 is associated with a particular offer. The organization 760 may store this information for later use.
[0068] Later, user 702 may use credit card 706 to make a purchase at merchant 740. Since organization 760 knows that credit card 706 is associated with an offer, organization 760 processes the purchase in accordance with the offer. This may include charging the credit card account for the full purchase amount 775. Organization 760 may also process a credit 780 to merchant 780 in accordance with the offer. For example, if the offer provides a 10% discount, merchant 740 may be notified of the 10% discount on amount 775. The discount may then also be applied to credit card 706. Organization 760 may also notify social networking system 116 via one or more messages 780 that the offer has been redeemed. In response to the offer being redeemed, social networking system 116 may review requested offer table 350 and mark the requested offer as redeemed. Social networking system 116 may also enable one or more features of the social networking system available to user client device 102. For example, in some aspects, one or more image filters may be enabled in response to the offer being redeemed. This may be seen below with respect to Figure 7 The functions to be enabled are determined in the quote table 3000 discussed.
[0069] Figure 8 800 shows an example data flow that may be implemented in some disclosed embodiments. Data flow 800 shows a user 410 using a client device 102. The user 410 captures an image of a quote. Similar to Figure 7In the data stream of the user 410, the offer can appear in various forms. For example, the offer can be in the form of a code 805a, user-generated content 805b, or an advertisement 805c. Scanning a quote in one of the offer forms 805a-c can cause the client device 102 to send a code embedded in the offer 805a, user-generated content 805b, or advertisement 805c to the social networking system 116. The user 410 can also associate a credit card 806 with the offer. In some aspects, the offer can be requested by the user without using a camera. For example, an advertisement or other user-generated content can be presented to the user 410. By entering a specific input, the user can request the offer associated with the advertisement or user content. For example, the specific content may prompt the user to "swipe up to request this offer!". If the user swipes up, the offer is requested.
[0070] Afterwards, user 410 may seek to purchase an item at merchant 840. The merchant may display a purchase code 850. In response, user 410 may scan purchase code 850 using client device 102. Client device 102 may send the purchase code 850 to social networking system 116 via message 855. Social networking system 116 may then communicate with merchant 840 regarding the purchase transaction in one or more messages 860. For example, social networking system 116 may send purchase code 850 to merchant 840. The merchant may send back to the social networking system indicating the purchase amount. Social networking system 116 may then authorize merchant 840 to charge one of user 702's credit cards 806 for the discount amount 865. Merchant 840 may then charge user 802's credit card 806 via credit card processor 870. When the purchase transaction has been completed, social networking system 116 may send one or more messages 875 to enable one or more functions associated with the redeemed offer.
[0071] Fig.9A A user interface is shown that can apply one or more image filters to an image. Fig.9A Two versions of user interface 950 are shown, shown as 952a and 952b. Version 952a shows image 954a before an image filter is applied, which image can be selected from image filter list 956a. Since no image filter is selected in version 952a, active filter indication 958a is empty. Second version 952b shows user interface 950 after an image filter has been applied to image 954a, as shown at 954b. Active filter indication 958b shows which image filter from list 956a is applied to image 954b. As discussed herein, in some aspects, some embodiments of the present disclosure may add one or more image filters to an image. Fig.9A List of image filters shown in 956a.
[0072] Fig. 9B An expanded view 960 of an image filter list 956a is shown. In some aspects, the expanded view 960 can be displayed in response to a selection or swipe gesture on the image filter list 956a. The expanded view 960 shows a first image filter list 956a. A second expanded view 970 shows a second image filter list 956b. The second image filter list 956b includes an additional image filter 972 that is not present in the image filter list 956a shown in the expanded view 960. In some aspects, embodiments of the present disclosure may enhance the image filter list 956a to include additional image filters (such as the image filter 972 shown in the expanded view 970) based on, for example, the completion of a purchase including the use of an offer solicited via an embodiment of the present disclosure. For example, a new image filter (e.g., 972) associated with a particular supplier may be provided using an offer from a particular supplier. For example, the new image filter may add the name and / or logo of the particular supplier to the image to which the image filter is applied.
[0073] Fig.10 is a flow chart of a method for configuring a social networking application in response to redemption of an offer. In some aspects, Fig.10 The processing circuit may be executed by one or more of the offer management system 206, the payment system 208, or the dynamic function system 210. For example, in some aspects, the processing circuit may be configured to use instructions stored in the hardware memory to execute the following reference Fig.10 The feature or features being discussed.
[0074] In box 905, the function of the social network application is associated with the offer of the merchant. For example, as described above, in some aspects, the offer table 330 can identify the offer (e.g., 3002) and associate the offer with one or more functions of the social network (e.g., 3006) and the merchant (e.g., 3003). The function can provide additional functions to users of the social network. For example, a function may be a single image filter that can be used in the user's social network session. When applied to an image, the filter can add additional content to the image. For example, the filter can add certain defined words to the image. In some aspects, the same filter or a second filter indicated by field 3006 can also add an optical code to the image mapped to the offer of the merchant. As described below, this can provide for sharing the offer with other social network users in the future. In some aspects, box 905 can add an entry to the code mapping table 325, which records the association between the optical code and the offer.
[0075] In block 910, a session is established with the user. In some aspects, establishing a session with the user may include: receiving authentication information from the user, such as a username and password for a user account; and comparing the received information with second authentication information stored in a user account database. If the received authentication information matches the second authentication information, block 910 may establish a session for the user. The session may associate the user's account with a particular client device so that input and output of the session are directed to the client device associated with the user account.
[0076] In block 915, a code is received from a client device via a session. In some aspects, the code is captured by a camera of the client device. Figure 6 As discussed, a user (e.g., 410) may capture an image of a quote (e.g., 404). An optical code (e.g., 406) may be embedded in the quote. In some other aspects, the code may be obtained by a client device based on a specific input received at the client device. For example, in some aspects, a user may request a quote by providing a specific input in response to the content. For example, an advertisement or other content may be presented to the user on a client device indicating that if the user swipes over the content in a particular manner, they may request a quote represented by the content. Once the user requests a quote, a code identifying the requested quote may then be sent by the client device to the social networking system 116 and / or received in block 915.
[0077] In block 920, an offer is identified based on the code. In some aspects, block 920 identifies an offer by searching for the offer based on the code, such as in a database or data store. As described above, some aspects may maintain a code mapping table (e.g., 325) that provides offers (e.g., 2994) based on a code (e.g., 2992).
[0078] In block 925, an association between the quote and the user and / or user account is stored based on identifying the quote according to the code received from the client device. For example, as described above, in some embodiments, a table of requested quotes (e.g., 350) may be maintained. The table of requested quotes (e.g., 350) may provide an association between users (e.g., 3024), their accounts, and quotes (e.g., 3022). Block 925 may write an entry (e.g., a row) to the table of requested quotes that records the association between the user and the quote. The entry may indicate that the quote was not redeemed (e.g., 3028). The entry may also indicate a specific credit card that was used in some respect with the quote (e.g., 3026).
[0079] In block 930, a purchase code is received from the client device. The purchase code may have been captured by a camera included in the client device. The client device may then send the purchase code to a server running the social networking system 116.
[0080] Block 935 determines that the purchase code is associated with a particular merchant. In some aspects, the determination may be made via a database lookup. For example, some embodiments may maintain a purchase code mapping table (e.g., 380) that provides a mapping from purchase codes to merchants. The mapping table may also indicate a particular offer associated with the purchase (e.g., 386). After the offer is identified, some embodiments may also maintain an offer table (e.g., 330) that maintains a mapping from offers to merchants.
[0081] In box 940, the purchase can be completed with the merchant. In some aspects, box 940 includes sending a message to the merchant system. In some aspects, the merchant system can be identified via the merchant table 360. For example, box 940 can identify the merchant interface information (e.g., 364) based on the merchant (e.g., 362) identified in box 935. The merchant interface information may include the host name and / or IP address of the system maintained by the merchant, which provides the completion of the e-commerce transaction. In some aspects, box 940 may include sending a message to the merchant system, which indicates the purchase code received in box 930. In response, the merchant system can send back a message indicating the purchase amount associated with the purchase code. In some aspects, box 940 can then calculate a new purchase amount based on the amount received from the merchant and the offer. For example, the offer can indicate a discount, for example. In some aspects, the discount can be a percentage discount relative to the total purchase amount, or can be related to a specific item included in the purchase. In this case, the merchant can send a list of items to be purchased, and the list can be received in box 940 (e.g., received from the social networking system 116). Block 940 may then determine whether the offer that applies to the item is included in the list of items to be purchased. Regardless of the specific offer, the purchase transaction is completed based on the offer. Block 940 may determine the final purchase amount based on the amount received from the merchant, certain aspects of the purchase list, and the offer. Block 940 may then send an authorization to the merchant to charge the user's credit card for a specific amount determined based on the offer.
[0082] In block 945, a message is sent to the client device. The message is configured to open a function of the social network. The function may be associated with an offer. The transmission of the message may be in response to completion of a purchase transaction with the merchant, or at least in response to determining that the purchase code received from the client device is associated with the merchant.
[0083] Software Architecture
[0084] Fig.11is a block diagram illustrating an example software architecture 1006 that may be used in conjunction with the various hardware architectures described herein. Fig.11 is a non-limiting example of a software architecture, and it should be understood that many other architectures may be implemented to facilitate the functionality described herein. Software architecture 1006 may be implemented in a variety of environments such as Fig.12 1000, which includes, among other things, processor 1004, memory / storage 1006, and I / O components 1018. Representative hardware layers 1052 are shown and may represent, for example, Fig.12 The machine 1100 of the embodiment of the present invention is shown in FIG. 10. The representative hardware layer 1052 includes a processing unit 1054 having associated executable instructions 1004. The executable instructions 1004 represent executable instructions of the software architecture 1006, including implementations of the methods, components, and contents described herein. The hardware layer 1052 also includes a memory and / or storage device 1056, which also has executable instructions 1004. The hardware layer 1052 may also include other hardware 1058.
[0085] As used herein, the term "component" may refer to a device, physical entity, or logic having boundaries defined by function or subroutine calls, branch points, APIs, and / or other techniques of partitioning or modularization that provide specific processing or control functions. Components may be combined with other components through their interfaces to perform machine processes. A component may be a packaged functional hardware unit designed to be used with other components and as part of a program that typically performs a specific function of related functions.
[0086] A component may constitute a software component (e.g., code implemented on a machine-readable medium) or a hardware component. A "hardware component" is a tangible unit that is capable of performing certain operations and that can be configured or arranged in some physical manner. In various exemplary embodiments, one or more computer systems (e.g., a stand-alone computer system, a client computer system, or a server computer system) or one or more hardware components of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware component that operates to perform certain operations as described herein. A hardware component may also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component may include dedicated circuitry or logic that is permanently configured to perform certain operations.
[0087] A hardware component may be a dedicated processor, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). A hardware component may also include programmable logic or circuits that are temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function, and is no longer a general purpose processor. It should be understood that the decision to mechanically implement a hardware component in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software) may be driven by cost and time considerations.
[0088] A processor may be or include any circuit or virtual circuit (a physical circuit emulated by logic executed on an actual processor) that manipulates data values according to control signals (e.g., etc.) and produces corresponding output signals for operating a machine. The processor may be, for example, a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio frequency integrated circuit (RFIC), or any combination thereof. The processor may further be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously.
[0089] Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, that is, an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner or perform certain operations described herein. Considering embodiments in which the hardware components are temporarily configured (e.g., programmed), each of the hardware components does not need to be configured or instantiated at any one time. For example, in the case where the hardware component includes a general-purpose processor that is configured by software to be a special-purpose processor, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware components) at different times. Therefore, the software configures a specific processor or processors accordingly, for example, to constitute a specific hardware component at one time, and to constitute different hardware components at different times. Hardware components can provide information to other hardware components and receive information from other hardware components. Therefore, the described hardware components can be considered to be communicatively coupled. In the case where multiple hardware components exist at the same time, communication can be achieved by signal transmission between two or more hardware components (e.g., through appropriate circuits and buses). In embodiments where multiple hardware components are configured or instantiated at different times, communication between such hardware components may be achieved, for example, by storing and retrieving information in a memory structure accessible to the multiple hardware components.
[0090] For example, a hardware component can perform an operation and store the output of the operation in a memory device coupled to its communication. Then, another hardware component can access the memory device at a later time to retrieve and process the stored output. The hardware component can also initiate communication with an input or output device, and can operate on a resource (e.g., a collection of information). Various operations of the example methods described herein are at least partially performed by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform related operations. Whether temporarily or permanently configured, such a processor may constitute a processor-implemented module that operates to perform one or more operations or functions described herein. As used herein, a "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the method described herein may be at least partially processor-implemented, wherein a specific processor or multiple processors are examples of hardware. For example, at least some of the operations of the method may be performed by one or more processors or processor-implemented components.
[0091] In addition, one or more processors can also operate to support the performance of related operations in a "cloud computing" environment or as a "software as a service" (SaaS). For example, at least some of the operations can be performed by a group of computers (as an example of a machine including a processor), where these operations can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The performance of certain operations can be distributed between processors, not only residing in a single machine, but also deployed across multiple machines. In some exemplary embodiments, the processor or the component implemented by the processor can be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other exemplary embodiments, the processor or the component implemented by the processor is distributed across multiple geographic locations.
[0092] exist Fig.11 In the example architecture of , software architecture 1006 can be conceptualized as a stack of layers with each layer providing specific functionality. For example, software architecture 1006 can include layers such as operating system 1002, library 1020, framework / middleware 1018, application 1016, and presentation layer 1014. Operably, application 1016 and / or other components within the layer can call API call 1008 through the software stack, and receive the response as message 1010. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile or dedicated operating systems may not provide a framework / middleware 1018 layer, while others may provide such a layer. Other software architectures may include additional layers or different layers.
[0093] The operating system 1002 can manage hardware resources and provide public services. The operating system 1002 may include, for example, a kernel 1022, services 1024, and drivers 1026. The kernel 1022 may act as an abstraction layer between the hardware and other software layers. For example, the kernel 1022 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. Services 1024 may provide other public services to other software layers. Drivers 1026 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 1026 include display drivers, camera drivers, drives, flash drives, serial communications drivers (e.g., Universal Serial Bus (USB) drivers), drivers, audio drivers, power management drivers, etc., depending on the hardware configuration.
[0094] The library 1020 provides a common infrastructure used by the application 1016 and / or other components and / or layers. The library 1020 generally provides functions that allow other software components to perform tasks in a simpler manner than directly interfacing with the underlying operating system 1002 functions (e.g., kernel 1022, service 1024, and / or driver 1026). The library 1020 may include a system library 1044 (e.g., a C standard library), which may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the library 1020 may include an API library 1046 such as a media library (e.g., a library that supports the presentation and manipulation of various media formats such as MPREG4, H.264, MP3, AAC, AMR, JPG, or PNG), a graphics library (e.g., an OpenGL framework that can be used to present 2D and 3D graphics content on a display), a database library (e.g., SQLite that can provide various relational database functions), a Web library (e.g., WebKit that can provide Web browsing functions), etc. The library 1020 may also include a variety of other libraries 1048 to provide many other APIs to the application 1016 and other software components / modules.
[0095] The framework / middleware 1018 provides a higher level common infrastructure that can be used by the applications 1016 and / or other software components / modules. For example, the framework / middleware 1018 can provide various graphical user interface (GUI) functions, advanced resource management, advanced location services, etc. The framework / middleware 1018 can provide a wide range of other APIs that can be used by the applications 1016 and / or other software components / modules, some of which may be specific to a particular operating system or platform.
[0096] Applications 1016 include built-in applications 1038 and / or third-party applications 1040. Examples of representative built-in applications 1038 may include, but are not limited to, contact applications, browser applications, book reader applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 1040 may be used by entities other than the vendor of a particular platform using Android TM or iOS TM Software Development Kit (SDK) for developing applications and can be used on platforms such as IOS TM ANDROID TM , Mobile software running on a mobile operating system such as the iPhone or other mobile operating system. The third-party application 1040 can call API calls 1008 provided by a mobile operating system (such as the operating system 1002) to facilitate the functions described herein.
[0097] Applications 1016 may use built-in operating system functionality (e.g., kernel 1022, services 1024, and / or drivers 1026), libraries 1020, and framework / middleware 1018 to create a user interface that interacts with a user of the system. Alternatively or in addition, in some systems, interaction with the user may occur through a presentation layer such as presentation layer 1014. In these systems, the application / component "logic" may be separated from aspects of the application / component that interact with the user.
[0098] Example Machine
[0099] Fig.12 1 is a block diagram illustrating exemplary components (also referred to herein as “modules”) of the machine 1100. In some aspects, the machine is configured to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically, Fig.12A diagrammatic representation of a machine 1100 in the example form of a computer system is shown, within which instructions 1110 (e.g., software, programs, applications, applet, application software or other executable code) for causing the machine 1100 to perform any one or more of the methodologies discussed herein can be executed. Thus, the instructions 1110 can be used to implement the modules and components described this time. The instructions 1110 transform a general non-programmed machine 1100 into a specific machine 1100 that is programmed to perform the functions described and shown in the described manner. In alternative embodiments, the machine 1100 operates as a stand-alone device, or can be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1100 can operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a point-to-point (or distributed) network environment. The machine 1100 may include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a network device, a network router, a network switch, a network bridge, or any machine capable of executing instructions 1110 that sequentially or otherwise specify actions to be taken by the machine 1100. In addition, while only a single machine 1100 is shown, the term "machine" should also be construed to include a collection of machines that individually or collectively execute instructions 1110 to perform any one or more of the methodologies discussed herein.
[0100] The machine 1100 may include a processor 1104, a memory / storage 1106, and an I / O component 1118 that may be configured to communicate with each other, such as via a bus 1102. The memory / storage 1106 may include a memory 1114 (such as a main memory or other memory storage device) and a storage unit 1116, both of which may access the processor 1104 via the bus 1102. The storage unit 1116 and the memory 1114 store instructions 1110 that embody any one or more of the methodologies or functions described herein. The instructions 1110 may also reside, in whole or in part, within the memory 1114, within the storage unit 1116, within at least one processor 1110 of the processor 1104 (e.g., within a cache memory of the processor), or any suitable combination thereof during execution thereof by the machine 1100. Thus, the memory 1114, the storage unit 1116, and the memory of the processor 1104 are examples of machine-readable media. In some aspects, the processor 410 and the processor 1104 may be the same processor.
[0101] As used herein, the terms "machine-readable medium", "computer-readable medium", etc. may refer to any component, device, or other tangible medium of a device capable of temporarily or permanently storing instructions and data. Examples of such media may include, but are not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage devices (e.g., electrically erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be deemed to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) capable of storing instructions. The term "machine-readable medium" may also be deemed to include any medium or combination of multiple media capable of storing instructions (e.g., code) executed by a machine, so that when the instructions are executed by one or more processors of the machine, the machine performs any one or more of the methodologies described herein. Therefore, "machine-readable medium" refers to a single storage device or device, as well as a "cloud-based" storage system or storage network comprising multiple storage devices or devices. The term "machine-readable medium" does not include transient signals themselves.
[0102] I / O components 1118 may include a variety of components that provide a user interface for receiving input, providing output, generating output, sending information, exchanging information, collecting measurements, etc. The specific I / O components 1118 included in the user interface of a particular machine 1110 will depend on the type of machine. For example, a portable machine such as a mobile phone will likely include a touch input device or other such input mechanism, while a headless server machine will likely not include such a touch input device. It should be understood that I / O components 1118 may include Fig.12Many other components are not shown in the figure. The I / O components 1118 are grouped according to function only to simplify the following discussion, and the grouping is by no means limiting. In various exemplary embodiments, the I / O components 1118 may include output components 1126 and input components 1128. The output components 1126 may include visual components (e.g., displays such as plasma display panels (PDPs), light emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tubes (CRTs)), acoustic components (e.g., speakers), tactile components (e.g., vibration motors, resistor mechanisms), other signal generators, etc. The input components 1128 may include alphanumeric input components (e.g., keyboards, touch screens configured to receive alphanumeric input, photo-optical keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touch pads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touch screens or other tactile input components that provide the location and / or force of touch or touch gestures), audio input components (e.g., microphones), etc. Input components 1128 may also include one or more image capture devices, such as a digital camera for generating digital images and / or video.
[0103] In further exemplary embodiments, the I / O component 1118 may include a biometric component 1130, a motion component 1134, an environment component 1136, or a position component 1138, as well as a plurality of other components. For example, the biometric component 1130 may include a component for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition), etc. The motion component 1134 may include an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a rotation sensor component (e.g., a gyroscope), etc. Environmental component 1136 may include, for example, an illumination sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor that detects hazardous gas concentrations or measures pollutants in the atmosphere for safety purposes), or other components that may provide indications, measurements, or signals corresponding to the surrounding physical environment. Position component 1138 may include a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which altitude can be derived), an orientation sensor component (e.g., a magnetometer), and the like.
[0104] A variety of technologies may be used to implement communications. I / O components 1118 may include a communications component 1140 that is operable to couple machine 1100 to network 1132 or device 1120 via coupling 1124 and coupling 1122, respectively. For example, communications component 1140 may include a network interface component or other suitable device that interfaces with network 1132. In other examples, communications component 1140 may include a wired communications component, a wireless communications component, a cellular communications component, a near field communications (NFC) component, a wireless communications ... Components (e.g. Low energy consumption), Components, and other communication components that provide communication via other modalities. Device 1120 may be another machine or any of a variety of peripheral devices (eg, a peripheral device coupled via USB).
[0105] In addition, the communication component 1140 can detect an identifier or include a component that can be operated to detect an identifier. For example, the communication component 1140 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor that detects a one-dimensional barcode such as a universal product code (UPC) barcode; a multi-dimensional barcode such as a Quick Response (QR) code, an Aztec code, a data matrix, a data map, a MaxiCode, a PDF4111, a super code, a UCC RSS-2D barcode, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying an audio signal of a tag). In addition, various information can be obtained via the communication component 1140, such as positioning via Internet Protocol (IP) geolocation, location information ... Positioning via signal triangulation, positioning via detection of NFC beacon signals that can indicate a specific location, etc.
[0106] Where phrases similar to "at least one of A, B, or C," "at least one of A, B and C," "one or more of A, B or C," or "one or more of A, B and C" are used, it is intended that the phrase be interpreted to mean: A can exist alone in an embodiment, B can exist alone in an embodiment, C can exist alone in an embodiment, or any combination of elements A, B, and C can exist in a single embodiment; for example, A and B, A and C, B and C, or A and B and C can exist.
[0107] Changes and modifications may be made to the disclosed embodiments without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure as expressed by the appended claims.
[0108] A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notices apply to the software and data described below and in the accompanying drawings that constitute a part of this document.
Claims
1. A method comprising: receiving, from a device associated with a user, an offer code associated with an offer from a merchant; Based on the quote code, identifying the quote; Based on the identification of the offer, storing an association between the offer and the user; receiving a purchase code from the device; determining that the purchase code is associated with the offer from the merchant; detecting completion of a purchase transaction, the purchase transaction being completed based on the association between the offer and the purchase code; as well as In response to detecting completion of the purchase transaction, causing the list of available image filters on the device to include additional image filters that enable the device to add a visual indicator associated with the merchant to a media content item that includes image data captured on the device.
2. The method according to claim 1, further comprising: Causing generation of the media content item including the image data captured on the device and the visual indicator associated with the merchant.
3. The method according to claim 2, wherein: The additional image filter displays the visual indicator as an overlay on the image data captured on the device.
4. The method according to claim 1, wherein: The visual indicator includes at least one of: a logo associated with the merchant, a visual indicator of an event associated with the merchant, or the offer code associated with the offer from the merchant.
5. The method according to claim 1, wherein: Each available image filter is represented by a corresponding icon that a user can select to activate that available image filter.
6. The method according to claim 1, wherein: The quotation code is represented as an optical code.
7. The method according to claim 6, wherein: The optical code includes a custom graphic.
8. The method according to claim 7, wherein: The offer code is represented in an advertisement, and the custom graphic is displayed in association with the advertisement to indicate that the offer is redeemable to enable the additional image filter.
9. The method according to claim 7, wherein: The offer code is represented by a mark in the optical code, and the custom pattern includes a shape included in the optical code except for the mark.
10. The method according to claim 1, wherein: The quote code is obtained via an optical code, the optical code represents the quote code and includes a custom graphic for at least one of a viewfinder pattern or an alignment pattern.
11. The method according to claim 1, further comprising: An indication that the offer has been redeemed by the user is stored.
12. The method according to claim 2, wherein: the device is a first device, the user is a first user, and the visual indicator includes the offer code, The method further comprises: The media content item is caused to be displayed on a second device to enable a second user associated with the second device to obtain the offer code.
13. The method according to claim 1, further comprising: A purchase amount is received from the merchant.
14. The method according to claim 13, further comprising: generating an authorization amount based on the purchase amount and the purchase transaction; as well as Sending an authorization for the merchant to charge the user for the authorized amount.
15. The method according to claim 14, wherein: The authorization for the merchant to charge the user includes a second authorization to charge the credit card based on an association between the credit card and the offer.
16. The method according to claim 1, wherein: The offer code is represented as an optical code, and receiving the offer code associated with the offer includes receiving a first image including the optical code from the device associated with the user.
17. The method according to claim 16, wherein: Identifying the offer includes decoding the optical code.
18. The method according to claim 1, wherein: Receiving the purchase code includes receiving a second image including the purchase code from the device associated with the user.
19. A system comprising: one or more processors; as well as a memory storing instructions that, when executed by the one or more processors, configure the system to perform operations comprising: receiving, from a device associated with a user, an offer code associated with an offer from a merchant; Based on the quote code, identifying the quote; Based on the identification of the offer, storing an association between the offer and the user; receiving a purchase code from the device; determining that the purchase code is associated with the offer from the merchant; detecting completion of a purchase transaction, the purchase transaction being completed based on the association between the offer and the purchase code; and In response to detecting completion of the purchase transaction, causing the list of available image filters on the device to include additional image filters that enable the device to add a visual indicator associated with the merchant to a media content item that includes image data captured on the device.
20. A non-transitory computer-readable storage medium comprising instructions that, when executed, configure a hardware processing circuit to perform operations comprising: receiving, from a device associated with a user, an offer code associated with an offer from a merchant; Based on the quote code, identifying the quote; Based on the identification of the offer, storing an association between the offer and the user; receiving a purchase code from the device; determining that the purchase code is associated with the offer from the merchant; detecting completion of a purchase transaction, the purchase transaction being completed based on the association between the offer and the purchase code; as well as In response to detecting completion of the purchase transaction, causing the list of available image filters on the device to include additional image filters that enable the device to add a visual indicator associated with the merchant to a media content item that includes image data captured on the device.