Merchant managed method and system for text-to-pay subscriptions at a billing server
09792631 · 2017-10-17
Assignee
Inventors
- Daniel Steif (San Francisco, CA, US)
- Kurt Davis (San Francisco, CA, US)
- Katherine Corner Holden (San Francisco, CA, US)
- Samantha Elena Nebrich (San Francisco, CA, US)
Cpc classification
International classification
G07F19/00
PHYSICS
G06Q20/40
PHYSICS
H04M15/00
ELECTRICITY
G06F13/28
PHYSICS
Abstract
A subscription identifier is communicated between the billing server and subscription server. The billing server receives a subscription identifier text message from the user device. The billing server identifies a carrier server from the subscription identifier text message. The billing server receives an authorization text message from the user device in response to an authorization request text message and charges an account of the carrier server that has been identified. If the charge has been successful, then the billing server transmits a renewal notification text message to the subscription server. The subscription server updates an account having the subscription identifier to reflect a new expiration.
Claims
1. A method of managing subscriptions with a billing server comprising: a) executing an opt-in method with the billing server, including: receiving a first opt-in request at the billing server, the first op-in request being a text message from a user mobile phone at a msisdn; generating, with the billing server, a PIN code; transmitting, with the billing server, a text message to a user mobile phone at the msisdn with the PIN code; receiving a second opt-in request, the second opt-in request being a request from a subscription server received at the billing server and including a PIN code; verifying, at the billing server, the PIN code received in the second opt-in request against the PIN code transmitted in the text message; and recording, at the billing server, an opt-in status as active for the msisdn within the data structure if the PIN code is verified; and b) executing a charge method with the billing server including: receiving, at the billing server, a charge API call from a subscription server at the billing server, including at least one identifier and an amount; determining an opt-in status corresponding to the identifier at the billing server; and transmitting a request to charge a user account to a carrier server if the opt-in status is active, but not if the opt-in status is inactive, the request including an amount corresponding to the amount received in the charge API call, the subscription server to update the expiration of the account to a later expiration following the charge API call.
2. The method of claim 1, wherein the msisdn has a plurality of subscription-id's, each having a separate opt-in parameter that is set in a selectable manner to active or inactive.
3. The method of claim 1, wherein the second opt-in request includes a user-id being a merchant provided unique user identifier, a country being a country code in ISO 3166-1-alpha-2 standard, an item-description being an exact quantity and name of the item(s) being purchased, a merchant-id being a billing server assigned merchant identifier value, a msisdn being a subscriber mobile phone number in international MSISDN format, a service-id being a merchant offering identifier, a subscription-id being a merchant assigned unique identifier for the user subscription and subscription-terms.
4. The method of claim 1, wherein the charge API call includes a user-id, a user-ip-address being an originating IP address of the user, a country being a country code in ISO 3166-1-alpha-2 standard, a currency being an ISO 4217 3 letter currency code, an end-merchant-id being a billing server assigned merchant identifier for an end merchant submitting transactions via a reseller, an item-description being a product disclosure describing the quantity and type of item being purchased, a merchant-id being a billing server assigned merchant identifier value, a msisdn being a Subscriber mobile phone number in international MSISDN format: country code+mobile phone number, request-id being a unique merchant assigned request ID, a subscription frequency being a frequency of subscription renewal, a subscription-id being a merchant assigned unique identifier for the user subscription, a service-id being a merchant offering identifier and total-amount being a total amount charged including tax.
5. The method of claim 1, wherein the charge method further includes: transmitting from the billing server a chargeresult callback notification to the subscription server in response to the charge API call.
6. The method of claim 5, wherein the chargeresult callback notification includes a user-auth-required being a billing server assigned charge identifier, a result-code being a result code for this request and a result-message being a human readable description of the result.
7. The method of claim 1, further comprising: returning, with the billing server, terms and condition strings in the text message that includes the PIN code, wherein the terms and conditions are different for different countries.
8. The method of claim 1, further comprising: c) executing a remind-charge method, with the billing server, after the opt-in method and before the charge method, including: receiving a remind-charge request from the subscription server at the billing server; and sending a text message from the billing server to the user mobile phone that contains terms of a subscription and a due date for when the charge method will be executed, the charge method being executed on the due date.
9. The method of claim 8, wherein the remind-charge request includes a user-id being a merchant provided unique user identifier, a country being a country code in ISO 3166-1-alpha-2 standard, an item-description being an exact quantity and name of the item(s) being purchased, a merchant-id being a billing server assigned merchant identifier value, a msisdn being a subscriber mobile phone number in international MSISDN format: country code+mobile phone number, a renewal-date being a start date of next subscription cycle, a service-id being a merchant offering identifier, a subscription-id being a merchant assigned unique identifier for the user subscription, and subscription-terms.
10. The method of claim 1, further comprising: c) executing a cancel method at the billing server, including: receiving a call to cancel the subscription at the billing server; and updating the opt-in status to inactive for the msisdn in response to the call to cancel the subscription.
11. The method of claim 10, wherein the call to cancel the subscription is in the form of a text message from the user mobile phone at the msisdn.
12. The method of claim 10, wherein the call to cancel the subscription is received via a cancel opt-in API at the billing server from the subscription server.
13. The method of claim 1, further comprising: receiving, with the billing server, payment from the account server in response to the charge request; and transmitting, with the billing server, a payment to the subscription server in response to receiving the payment from the account server.
14. The method of claim 1, wherein the billing server transmits a charge request to the carrier server, the charge request including an amount to be charged to the account of the carrier server.
15. The method of claim 14, further comprising: receiving, with the billing server, a confirmation from the account server that the account has been charged, wherein the billing server only transmits the second text message if the confirmation has been received.
16. The method of claim 1, further comprising: receiving, with the billing server, a phone number of the user, the account at the carrier server being an account identified by the phone number on the carrier server.
17. The method of claim 16, wherein the code request text message includes the phone number.
18. The method of claim 17, wherein the code request text message includes an identification of the carrier server.
19. A non-transitory computer-readable medium having stored thereon a set of instructions which, when executed by a processor of a computer performs a method of managing subscriptions with a billing server comprising: a) executing an opt-in method with the billing server, including: receiving a first opt-in request at the billing server, the first op-in request being a text message from a user mobile phone at a msisdn; generating, with the billing server, a PIN code; transmitting, with the billing server, a text message to a user mobile phone at the msisdn with the PIN code; receiving a second opt-in request, the second opt-in request being a request from a subscription server received at the billing server and including a PIN code; verifying, at the billing server, the PIN code received in the second opt-in request against the PIN code transmitted in the text message; and recording, at the billing server, an opt-in status as active for the msisdn within the data structure if the PIN code is verified; and b) executing a charge method with the billing server including: receiving, at the billing server, a charge API call from a subscription server at the billing server, including at least one identifier and an amount; determining an opt-in status corresponding to the identifier at the billing server; and transmitting a request to charge a user account to a carrier server if the opt-in status is active, but not if the opt-in status is inactive, the request including an amount corresponding to the amount received in the charge API call, the subscription server to update the expiration of the account to a later expiration following the charge API call.
20. A billing server comprising: a processor; a computer-readable medium connected to the processor; and a set of instructions on the computer-readable medium and executable by the processor, including: an SMS messaging module; a user opt-in management module executing an opt-in method including: receiving a first opt-in request, the first op-in request being a text message from a user mobile phone at a msisdn; generating a PIN code; transmitting, using the SMS messaging module, a text message to a user mobile phone at the msisdn with the PIN code; receiving a second opt-in request, the second opt-in request being a request from a subscription server received at the billing server and including a PIN code; verifying the PIN code received in the second opt-in request against the PIN code transmitted in the text message; and recording an opt-in status as active within a data structure for the msisdn if the PIN code is verified; and a carrier billing module executing a charge method including: receiving a charge API call from a subscription server, including at least one identifier and an amount; determining an opt-in status corresponding to the identifier in the data structure; and transmitting a request to charge a user account to a carrier server if the opt-in status is active, but not if the opt-in status is inactive, the request including an amount corresponding to the amount received in the charge API call, the subscription server to update the expiration of the account to a later expiration following the charge API call.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) The invention is further described by way of example with reference to the accompanying drawings, wherein:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
DETAILED DESCRIPTION OF THE INVENTION
(35)
(36) The subscription management system 10 further includes a sign 20 that is located in a region of the user mobile phone 12 so that a user of the user mobile phone 12 can read the sign 20.
(37) The user mobile phone 12 includes a phone number 22 that is stored in memory, a browser application 24 that is executable by the processor of the user mobile phone 12 and an SMS application 26 that is executable by a processor of the user mobile phone 12. The phone number 22 is in the form of a standardized mobile subscriber integrated services digital subscriber number (msisdn).
(38) The subscription server system 14 includes a subscription server 28 and a printer 30 connected to the subscription server 28. The subscription server 28 includes a code issuing module 32, subscription content 34, a code redemption module 36, an account database 38, a mobile website 40 and a user device interactive module 42. The components 32 to 42 are all connected to one another and share data with one another. The user device interactive module 42 is connected over the Internet to the browser application 24 of the user mobile phone 12.
(39) The billing server 16 includes a code management module 44, a carrier billing module 46 and an SMS messaging module 48. The code management module 44 is connected over the Internet to the code issuing module 32. The SMS messaging module 48 is connected over the SMS network to the SMS application 26 of the user mobile phone 12.
(40) The carrier server 18 includes a data store with a plurality of accounts 50. Each account 50 is identified by respective phone number 52.
(41) As further shown in
(42)
(43) Referring to
(44) Referring to
(45) The billing server 16 then marks one of the codes as being reserved (Re). The billing server 16 at 64 sends an authorization request text message to the user mobile phone 12. The authorization request text message requests that the user respond with an authorization text message and states that the user will receive a subscription according to the sign 20 in
(46) When the billing server 16 receives the authorization text message transmitted at 66, the billing server 16 attempts to place a charge on the carrier server 18. In the present example the billing server 16 at 68 transmits a charge request to the carrier server 18 that includes an amount for the value of the code and the phone number 22 of the user mobile phone 12. The carrier server 18 then attempts to place a charge for a value 70 corresponding to the value of the code on an account corresponding to the phone number 22 of the user mobile phone 12. If the carrier server 18 successfully places the charge then the carrier server 18 at 72 returns a confirmation to the billing server 16. If the carrier server 18 does not place the charge, for example due to restrictions on the account, then the carrier server 18 will return a fail notification to the billing server 16 instead of the confirmation 72. The billing server 16 will then not transmit the code to the user mobile phone 12. The billing server 16 will again mark the relevant code that has previously been marked as reserved as being available. The billing server 16 will not take any of the further actions shown in
(47) If the billing server 16 receives the confirmation 72, then, at 74, the billing server 16 transmits a redemption text to the user mobile phone 12. The redemption text transmitted at 74 includes the relevant code, in the example code 4, and a website link that the user can select to request a page from the subscription server 28. When the selects the website link, the user mobile phone 12 requests redemption page from the mobile website 40 (
(48) Once the code has been redeemed at 76, the subscription server 28 permits the creation of an account. At 78, the user at the user mobile phone 12 enters account information for purposes of creating a new account within the subscription server 28. The carrier server 18 places a value for the charge for the value 70 on a phone bill of the user of the user mobile phone 12. After the user has paid their phone bill, the carrier server 18 at 80 transmits funds corresponding to the value 70 to the billing server 16. The carrier server 18 typically holds a small amount of the funds back and transmits the rest of the funds to the billing server 16. At 82, the billing server 16 transmits a portion of the funds received from the carrier server 18 to the subscription server 28.
(49) Referring again to
(50)
(51)
(52)
(53)
(54) At 110, the billing server 16 charges an account of the carrier server 18 that has been identified, as discussed with reference to
(55)
(56) At 128, the subscription server 28 receives the account details from the user device that the user has entered into the account creation fields. At 130, the subscription server 28 stores the account details in an account database 38 of the subscription server 28.
(57) At 132, the subscription server 28 receives a login request from the user device, the login request including a user name and password. At 134, the subscription server 28 determines whether the user name and password in the login request match the user name and password, respectively, of the login information. If the login information matches, then the subscription server 28 proceeds to 136. If the login information does not match then the process is ended without going to 136. At 136, the subscription server 28 permits access of the user device to subscription content 34 on the subscription server 28. In the present example the subscription content 34 is an electronic edition of a magazine. In another example the subscription content 34 can be music, videos, etc.
(58) Following 130, the subscription server 28 can also proceed to 138. At 138, the subscription server 28 prints a delivery address on a label for a magazine as described with reference to
(59) Referring again to
(60)
(61)
(62) At 162, the user of the user mobile phone 12 generates and sends a subscription identifier text message to the billing server 16. The subscription identifier text message includes a subscription identifier corresponding to an account that the user wishes to renew. The billing server 16 receives the subscription identifier text message and attempts to match the subscription identifier in the subscription identifier text message with one of the subscription identifiers in the data store. In the present example the subscription identifier 3 is a match.
(63) In another embodiment, the subscription server 28 does not send a batch of subscription identifiers at 160. When the billing server 16 at 162 receives the subscription identifier, the billing server 16 may make a call to the subscription server 28 to verify that the subscription identifier is located within the database of the subscription server 28. Only when the subscription server 28 responds with a verification does the billing server 16 proceed as will be discussed below.
(64) As discussed with reference to
(65) At 164, the billing server 16 transmits an authorization request text message to the user mobile phone 12. At 166, the user of the user mobile phone 12 returns an authorization text message to the billing server 16.
(66) The value that is received from the subscription server 28 at 160 is stored as a value 170 within the billing server 16. At 172, the billing server 16 responds to the authorization text message sent at 166 to attempt to charge a value 174 corresponding to the value 170 on an account at the carrier server 18. The carrier server 18 is selected based on its carrier identifier and the charge 172 includes the phone number 22 of the user mobile phone 12. At 176, the carrier server 18 returns a confirmation to the billing server 16.
(67) The billing server 16 responds to the confirmation at 176 to send a confirmation text message at 178 to the user mobile phone 12. The billing server 16 also responds to the confirmation received at 176 to send a renewal notification at 180 to the subscription server 28. The renewal notification sent at 180 includes the subscription identifier that was received in the subscription identifier text message 162. The renewal notification 180 is received by the subscription server 28. The subscription server 28 then updates the account having the subscription identifier in the renewal notification so that the account has a new subscription expiration. The expiration may for example be extended by twelve months so that the user of the user mobile phone 12 will receive twelve monthly editions or fifty-two weekly editions of a magazine.
(68) The carrier server 18 places a value 174 on a phone bill of the user of the user mobile phone 12. After the user has paid their phone bill, the carrier server 18 at 80 transmits funds corresponding to the value 174 to the billing server 16. The carrier server 18 typically holds a small amount of the funds back and transmits the rest of the funds to the billing server 16. At 82, the billing server transmits a portion of the funds received from the carrier server 18 to the subscription server 28.
(69)
(70)
(71)
(72) At 204, the subscription server 28 generates a renewal notification for each one of the accounts of the subset of accounts, each renewal notification having a respective subscription identifier of a respective account. In the given example, the subscription server 28 prints a renewal notification as shown in
(73) At 206, the subscription server 28 and billing server 16 communicate a plurality of subscription identifiers as described with reference to
(74) At 208, the billing server 16 receives a subscription identifier text message from the user device of the user, including the subscription identifier.
(75) At 210, the billing server 16 makes a determination whether the subscription identifier received in a subscription identifier text message is found in the plurality of subscription identifier communicated with the billing server 16. If no match is found, then the process is ended without proceeding to step 212. If a match is found, the billing server 16 proceeds at 212 to identify a carrier server 18 of the user from the subscription identifier text message.
(76) At 214, the billing server 16 transmits an authorization request text message, as described with reference to
(77) At 220, the billing server 16 determines whether a charge has been successful. The billing server 16 will typically receive a confirmation from the carrier server 18 as described with reference to
(78) At 226, the subscription server 28 updates an account having the subscription identifier to reflect renewal of the subscription. For a twelve month subscription, the expiration is typically updated to a date that is twelve months after the original expiration.
(79) As further shown in
(80)
(81) The billing server 16 uses the msisdn and carrier identifier appended to the text message to obtain information regarding the elements required to charge a user.
(82) In general, the msisdn and the network of the user mobile phone 12 are required inputs to collect from the user mobile phone 12. In some countries there can be additional elements such as a zip code or a resident registration number. A text response transmitted at 352 includes a unique code that is generated by the billing server 16 specifically for an opt-in by a user for repeated subscription billing. The text response 352 also includes a uniform resources locator (URL) that the user can select to redeem the code.
(83)
(84) At 354 in
(85) Table 1 shows the opt-in request parameters that are transmitted at 360 in
(86) TABLE-US-00001 TABLE 1 Re- Parameter Type Description quired consumer- String Merchant provided unique Yes id consumer identifier. country String Country code in ISO 3166-1- Yes alpha-2 standard. item- String The exact quantity and name Yes descrip- of the item(s) being purchased. tion If more than one of an item is being purchased (e.g. “1000 Credits”), the quantity must be included. Overrides the “Product Description”. Restrict to 20 characters. Longer strings will be truncated. mcc Number Mobile Country Code (MCC). MCC No and MNC are used together. If used both must be supplied. merchant- String Billing server assigned merchant Yes id identifier value. mnc Number Mobile Network Code (MNC). No msisdn String Subscriber mobile phone number Yes in international MSISDN format: country code + mobile phone number. network String Billing server network code as Conditional supplied from the ‘charge- info’ API XML pin-code String PIN code entered by user to Conditional indicate opt-in for payment. service-id String Merchant offering identifier. Yes subscrip- String Merchant assigned unique identifier Yes tion-id for the user subscription. subscrip- String JavaScript Object Notification Yes tion- (JSON) structure. Should follow terms the example. The ‘amount’ fields should be specified in fractional units. Frequency is an Enum data structure: DAILY, MONTHLY, YEARLY. Duration is an integer value applied to the frequency. The example specifies a 7 day trial, 799 per month. {‘trial’:{‘amount’:0, ‘frequency’:DAILY, ‘duration’:7}, ’sub’:{‘amount’: 799, ‘frequency’: MONTHLY, ‘duration’: 1}}
(87) TABLE-US-00002 TABLE 2 Re- Field Type Description turned result- String The result code for this request Yes code result- String Human readable description of the result. Yes message
(88) TABLE-US-00003 TABLE 3 Result Result Code Message Notes 0 Verified PIN code successfully verified. 23 Verification in PIN code has been sent to user, progress. but has not been verified. 103 Invalid PIN Submitted PIN code is incorrect. code. 109 PIN code The correct PIN code was submitted, expired. but the PIN code has expired. 110 Verification Incorrect PIN code was submitted three failed. times. On the next ‘option’ API call, a new PIN code will be generated and sent to the user via SMS.
(89) After the subscription server 28 receives the response it displays a receipt page as shown in
(90) At 366 in
(91)
(92) Referring again to
(93) Table 4 shows parameters for the remind-charge API call at 390 in
(94) TABLE-US-00004 TABLE 4 Re- Parameter Type Description quired consumer- String Merchant provided unique consumer Yes id identifier. country String Country code in ISO 3166-1-alpha-2 Yes standard. Item- String The exact quantity and name of the Yes descrip- item(s) being purchased. If more than one tion of an item is being purchased (e.g. “1000 Credits”), the quantity must be included. Overrides the “Product Description”. Restrict to 20 characters. merchant- String Billing server assigned merchant identifier Yes id value. msisdn String Subscriber mobile phone number in Yes international MSISDN format: country code + mobile phone number. renewal- String Start date of next subscription cycle. Yes date Format: YYYY-MM-DD. service- String Merchant offering identifier. Yes id subscrip- String Merchant assigned unique identifier Yes tion- for the user subscription. id subscrip- String JSON structure. Yes tion- {’sub’:{‘amount’: 799, terms ‘frequency’: MONTHLY, ‘duration’: 1}}
(95) TABLE-US-00005 TABLE 5 Re- Parameter Type Description quired consumer-id String Merchant provided unique consumer Yes identifier. country String Country code in ISO 3166-1-alpha-2 Yes standard. Item- String The exact quantity and name of the Yes description item(s) being purchased. If more than one of an item is being purchased (e.g. “1000 Credits”), the quantity must be included. Overrides the “Product Description”. Restrict to 20 characters. merchant-id String Billing server assigned merchant Yes identifier value. msisdn String Subscriber mobile phone number in Yes international MSISDN format: country code + mobile phone number. renewal-date String Start date of next subscription cycle. Yes Format: YYYY-MM-DD. service-id String Merchant offering identifier. Yes subscription- String Merchant assigned unique identifier for Yes id the consumer subscription. subscription- String JSON structure. {’sub’:{‘amount’: Yes terms 799, ‘frequency’: MONTHLY, ‘duration’: 1}}
(96) TABLE-US-00006 TABLE 6 Re- Parameter Type Description quired consumer- String Merchant provided unique consumer Yes id identifier. country String Country code in ISO 3166-1-alpha- Yes 2 standard. Item- String The exact quantity and name of the Yes descrip- item(s) being purchased. If more tion than one of an item is being purchased (e.g. “1000 Credits”), the quantity must be included. Overrides the “Product Description”. Restrict to 20 characters. merchant- String Billing server assigned merchant Yes id identifier value. msisdn String Subscriber mobile phone number Yes in international MSISDN format: country code + mobile phone number. renewal- String Start date of next subscription cycle. Yes date Format: YYYY-MM-DD. service- String Merchant offering identifier. Yes id subscrip- String Merchant assigned unique identifier Yes tion- for the consumer subscription. id subscrip- String JSON structure. Yes tion- {’sub’:{‘amount’: terms 799, ‘frequency’: MONTHLY, ‘duration’: 1}}
(97)
(98) Referring again to
(99) If the charge request is accepted, a charge-id is returned from the billing server 16 to the subscription server 28 at 404 in
(100) Charge is an asynchronous request. When the charge request has been completed, regardless of a successful or failed charge, the billing server 16, having received the charge result from the carrier server 18, sends a callback notification to the subscription server 28 with the final result of the charge attempt.
(101) The charge request is idempotent. Each request is uniquely identified by the request-id supplied by the subscription server 28. For example, if two charge requests are made with the same merchant request-id, the user's account is charged only once and both charge requests receive the same response.
(102) A chargeresult callback notification 404 provides the final status of a transaction (success or failure) successfully billed chargeresult callback notifications are used by the subscription server 28 to fulfill purchases. For a given transaction, identified by the unique charge-id field value, fulfillment occurs only once. The subscription server 28 may receive a chargeresult callback for the same transaction multiple times if there are communication issues between the billing server 16 and the subscription server 28. Improper acknowledgement responses (ACKs) from the subscription server 28 to the billing server 16 is a common cause of continually retried callback notifications.
(103) The subscription server 28 only receives callbacks from the billing server 16 for requests that have been accepted. If a request was not accepted due to a validation error or due to a risk check, the billing server 16 does not submit the request to the carrier server 18 for processing and therefore a callback notification is not sent from the billing server 16 to the subscription server 28.
(104) Table 7 shows parameters for the charge request at 392 in
(105) TABLE-US-00007 TABLE 7 Re- Parameter Type Description quired charge- String JSON structure containing No (condi- options optional charge elements such as tional - zip or rrn. I.e. {‘zip: 94939} optional elements required in specific consumer- String Merchant provided unique Yes id consumer identifier. consumer-ip- String Originating IP address of the Yes address consumer; used for risk checks. If it cannot be obtained submit a value of ‘NOT_AVAILABLE’. country String Country code in ISO 3166-1- Yes alpha-2 standard. currency String ISO 4217 3 letter currency code. Yes end- String Billing server assigned Yes (if merchant- merchant identifier for an end reseller) id merchant submitting transactions via a reseller. external- String Merchant supplied meta data. No data external- String External identifier No id supplied by merchant system. external- String Merchant assigned identifier No item-id for the purchased item. Billing server does not validate this value for uniqueness. item- String Product disclosure describing the Yes descrip- quantity and type of item being tion purchased. (i.e. “10 credits” not “credits”). Restricted to 20 characters. Longer strings will be truncated. mcc String Mobile country code (MCC). No MCC and MNC are used together. If used, both must be supplied. merchant- String Billing server assigned Yes id merchant identifier value mnc String Mobile network code (MNC). No msisdn Number Subscriber mobile phone number Yes in international MSISDN format: country code + mobile phone number.
(106) TABLE-US-00008 TABLE 8 Re- Field Type Description turned charge- String Billing server assigned charge identifier Condi- id (returned if the ‘charge’ request is tional successful). consumer- Boolean Indicates whether the ‘charge’ Yes auth- request requires a user opt-in. required consumer- Enum The type of opt-in required for this Condi- auth-type country and carrier. (e.g. KEYWORD, tional PIN). consumer- String The keyword the consumer must Condi- auth- enter to confirm their opt-in. tional keyword consumer- String The short code to which the Condi- auth- consumer should send the tional short- code keyword. result- String The result code for this request. Yes code result- String Human readable description of the Yes message result. retry- Number Specifies the minimum time (in Condi- delay milliseconds) that the caller should tional wait before retrying the request. Returned when a retry error has occurred.
(107)
(108) The SMS messaging module 48 then at 420 in
(109) Tables 9 and 10 show parameters for a chargeresult callback notification.
(110) TABLE-US-00009 TABLE 9 Max Field Type Length Notes action String 20 action = chargeresult charge-id String 50 Unique identifier of the transaction. country String 2 Country code in ISO 3166-1-alpha-2 standard. currency String 3 ISO 4217 3 letter currency code. encoded- Number 20 Obfuscated, alias consumer identifier. mobile total-amount Number Int32 Total amount of charge inclusive of tax. tax-amount Number Int32 Tax amount value included in charge reported in fractional units (See the ‘Currency values format’ section of this document for more information on fractional units). merchant- Number Int32 Merchant net payout value. payout service-id String 50 Merchant offering identifier. item- String 255 Product disclosure describing the description quantity and type of item being purchased. (i.e. “10 credits” not “credits”). request-id String 50 Unique merchant supplied identifier for this request to ensure that charges are not duplicated. external-id String 50 A merchant supplied identifier for this transaction. external- String 50 Merchant assigned identifier item-id for the purchased item. external- String Merchant supplied meta data. data end- String 50 If a reseller, this represents the merchant-id end merchant. reference- String 3 Reference currency unit as set currency within the merchant service configuration. reference- Number Int32 Total charge amount based on the total- reference currency unit. amount reference- Number Int32 Tax amount based on the reference tax- currency unit. amount reference- Number Int32 Merchant payout based on the merchant- reference currency unit. payout test Boolean Boolean Used to identify test transactions. (See Testing section in Overview of this document). time- String UTC Time charge request was initiated in requested Date UTC format: YYYY-MM-DD HH:MM:SS. time- String UTC Time of when the charge request completed Date was completed. result-code String 20 The result code for this request. result- String 255 Human readable description of the message result. sig String 255 Hash computation signature generated based on Security Implementation Guide instructions. timestamp Number Int64 Network Time Protocol (NTP) Unix epoch timestamp.
(111) TABLE-US-00010 TABLE 10 Result Response Code Message Comments 0 Operation Fully paid, successful transaction. successful. 2 Internal Internal billing server error. Notify server error. billing server if this response continues. Retry. 3 Failed - User does not have enough credit to Insufficient complete the transaction. funds. 4 Failed - The user has been blocked from transacting. Consumer This could be due to a carrier request Barred. or due to other anti-fraud mechanisms. 5 Failed - This response occurs when billing server is External unable to bill the user account due to an billing error received from the carrier. failure 6 Failed - This error occurs when the transaction Transaction does not complete within 24 hours. There timed out are two primary causes for this: A confirmation has been sent to the user (e.g. PIN code entry) and they have not responded. There is a delay or outage with the carrier and billing server has not received a response from the carrier. 7 Anti-fraud - In certain cases, anti-fraud limits may Transaction result in a transaction failing e.g. rejected velocity limits. 8 Failed - The user sent back a keyword to cancel Cancelled by the transaction. consumer 11 Regulatory Regulatory (per carrier rules) spend spend limit limit has been reached by the user. reached 12 Merchant spend Merchant specified spend limit has been limit reached reached by the user. 14 Service suspended 15 Network unavailable 67 Product descrip- This error occurs when product descrip- tion pending tions submitted to the carrier for approval approval have not yet been approved. 68 Rejected product This error occurs when product descrip- description tions submitted to the carrier are rejected. 86 Service not supported on network 90 Pre-paid Pre-paid mobiles are not supported by account not certain carriers. supported 95 Price point not supported on this network 96 Account not User account cannot use mobile billing authorized for service. purchase 97 Invalid Zip Applicable for certain carrier billing Code workflows that require user entry of a zip code. 101 Fulfillment A problem with callback ACK caused a failed fulfillment failure. The transaction was not billed. This is applicable to carrier networks that require fulfillment to occur before billing the user. 500 User info Applicable to certain carrier billing validation error workflows that require the user to enter additional information for validation purposes. 700 Handset Error due sending or receiving the error necessary SMS messages to proceed with purchase. 800 Subscriber Certain types of users cannot make not eligible purchases using the billing server system e.g. minors. 850 Internal subscrip- Needs further investigating by tion error billing server.
(112)
(113)
(114)
(115)
(116) The various components shown in
(117) The memory 1020 may include high-speed random access memory and may also include non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices. Access to the memory 1020 by other components of the user mobile phone 12, such as the CPU 1200 and the peripherals interface 1180, is controlled by the memory controller 1220.
(118) The peripherals interface 1180 connects the input and output peripherals of the device to the CPU 1200 and memory 1020. The one or more processors 1200 run or execute various software programs and/or sets of instructions stored in the memory 1020 to perform various functions for the user mobile phone 12 and to process data.
(119) The RF (radio frequency) circuitry 1080 receives and sends RF signals, also called electromagnetic signals. The RF circuitry 1080 converts electrical signals to/from electromagnetic signals and communicates with communications networks and other communications devices via the electromagnetic signals. The RF circuitry 1080 includes well-known circuitry for performing these functions, including an antenna system, an RF transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a CODEC chipset, a subscriber identity module (SIM) card, memory, and so forth. The RF circuitry 1080 may communicate with networks, such as the Internet, also referred to as the World Wide Web (WWW), an intranet and/or a wireless network, such as a cellular telephone network, a wireless local area network (LAN) and/or a metropolitan area network (MAN), and other devices by wireless communication. The wireless communication may use any of a plurality of communications standards, protocols and technologies that are known in the art.
(120) The audio circuitry 1100, the speaker 1110, and the microphone 1130 provide an audio interface between a user and the user mobile phone 12. The audio circuitry 1100 receives audio data from the peripherals interface 1180, converts the audio data to an electrical signal, and transmits the electrical signal to the speaker 1110. The speaker 1110 converts the electrical signal to human-audible sound waves. The audio circuitry 1100 also receives electrical signals converted by the microphone 1130 from sound waves. The audio circuitry 1100 converts the electrical signal to audio data and transmits the audio data to the peripherals interface 1180 for processing. The audio circuitry 1100 also includes a headset jack serving as an interface between the audio circuitry 1100 and removable audio input/output peripherals, such as output-only headphones or a headset with both output (e.g., a headphone for one or both ears) and input (e.g., a microphone).
(121) The I/O subsystem 1060 connects input/output peripherals on the user mobile phone 12, such as the touch screen 1120 and other input/control devices 1160, to the peripherals interface 1180. The I/O subsystem 1060 includes a display controller 1560 and one or more input controllers 1600 for other input or control devices. The one or more input controllers 1600 receive/send electrical signals from/to other input or control devices 1160. The other input/control devices 1160 may include physical buttons (e.g., push buttons, rocker buttons, etc.), dials, slider switches, joysticks, click wheels, and so forth all serving as forming part of an interface. The input controllers 1600 may be connected to any of the following: a keyboard, infrared port, USB port, and a pointer device such as a mouse. The one or more buttons may include an up/down button for volume control of the speaker 1110 and/or the microphone 1130. The one or more buttons may include a push button. A quick press of the push button may disengage a lock of the touch screen 1120 or begin a process that uses gestures on the touch screen to unlock the device. A longer press of the push button may turn power to the user mobile phone 12 on or off. The touch screen 1120 is used to implement virtual or soft buttons and one or more soft keyboards.
(122) The touch-sensitive touch screen 1120 provides an input interface and an output interface between the device and a user. The display controller 1560 receives and/or sends electrical signals from/to the touch screen 1120. The touch screen 1120 displays visual output to the user. The visual output may include graphics, text, icons, video, and any combination thereof (collectively termed “graphics”). In some embodiments, some or all of the visual output may correspond to user-interface objects, further details of which are described below.
(123) A touch screen 1120 has a touch-sensitive surface, sensor or set of sensors that accepts input from the user based on haptic and/or tactile contact. The touch screen 1120 and the display controller 1560 (along with any associated modules and/or sets of instructions in memory 1020) detect contact (and any movement or breaking of the contact) on the touch screen 1120 and converts the detected contact into interaction with user-interface objects (e.g., one or more soft keys, icons, web pages or images) that are displayed on the touch screen. In an exemplary embodiment, a point of contact between a touch screen 1120 and the user corresponds to a finger of the user.
(124) The touch screen 1120 may use LCD (liquid crystal display) technology, or LPD (light emitting polymer display) technology, although other display technologies may be used in other embodiments. The touch screen 1120 and the display controller 1560 may detect contact and any movement or breaking thereof using any of a plurality of touch sensing technologies now known or later developed, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with a touch screen 1120.
(125) The user may make contact with the touch screen 1120 using any suitable object or appendage, such as a stylus, a finger, and so forth. In some embodiments, the user interface is designed to work primarily with finger-based contacts and gestures, which are much less precise than stylus-based input due to the larger area of contact of a finger on the touch screen. In some embodiments, the device translates the rough finger-based input into a precise pointer/cursor position or command for performing the actions desired by the user.
(126) The user mobile phone 12 also includes a power system 1620 for powering the various components. The power system 1620 may include a power management system, one or more power sources (e.g., battery, alternating current (AC)), a recharging system, a power failure detection circuit, a power converter or inverter, a power status indicator (e.g., a light-emitting diode (LED)) and any other components associated with the generation, management and distribution of power in portable devices.
(127) The software components stored in memory 1020 include an operating system 1260, a communication module (or set of instructions) 1280, a contact/motion module (or set of instructions) 1300, a graphics module (or set of instructions) 1320, a text input module (or set of instructions) 1340, and applications (or set of instructions) 1360.
(128) The operating system 1260 (e.g., Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as VxWorks) includes various software components and/or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitates communication between various hardware and software components.
(129) The communication module 1280 facilitates communication with other devices over one or more external ports 1240 and also includes various software components for handling data received by the RF circuitry 1080 and/or the external port 1240. The external port 1240 (e.g., Universal Serial Bus (USB), FIREWIRE, etc.) is adapted for coupling directly to other devices or indirectly over a network (e.g., the Internet, wireless LAN, etc.).
(130) The contact/motion module 1300 may detect contact with the touch screen 1120 (in conjunction with the display controller 1560) and other touch sensitive devices (e.g., a touchpad or physical click wheel). The contact/motion module 1300 includes various software components for performing various operations related to detection of contact, such as determining if contact has occurred, determining if there is movement of the contact and tracking the movement across the touch screen 1120, and determining if the contact has been broken (i.e., if the contact has ceased). Determining movement of the point of contact may include determining speed (magnitude), velocity (magnitude and direction), and/or an acceleration (a change in magnitude and/or direction) of the point of contact. These operations may be applied to single contacts (e.g., one finger contacts) or to multiple simultaneous contacts (e.g., “multitouch”/multiple finger contacts). The contact/motion module 1300 and the display controller 1560 also detects contact on a touchpad.
(131) The graphics module 1320 includes various known software components for rendering and displaying graphics on the touch screen 1120, including components for changing the intensity of graphics that are displayed. As used herein, the term “graphics” includes any object that can be displayed to a user, including text, web pages, icons (such as user-interface objects including soft keys), digital images, videos, animations and the like.
(132) The text input module 1340, which may be a component of graphics module 1320, provides soft keyboards for entering text in various applications (e.g., contacts, e-mail, IM, blogging, browser, and any other application that needs text input). The applications 1360 may include the mobile application 208.
(133)
(134) The exemplary computer system 900 includes a processor 930 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), a main memory 932 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), and a static memory 934 (e.g., flash memory, static random access memory (SRAM, etc.), which communicate with each other via a bus 936.
(135) The computer system 900 may further include a video display 938 (e.g., a liquid crystal displays (LCD) or a cathode ray tube (CRT)). The computer system 900 also includes an alpha-numeric input device 940 (e.g., a keyboard), a cursor control device 942 (e.g., a mouse), a disk drive unit 944, a signal generation device 946 (e.g., a speaker), and a network interface device 948.
(136) The disk drive unit 944 includes a machine-readable medium 950 on which is stored one or more sets of instructions 952 (e.g., software) embodying any one or more of the methodologies or functions described herein. The software may also reside, completely or at least partially, within the main memory 932 and/or within the processor 930 during execution thereof by the computer system 900, the memory 932 and the processor 930 also constituting machine readable media. The software may further be transmitted or received over a network 954 via the network interface device 948.
(137) While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative and not restrictive of the current invention, and that this invention is not restricted to the specific constructions and arrangements shown and described since modifications may occur to those ordinarily skilled in the art.