Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit f3ac0fc

Browse files
committed
First attempt to bring them all together
1 parent 1345e1d commit f3ac0fc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+8825
-1002
lines changed

engine/engine.xcodeproj/project.pbxproj

Lines changed: 178 additions & 20 deletions
Large diffs are not rendered by default.
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
/*
2+
* Copyright (C) 2012 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.android.vending.billing;
18+
19+
import android.os.Bundle;
20+
21+
/**
22+
* InAppBillingService is the service that provides in-app billing version 3 and beyond.
23+
* This service provides the following features:
24+
* 1. Provides a new API to get details of in-app items published for the app including
25+
* price, type, title and description.
26+
* 2. The purchase flow is synchronous and purchase information is available immediately
27+
* after it completes.
28+
* 3. Purchase information of in-app purchases is maintained within the Google Play system
29+
* till the purchase is consumed.
30+
* 4. An API to consume a purchase of an inapp item. All purchases of one-time
31+
* in-app items are consumable and thereafter can be purchased again.
32+
* 5. An API to get current purchases of the user immediately. This will not contain any
33+
* consumed purchases.
34+
*
35+
* All calls will give a response code with the following possible values
36+
* RESULT_OK = 0 - success
37+
* RESULT_USER_CANCELED = 1 - user pressed back or canceled a dialog
38+
* RESULT_BILLING_UNAVAILABLE = 3 - this billing API version is not supported for the type requested
39+
* RESULT_ITEM_UNAVAILABLE = 4 - requested SKU is not available for purchase
40+
* RESULT_DEVELOPER_ERROR = 5 - invalid arguments provided to the API
41+
* RESULT_ERROR = 6 - Fatal error during the API action
42+
* RESULT_ITEM_ALREADY_OWNED = 7 - Failure to purchase since item is already owned
43+
* RESULT_ITEM_NOT_OWNED = 8 - Failure to consume since item is not owned
44+
*/
45+
interface IInAppBillingService {
46+
/**
47+
* Checks support for the requested billing API version, package and in-app type.
48+
* Minimum API version supported by this interface is 3.
49+
* @param apiVersion the billing version which the app is using
50+
* @param packageName the package name of the calling app
51+
* @param type type of the in-app item being purchased "inapp" for one-time purchases
52+
* and "subs" for subscription.
53+
* @return RESULT_OK(0) on success, corresponding result code on failures
54+
*/
55+
int isBillingSupported(int apiVersion, String packageName, String type);
56+
57+
/**
58+
* Provides details of a list of SKUs
59+
* Given a list of SKUs of a valid type in the skusBundle, this returns a bundle
60+
* with a list JSON strings containing the productId, price, title and description.
61+
* This API can be called with a maximum of 20 SKUs.
62+
* @param apiVersion billing API version that the Third-party is using
63+
* @param packageName the package name of the calling app
64+
* @param skusBundle bundle containing a StringArrayList of SKUs with key "ITEM_ID_LIST"
65+
* @return Bundle containing the following key-value pairs
66+
* "RESPONSE_CODE" with int value, RESULT_OK(0) if success, other response codes on
67+
* failure as listed above.
68+
* "DETAILS_LIST" with a StringArrayList containing purchase information
69+
* in JSON format similar to:
70+
* '{ "productId" : "exampleSku", "type" : "inapp", "price" : "$5.00",
71+
* "title : "Example Title", "description" : "This is an example description" }'
72+
*/
73+
Bundle getSkuDetails(int apiVersion, String packageName, String type, in Bundle skusBundle);
74+
75+
/**
76+
* Returns a pending intent to launch the purchase flow for an in-app item by providing a SKU,
77+
* the type, a unique purchase token and an optional developer payload.
78+
* @param apiVersion billing API version that the app is using
79+
* @param packageName package name of the calling app
80+
* @param sku the SKU of the in-app item as published in the developer console
81+
* @param type the type of the in-app item ("inapp" for one-time purchases
82+
* and "subs" for subscription).
83+
* @param developerPayload optional argument to be sent back with the purchase information
84+
* @return Bundle containing the following key-value pairs
85+
* "RESPONSE_CODE" with int value, RESULT_OK(0) if success, other response codes on
86+
* failure as listed above.
87+
* "BUY_INTENT" - PendingIntent to start the purchase flow
88+
*
89+
* The Pending intent should be launched with startIntentSenderForResult. When purchase flow
90+
* has completed, the onActivityResult() will give a resultCode of OK or CANCELED.
91+
* If the purchase is successful, the result data will contain the following key-value pairs
92+
* "RESPONSE_CODE" with int value, RESULT_OK(0) if success, other response codes on
93+
* failure as listed above.
94+
* "INAPP_PURCHASE_DATA" - String in JSON format similar to
95+
* '{"orderId":"12999763169054705758.1371079406387615",
96+
* "packageName":"com.example.app",
97+
* "productId":"exampleSku",
98+
* "purchaseTime":1345678900000,
99+
* "purchaseToken" : "122333444455555",
100+
* "developerPayload":"example developer payload" }'
101+
* "INAPP_DATA_SIGNATURE" - String containing the signature of the purchase data that
102+
* was signed with the private key of the developer
103+
* TODO: change this to app-specific keys.
104+
*/
105+
Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type,
106+
String developerPayload);
107+
108+
/**
109+
* Returns the current SKUs owned by the user of the type and package name specified along with
110+
* purchase information and a signature of the data to be validated.
111+
* This will return all SKUs that have been purchased in V3 and managed items purchased using
112+
* V1 and V2 that have not been consumed.
113+
* @param apiVersion billing API version that the app is using
114+
* @param packageName package name of the calling app
115+
* @param type the type of the in-app items being requested
116+
* ("inapp" for one-time purchases and "subs" for subscription).
117+
* @param continuationToken to be set as null for the first call, if the number of owned
118+
* skus are too many, a continuationToken is returned in the response bundle.
119+
* This method can be called again with the continuation token to get the next set of
120+
* owned skus.
121+
* @return Bundle containing the following key-value pairs
122+
* "RESPONSE_CODE" with int value, RESULT_OK(0) if success, other response codes on
123+
* failure as listed above.
124+
* "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs
125+
* "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information
126+
* "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures
127+
* of the purchase information
128+
* "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the
129+
* next set of in-app purchases. Only set if the
130+
* user has more owned skus than the current list.
131+
*/
132+
Bundle getPurchases(int apiVersion, String packageName, String type, String continuationToken);
133+
134+
/**
135+
* Consume the last purchase of the given SKU. This will result in this item being removed
136+
* from all subsequent responses to getPurchases() and allow re-purchase of this item.
137+
* @param apiVersion billing API version that the app is using
138+
* @param packageName package name of the calling app
139+
* @param purchaseToken token in the purchase information JSON that identifies the purchase
140+
* to be consumed
141+
* @return 0 if consumption succeeded. Appropriate error values for failures.
142+
*/
143+
int consumePurchase(int apiVersion, String packageName, String purchaseToken);
144+
}

0 commit comments

Comments
 (0)