react-native-iap 8.0.5 → 8.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.yarn/install-state.gz +0 -0
- package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonListener.kt +46 -56
- package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonModule.kt +10 -31
- package/android/src/amazon/java/com/dooboolab/RNIap/RNIapPackage.kt +3 -34
- package/android/src/main/java/com/dooboolab/RNIap/DoobooUtils.kt +17 -16
- package/android/src/play/java/com/dooboolab/RNIap/PlayUtils.kt +3 -42
- package/android/src/play/java/com/dooboolab/RNIap/RNIapModule.kt +56 -50
- package/android/src/play/java/com/dooboolab/RNIap/RNIapPackage.kt +3 -41
- package/ios/RNIapIos.m +4 -2
- package/ios/RNIapIos.swift +3 -2
- package/package.json +1 -1
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
|
@@ -1,40 +1,24 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import java.lang.Class
|
|
5
|
-
import com.facebook.react.bridge.JavaScriptModule
|
|
6
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
|
-
import com.facebook.react.bridge.NativeModule
|
|
8
|
-
import java.util.ArrayList
|
|
9
|
-
import com.dooboolab.RNIap.RNIapAmazonModule
|
|
10
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
11
|
-
import com.facebook.react.bridge.ReactMethod
|
|
12
|
-
import com.facebook.react.bridge.Promise
|
|
13
|
-
import com.amazon.device.iap.PurchasingService
|
|
14
|
-
import com.dooboolab.RNIap.RNIapAmazonListener
|
|
15
|
-
import com.amazon.device.iap.model.RequestId
|
|
16
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
17
|
-
import com.facebook.react.bridge.WritableNativeArray
|
|
18
|
-
import com.facebook.react.bridge.ReadableArray
|
|
19
|
-
import java.util.HashSet
|
|
20
|
-
import com.amazon.device.iap.model.FulfillmentResult
|
|
21
|
-
import com.facebook.react.bridge.ReactContext
|
|
3
|
+
import android.util.Log
|
|
22
4
|
import com.amazon.device.iap.PurchasingListener
|
|
5
|
+
import com.amazon.device.iap.PurchasingService
|
|
23
6
|
import com.amazon.device.iap.model.Product
|
|
24
7
|
import com.amazon.device.iap.model.ProductDataResponse
|
|
25
8
|
import com.amazon.device.iap.model.ProductType
|
|
26
|
-
import
|
|
27
|
-
import android.util.Log
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
|
-
import com.facebook.react.bridge.Arguments
|
|
30
|
-
import com.amazon.device.iap.model.CoinsReward
|
|
9
|
+
import com.amazon.device.iap.model.PurchaseResponse
|
|
31
10
|
import com.amazon.device.iap.model.PurchaseUpdatesResponse
|
|
32
11
|
import com.amazon.device.iap.model.Receipt
|
|
33
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
34
|
-
import com.amazon.device.iap.model.PurchaseResponse
|
|
35
12
|
import com.amazon.device.iap.model.UserData
|
|
36
13
|
import com.amazon.device.iap.model.UserDataResponse
|
|
14
|
+
import com.facebook.react.bridge.Arguments
|
|
15
|
+
import com.facebook.react.bridge.ReactContext
|
|
16
|
+
import com.facebook.react.bridge.WritableMap
|
|
17
|
+
import com.facebook.react.bridge.WritableNativeArray
|
|
18
|
+
import com.facebook.react.bridge.WritableNativeMap
|
|
37
19
|
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
20
|
+
import java.lang.NumberFormatException
|
|
21
|
+
import java.util.ArrayList
|
|
38
22
|
|
|
39
23
|
class RNIapAmazonListener(private val reactContext: ReactContext) : PurchasingListener {
|
|
40
24
|
val TAG = "RNIapAmazonListener"
|
|
@@ -96,20 +80,22 @@ class RNIapAmazonListener(private val reactContext: ReactContext) : PurchasingLi
|
|
|
96
80
|
items
|
|
97
81
|
)
|
|
98
82
|
}
|
|
99
|
-
ProductDataResponse.RequestStatus.FAILED ->
|
|
100
|
-
.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
83
|
+
ProductDataResponse.RequestStatus.FAILED ->
|
|
84
|
+
DoobooUtils.instance
|
|
85
|
+
.rejectPromisesForKey(
|
|
86
|
+
RNIapAmazonModule.Companion.PROMISE_GET_PRODUCT_DATA,
|
|
87
|
+
E_PRODUCT_DATA_RESPONSE_FAILED,
|
|
88
|
+
null,
|
|
89
|
+
null
|
|
90
|
+
)
|
|
91
|
+
ProductDataResponse.RequestStatus.NOT_SUPPORTED ->
|
|
92
|
+
DoobooUtils.instance
|
|
93
|
+
.rejectPromisesForKey(
|
|
94
|
+
RNIapAmazonModule.Companion.PROMISE_GET_PRODUCT_DATA,
|
|
95
|
+
E_PRODUCT_DATA_RESPONSE_NOT_SUPPORTED,
|
|
96
|
+
null,
|
|
97
|
+
null
|
|
98
|
+
)
|
|
113
99
|
}
|
|
114
100
|
}
|
|
115
101
|
|
|
@@ -317,25 +303,29 @@ class RNIapAmazonListener(private val reactContext: ReactContext) : PurchasingLi
|
|
|
317
303
|
DoobooUtils.instance
|
|
318
304
|
.resolvePromisesForKey(RNIapAmazonModule.Companion.PROMISE_GET_USER_DATA, item)
|
|
319
305
|
}
|
|
320
|
-
UserDataResponse.RequestStatus.NOT_SUPPORTED ->
|
|
321
|
-
.
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
306
|
+
UserDataResponse.RequestStatus.NOT_SUPPORTED ->
|
|
307
|
+
DoobooUtils.instance
|
|
308
|
+
.rejectPromisesForKey(
|
|
309
|
+
RNIapAmazonModule.Companion.PROMISE_GET_USER_DATA,
|
|
310
|
+
E_USER_DATA_RESPONSE_NOT_SUPPORTED,
|
|
311
|
+
null,
|
|
312
|
+
null
|
|
313
|
+
)
|
|
314
|
+
UserDataResponse.RequestStatus.FAILED ->
|
|
315
|
+
DoobooUtils.instance
|
|
316
|
+
.rejectPromisesForKey(
|
|
317
|
+
RNIapAmazonModule.Companion.PROMISE_GET_USER_DATA,
|
|
318
|
+
E_USER_DATA_RESPONSE_FAILED,
|
|
319
|
+
null,
|
|
320
|
+
null
|
|
321
|
+
)
|
|
334
322
|
}
|
|
335
323
|
}
|
|
336
324
|
|
|
337
325
|
private fun sendEvent(
|
|
338
|
-
reactContext: ReactContext,
|
|
326
|
+
reactContext: ReactContext,
|
|
327
|
+
eventName: String,
|
|
328
|
+
params: WritableMap?
|
|
339
329
|
) {
|
|
340
330
|
reactContext
|
|
341
331
|
.getJSModule(RCTDeviceEventEmitter::class.java)
|
|
@@ -363,4 +353,4 @@ class RNIapAmazonListener(private val reactContext: ReactContext) : PurchasingLi
|
|
|
363
353
|
availableItems = WritableNativeArray()
|
|
364
354
|
availableItemsType = null
|
|
365
355
|
}
|
|
366
|
-
}
|
|
356
|
+
}
|
|
@@ -1,39 +1,14 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import com.
|
|
4
|
-
import
|
|
5
|
-
import com.facebook.react.bridge.
|
|
3
|
+
import com.amazon.device.iap.PurchasingService
|
|
4
|
+
import com.amazon.device.iap.model.FulfillmentResult
|
|
5
|
+
import com.facebook.react.bridge.Promise
|
|
6
6
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
|
-
import com.facebook.react.bridge.NativeModule
|
|
8
|
-
import java.util.ArrayList
|
|
9
|
-
import com.dooboolab.RNIap.RNIapAmazonModule
|
|
10
7
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
11
8
|
import com.facebook.react.bridge.ReactMethod
|
|
12
|
-
import com.facebook.react.bridge.Promise
|
|
13
|
-
import com.amazon.device.iap.PurchasingService
|
|
14
|
-
import com.dooboolab.RNIap.RNIapAmazonListener
|
|
15
|
-
import com.amazon.device.iap.model.RequestId
|
|
16
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
17
|
-
import com.facebook.react.bridge.WritableNativeArray
|
|
18
9
|
import com.facebook.react.bridge.ReadableArray
|
|
10
|
+
import com.facebook.react.bridge.WritableNativeArray
|
|
19
11
|
import java.util.HashSet
|
|
20
|
-
import com.amazon.device.iap.model.FulfillmentResult
|
|
21
|
-
import com.facebook.react.bridge.ReactContext
|
|
22
|
-
import com.amazon.device.iap.PurchasingListener
|
|
23
|
-
import com.amazon.device.iap.model.Product
|
|
24
|
-
import com.amazon.device.iap.model.ProductDataResponse
|
|
25
|
-
import com.amazon.device.iap.model.ProductType
|
|
26
|
-
import java.lang.NumberFormatException
|
|
27
|
-
import android.util.Log
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
|
-
import com.facebook.react.bridge.Arguments
|
|
30
|
-
import com.amazon.device.iap.model.CoinsReward
|
|
31
|
-
import com.amazon.device.iap.model.PurchaseUpdatesResponse
|
|
32
|
-
import com.amazon.device.iap.model.Receipt
|
|
33
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
34
|
-
import com.amazon.device.iap.model.PurchaseResponse
|
|
35
|
-
import com.amazon.device.iap.model.UserDataResponse
|
|
36
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
37
12
|
|
|
38
13
|
class RNIapAmazonModule(reactContext: ReactApplicationContext?) :
|
|
39
14
|
ReactContextBaseJavaModule(reactContext) {
|
|
@@ -105,7 +80,9 @@ class RNIapAmazonModule(reactContext: ReactApplicationContext?) :
|
|
|
105
80
|
|
|
106
81
|
@ReactMethod
|
|
107
82
|
fun acknowledgePurchase(
|
|
108
|
-
token: String?,
|
|
83
|
+
token: String?,
|
|
84
|
+
developerPayLoad: String?,
|
|
85
|
+
promise: Promise
|
|
109
86
|
) {
|
|
110
87
|
PurchasingService.notifyFulfillment(token, FulfillmentResult.FULFILLED)
|
|
111
88
|
promise.resolve(true)
|
|
@@ -113,7 +90,9 @@ class RNIapAmazonModule(reactContext: ReactApplicationContext?) :
|
|
|
113
90
|
|
|
114
91
|
@ReactMethod
|
|
115
92
|
fun consumeProduct(
|
|
116
|
-
token: String?,
|
|
93
|
+
token: String?,
|
|
94
|
+
developerPayLoad: String?,
|
|
95
|
+
promise: Promise
|
|
117
96
|
) {
|
|
118
97
|
PurchasingService.notifyFulfillment(token, FulfillmentResult.FULFILLED)
|
|
119
98
|
promise.resolve(true)
|
|
@@ -1,40 +1,10 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.ReactPackage
|
|
4
|
-
import java.lang.Class
|
|
5
|
-
import com.facebook.react.bridge.JavaScriptModule
|
|
6
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
4
|
import com.facebook.react.bridge.NativeModule
|
|
8
|
-
import
|
|
9
|
-
import com.dooboolab.RNIap.RNIapAmazonModule
|
|
10
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
11
|
-
import com.facebook.react.bridge.ReactMethod
|
|
12
|
-
import com.facebook.react.bridge.Promise
|
|
13
|
-
import com.amazon.device.iap.PurchasingService
|
|
14
|
-
import com.dooboolab.RNIap.RNIapAmazonListener
|
|
15
|
-
import com.amazon.device.iap.model.RequestId
|
|
16
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
17
|
-
import com.facebook.react.bridge.WritableNativeArray
|
|
18
|
-
import com.facebook.react.bridge.ReadableArray
|
|
19
|
-
import java.util.HashSet
|
|
20
|
-
import com.amazon.device.iap.model.FulfillmentResult
|
|
21
|
-
import com.facebook.react.bridge.ReactContext
|
|
22
|
-
import com.amazon.device.iap.PurchasingListener
|
|
23
|
-
import com.amazon.device.iap.model.Product
|
|
24
|
-
import com.amazon.device.iap.model.ProductDataResponse
|
|
25
|
-
import com.amazon.device.iap.model.ProductType
|
|
26
|
-
import java.lang.NumberFormatException
|
|
27
|
-
import android.util.Log
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
|
-
import com.facebook.react.bridge.Arguments
|
|
30
|
-
import com.amazon.device.iap.model.CoinsReward
|
|
31
|
-
import com.amazon.device.iap.model.PurchaseUpdatesResponse
|
|
32
|
-
import com.amazon.device.iap.model.Receipt
|
|
33
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
34
|
-
import com.amazon.device.iap.model.PurchaseResponse
|
|
35
|
-
import com.amazon.device.iap.model.UserDataResponse
|
|
36
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
37
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
+
import java.util.ArrayList
|
|
38
8
|
|
|
39
9
|
class RNIapPackage : ReactPackage {
|
|
40
10
|
|
|
@@ -47,5 +17,4 @@ class RNIapPackage : ReactPackage {
|
|
|
47
17
|
modules.add(RNIapAmazonModule(reactContext))
|
|
48
18
|
return modules
|
|
49
19
|
}
|
|
50
|
-
|
|
51
|
-
}
|
|
20
|
+
}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import java.util.HashMap
|
|
4
|
-
import java.util.ArrayList
|
|
5
|
-
import com.facebook.react.bridge.Promise
|
|
6
|
-
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
7
3
|
import android.util.Log
|
|
8
|
-
import com.
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
4
|
+
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
5
|
+
import com.facebook.react.bridge.Promise
|
|
6
|
+
import com.facebook.react.bridge.ReadableArray
|
|
7
|
+
import com.facebook.react.bridge.ReadableMap
|
|
8
|
+
import com.facebook.react.bridge.ReadableType
|
|
9
|
+
import com.facebook.react.bridge.WritableArray
|
|
13
10
|
import com.facebook.react.bridge.WritableMap
|
|
11
|
+
import com.facebook.react.bridge.WritableNativeArray
|
|
14
12
|
import com.facebook.react.bridge.WritableNativeMap
|
|
15
13
|
import org.json.JSONArray
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
14
|
+
import org.json.JSONException
|
|
15
|
+
import org.json.JSONObject
|
|
16
|
+
import java.lang.Exception
|
|
17
|
+
import java.util.ArrayList
|
|
18
|
+
import java.util.HashMap
|
|
19
|
+
import kotlin.Throws
|
|
22
20
|
|
|
23
21
|
class DoobooUtils {
|
|
24
22
|
private val promises = HashMap<String, ArrayList<Promise>>()
|
|
@@ -52,7 +50,10 @@ class DoobooUtils {
|
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
fun rejectPromisesForKey(
|
|
55
|
-
key: String,
|
|
53
|
+
key: String,
|
|
54
|
+
code: String?,
|
|
55
|
+
message: String?,
|
|
56
|
+
err: Exception?
|
|
56
57
|
) {
|
|
57
58
|
try {
|
|
58
59
|
if (promises.containsKey(key)) {
|
|
@@ -1,47 +1,8 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.android.billingclient.api.BillingClient
|
|
5
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
6
3
|
import android.util.Log
|
|
7
|
-
import com.
|
|
8
|
-
import com.facebook.react.bridge.
|
|
9
|
-
import com.android.billingclient.api.PurchasesUpdatedListener
|
|
10
|
-
import com.facebook.react.bridge.ReactContext
|
|
11
|
-
import com.android.billingclient.api.SkuDetails
|
|
12
|
-
import com.facebook.react.bridge.ReactMethod
|
|
13
|
-
import com.google.android.gms.common.GoogleApiAvailability
|
|
14
|
-
import com.google.android.gms.common.ConnectionResult
|
|
15
|
-
import com.android.billingclient.api.BillingClientStateListener
|
|
16
|
-
import com.android.billingclient.api.BillingResult
|
|
17
|
-
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
18
|
-
import java.lang.Exception
|
|
19
|
-
import com.android.billingclient.api.Purchase
|
|
20
|
-
import com.android.billingclient.api.ConsumeParams
|
|
21
|
-
import com.android.billingclient.api.ConsumeResponseListener
|
|
22
|
-
import com.facebook.react.bridge.WritableNativeArray
|
|
23
|
-
import com.android.billingclient.api.PurchasesResponseListener
|
|
24
|
-
import java.util.ArrayList
|
|
25
|
-
import com.facebook.react.bridge.ReadableArray
|
|
26
|
-
import com.android.billingclient.api.SkuDetailsParams
|
|
27
|
-
import com.android.billingclient.api.SkuDetailsResponseListener
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
|
-
import com.facebook.react.bridge.Arguments
|
|
30
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
31
|
-
import com.android.billingclient.api.PurchaseHistoryResponseListener
|
|
32
|
-
import com.android.billingclient.api.PurchaseHistoryRecord
|
|
33
|
-
import com.facebook.react.bridge.WritableArray
|
|
34
|
-
import android.app.Activity
|
|
35
|
-
import com.android.billingclient.api.BillingFlowParams
|
|
36
|
-
import com.android.billingclient.api.BillingFlowParams.SubscriptionUpdateParams
|
|
37
|
-
import com.android.billingclient.api.AcknowledgePurchaseParams
|
|
38
|
-
import com.android.billingclient.api.AcknowledgePurchaseResponseListener
|
|
39
|
-
import com.android.billingclient.api.AccountIdentifiers
|
|
40
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
41
|
-
import com.facebook.react.bridge.LifecycleEventListener
|
|
42
|
-
import com.facebook.react.ReactPackage
|
|
43
|
-
import com.facebook.react.bridge.JavaScriptModule
|
|
44
|
-
import com.facebook.react.bridge.NativeModule
|
|
4
|
+
import com.android.billingclient.api.BillingClient
|
|
5
|
+
import com.facebook.react.bridge.Promise
|
|
45
6
|
|
|
46
7
|
class PlayUtils {
|
|
47
8
|
fun rejectPromiseWithBillingError(promise: Promise, responseCode: Int) {
|
|
@@ -113,4 +74,4 @@ class PlayUtils {
|
|
|
113
74
|
const val E_PLAY_SERVICES_UNAVAILABLE = "E_PLAY_SERVICES_UNAVAILABLE"
|
|
114
75
|
val instance = PlayUtils()
|
|
115
76
|
}
|
|
116
|
-
}
|
|
77
|
+
}
|
|
@@ -1,50 +1,39 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.android.billingclient.api.BillingClient
|
|
5
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
6
3
|
import android.util.Log
|
|
7
|
-
import com.
|
|
8
|
-
import com.
|
|
9
|
-
import com.android.billingclient.api.PurchasesUpdatedListener
|
|
10
|
-
import com.facebook.react.bridge.ReactContext
|
|
11
|
-
import com.android.billingclient.api.SkuDetails
|
|
12
|
-
import com.facebook.react.bridge.ReactMethod
|
|
13
|
-
import com.google.android.gms.common.GoogleApiAvailability
|
|
14
|
-
import com.google.android.gms.common.ConnectionResult
|
|
4
|
+
import com.android.billingclient.api.AcknowledgePurchaseParams
|
|
5
|
+
import com.android.billingclient.api.BillingClient
|
|
15
6
|
import com.android.billingclient.api.BillingClientStateListener
|
|
7
|
+
import com.android.billingclient.api.BillingFlowParams
|
|
8
|
+
import com.android.billingclient.api.BillingFlowParams.SubscriptionUpdateParams
|
|
16
9
|
import com.android.billingclient.api.BillingResult
|
|
17
|
-
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
18
|
-
import java.lang.Exception
|
|
19
|
-
import com.android.billingclient.api.Purchase
|
|
20
10
|
import com.android.billingclient.api.ConsumeParams
|
|
21
11
|
import com.android.billingclient.api.ConsumeResponseListener
|
|
22
|
-
import com.
|
|
23
|
-
import com.android.billingclient.api.
|
|
24
|
-
import
|
|
25
|
-
import com.facebook.react.bridge.ReadableArray
|
|
12
|
+
import com.android.billingclient.api.Purchase
|
|
13
|
+
import com.android.billingclient.api.PurchasesUpdatedListener
|
|
14
|
+
import com.android.billingclient.api.SkuDetails
|
|
26
15
|
import com.android.billingclient.api.SkuDetailsParams
|
|
27
|
-
import com.android.billingclient.api.SkuDetailsResponseListener
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
16
|
import com.facebook.react.bridge.Arguments
|
|
17
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
|
18
|
+
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
19
|
+
import com.facebook.react.bridge.Promise
|
|
20
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
21
|
+
import com.facebook.react.bridge.ReactContext
|
|
22
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
23
|
+
import com.facebook.react.bridge.ReactMethod
|
|
24
|
+
import com.facebook.react.bridge.ReadableArray
|
|
25
|
+
import com.facebook.react.bridge.WritableMap
|
|
26
|
+
import com.facebook.react.bridge.WritableNativeArray
|
|
30
27
|
import com.facebook.react.bridge.WritableNativeMap
|
|
31
|
-
import com.android.billingclient.api.PurchaseHistoryResponseListener
|
|
32
|
-
import com.android.billingclient.api.PurchaseHistoryRecord
|
|
33
|
-
import com.facebook.react.bridge.WritableArray
|
|
34
|
-
import android.app.Activity
|
|
35
|
-
import com.android.billingclient.api.BillingFlowParams
|
|
36
|
-
import com.android.billingclient.api.BillingFlowParams.SubscriptionUpdateParams
|
|
37
|
-
import com.android.billingclient.api.AcknowledgePurchaseParams
|
|
38
|
-
import com.android.billingclient.api.AcknowledgePurchaseResponseListener
|
|
39
|
-
import com.android.billingclient.api.AccountIdentifiers
|
|
40
28
|
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
41
|
-
import com.
|
|
42
|
-
import com.
|
|
43
|
-
import
|
|
44
|
-
import com.facebook.react.bridge.NativeModule
|
|
29
|
+
import com.google.android.gms.common.ConnectionResult
|
|
30
|
+
import com.google.android.gms.common.GoogleApiAvailability
|
|
31
|
+
import java.lang.Exception
|
|
45
32
|
import java.math.BigDecimal
|
|
33
|
+
import java.util.ArrayList
|
|
46
34
|
|
|
47
|
-
class RNIapModule(reactContext: ReactApplicationContext) :
|
|
35
|
+
class RNIapModule(reactContext: ReactApplicationContext) :
|
|
36
|
+
ReactContextBaseJavaModule(reactContext),
|
|
48
37
|
PurchasesUpdatedListener {
|
|
49
38
|
val TAG = "RNIapModule"
|
|
50
39
|
private val reactContext: ReactContext
|
|
@@ -162,7 +151,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
162
151
|
}
|
|
163
152
|
billingClient.consumeAsync(consumeParams, listener)
|
|
164
153
|
}
|
|
165
|
-
}
|
|
154
|
+
}
|
|
155
|
+
)
|
|
166
156
|
}
|
|
167
157
|
}
|
|
168
158
|
|
|
@@ -201,7 +191,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
201
191
|
)
|
|
202
192
|
}
|
|
203
193
|
}
|
|
204
|
-
}
|
|
194
|
+
}
|
|
195
|
+
)
|
|
205
196
|
}
|
|
206
197
|
|
|
207
198
|
@ReactMethod
|
|
@@ -287,7 +278,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
287
278
|
}
|
|
288
279
|
}
|
|
289
280
|
}
|
|
290
|
-
}
|
|
281
|
+
}
|
|
282
|
+
)
|
|
291
283
|
}
|
|
292
284
|
|
|
293
285
|
@ReactMethod
|
|
@@ -336,7 +328,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
336
328
|
}
|
|
337
329
|
}
|
|
338
330
|
}
|
|
339
|
-
}
|
|
331
|
+
}
|
|
332
|
+
)
|
|
340
333
|
}
|
|
341
334
|
|
|
342
335
|
@ReactMethod
|
|
@@ -374,7 +367,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
374
367
|
}
|
|
375
368
|
}
|
|
376
369
|
}
|
|
377
|
-
}
|
|
370
|
+
}
|
|
371
|
+
)
|
|
378
372
|
}
|
|
379
373
|
|
|
380
374
|
@ReactMethod
|
|
@@ -433,8 +427,10 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
433
427
|
)
|
|
434
428
|
if (type != BillingClient.SkuType.SUBS) {
|
|
435
429
|
val debugMessage =
|
|
436
|
-
(
|
|
437
|
-
|
|
430
|
+
(
|
|
431
|
+
"IMMEDIATE_AND_CHARGE_PRORATED_PRICE for proration mode only works in" +
|
|
432
|
+
" subscription purchase."
|
|
433
|
+
)
|
|
438
434
|
val error = Arguments.createMap()
|
|
439
435
|
error.putString("debugMessage", debugMessage)
|
|
440
436
|
error.putString("code", PROMISE_BUY_ITEM)
|
|
@@ -481,12 +477,15 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
481
477
|
val errorData: Array<String?> =
|
|
482
478
|
PlayUtils.instance.getBillingResponseData(billingResult.responseCode)
|
|
483
479
|
}
|
|
484
|
-
}
|
|
480
|
+
}
|
|
481
|
+
)
|
|
485
482
|
}
|
|
486
483
|
|
|
487
484
|
@ReactMethod
|
|
488
485
|
fun acknowledgePurchase(
|
|
489
|
-
token: String?,
|
|
486
|
+
token: String?,
|
|
487
|
+
developerPayLoad: String?,
|
|
488
|
+
promise: Promise
|
|
490
489
|
) {
|
|
491
490
|
ensureConnection(
|
|
492
491
|
promise,
|
|
@@ -517,12 +516,15 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
517
516
|
}
|
|
518
517
|
}
|
|
519
518
|
}
|
|
520
|
-
}
|
|
519
|
+
}
|
|
520
|
+
)
|
|
521
521
|
}
|
|
522
522
|
|
|
523
523
|
@ReactMethod
|
|
524
524
|
fun consumeProduct(
|
|
525
|
-
token: String?,
|
|
525
|
+
token: String?,
|
|
526
|
+
developerPayLoad: String?,
|
|
527
|
+
promise: Promise
|
|
526
528
|
) {
|
|
527
529
|
val params = ConsumeParams.newBuilder().setPurchaseToken(token!!).build()
|
|
528
530
|
ensureConnection(
|
|
@@ -550,7 +552,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
550
552
|
}
|
|
551
553
|
}
|
|
552
554
|
}
|
|
553
|
-
}
|
|
555
|
+
}
|
|
556
|
+
)
|
|
554
557
|
}
|
|
555
558
|
|
|
556
559
|
override fun onPurchasesUpdated(billingResult: BillingResult, purchases: List<Purchase>?) {
|
|
@@ -608,8 +611,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
608
611
|
result.putString("debugMessage", billingResult.debugMessage)
|
|
609
612
|
result.putString(
|
|
610
613
|
"extraMessage",
|
|
611
|
-
"The purchases are null. This is a normal behavior if you have requested DEFERRED"
|
|
612
|
-
|
|
614
|
+
"The purchases are null. This is a normal behavior if you have requested DEFERRED" +
|
|
615
|
+
" proration. If not please report an issue."
|
|
613
616
|
)
|
|
614
617
|
sendEvent(reactContext, "purchase-updated", result)
|
|
615
618
|
DoobooUtils.instance.resolvePromisesForKey(PROMISE_BUY_ITEM, null)
|
|
@@ -640,7 +643,8 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
640
643
|
}
|
|
641
644
|
promise.resolve(true)
|
|
642
645
|
}
|
|
643
|
-
}
|
|
646
|
+
}
|
|
647
|
+
)
|
|
644
648
|
}
|
|
645
649
|
|
|
646
650
|
@ReactMethod
|
|
@@ -663,7 +667,9 @@ class RNIapModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaM
|
|
|
663
667
|
get() = reactApplicationContext.packageName
|
|
664
668
|
|
|
665
669
|
private fun sendEvent(
|
|
666
|
-
reactContext: ReactContext,
|
|
670
|
+
reactContext: ReactContext,
|
|
671
|
+
eventName: String,
|
|
672
|
+
params: WritableMap?
|
|
667
673
|
) {
|
|
668
674
|
reactContext
|
|
669
675
|
.getJSModule(RCTDeviceEventEmitter::class.java)
|
|
@@ -1,48 +1,10 @@
|
|
|
1
1
|
package com.dooboolab.RNIap
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.android.billingclient.api.BillingClient
|
|
5
|
-
import com.dooboolab.RNIap.DoobooUtils
|
|
6
|
-
import android.util.Log
|
|
7
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
9
|
-
import com.android.billingclient.api.PurchasesUpdatedListener
|
|
10
|
-
import com.facebook.react.bridge.ReactContext
|
|
11
|
-
import com.android.billingclient.api.SkuDetails
|
|
12
|
-
import com.facebook.react.bridge.ReactMethod
|
|
13
|
-
import com.google.android.gms.common.GoogleApiAvailability
|
|
14
|
-
import com.google.android.gms.common.ConnectionResult
|
|
15
|
-
import com.android.billingclient.api.BillingClientStateListener
|
|
16
|
-
import com.android.billingclient.api.BillingResult
|
|
17
|
-
import com.facebook.react.bridge.ObjectAlreadyConsumedException
|
|
18
|
-
import java.lang.Exception
|
|
19
|
-
import com.android.billingclient.api.Purchase
|
|
20
|
-
import com.android.billingclient.api.ConsumeParams
|
|
21
|
-
import com.android.billingclient.api.ConsumeResponseListener
|
|
22
|
-
import com.facebook.react.bridge.WritableNativeArray
|
|
23
|
-
import com.android.billingclient.api.PurchasesResponseListener
|
|
24
|
-
import java.util.ArrayList
|
|
25
|
-
import com.facebook.react.bridge.ReadableArray
|
|
26
|
-
import com.android.billingclient.api.SkuDetailsParams
|
|
27
|
-
import com.android.billingclient.api.SkuDetailsResponseListener
|
|
28
|
-
import com.facebook.react.bridge.WritableMap
|
|
29
|
-
import com.facebook.react.bridge.Arguments
|
|
30
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
31
|
-
import com.android.billingclient.api.PurchaseHistoryResponseListener
|
|
32
|
-
import com.android.billingclient.api.PurchaseHistoryRecord
|
|
33
|
-
import com.facebook.react.bridge.WritableArray
|
|
34
|
-
import android.app.Activity
|
|
35
|
-
import com.android.billingclient.api.BillingFlowParams
|
|
36
|
-
import com.android.billingclient.api.BillingFlowParams.SubscriptionUpdateParams
|
|
37
|
-
import com.android.billingclient.api.AcknowledgePurchaseParams
|
|
38
|
-
import com.android.billingclient.api.AcknowledgePurchaseResponseListener
|
|
39
|
-
import com.android.billingclient.api.AccountIdentifiers
|
|
40
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
|
|
41
|
-
import com.facebook.react.bridge.LifecycleEventListener
|
|
42
3
|
import com.facebook.react.ReactPackage
|
|
43
|
-
import com.facebook.react.bridge.JavaScriptModule
|
|
44
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
45
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
+
import java.util.ArrayList
|
|
46
8
|
|
|
47
9
|
class RNIapPackage : ReactPackage {
|
|
48
10
|
|
|
@@ -55,4 +17,4 @@ class RNIapPackage : ReactPackage {
|
|
|
55
17
|
modules.add(RNIapModule(reactContext))
|
|
56
18
|
return modules
|
|
57
19
|
}
|
|
58
|
-
}
|
|
20
|
+
}
|
package/ios/RNIapIos.m
CHANGED
|
@@ -11,7 +11,7 @@ RCT_EXTERN_METHOD(endConnection:
|
|
|
11
11
|
reject:(RCTPromiseRejectBlock)reject)
|
|
12
12
|
RCT_EXTERN_METHOD(getItems:
|
|
13
13
|
(NSArray*)skus
|
|
14
|
-
resolve:(RCTPromiseResolveBlock)resolve
|
|
14
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
15
15
|
reject:(RCTPromiseRejectBlock)reject)
|
|
16
16
|
RCT_EXTERN_METHOD(getAvailableItems:
|
|
17
17
|
(RCTPromiseResolveBlock)resolve
|
|
@@ -35,7 +35,9 @@ RCT_EXTERN_METHOD(buyProductWithQuantityIOS:
|
|
|
35
35
|
RCT_EXTERN_METHOD(clearTransaction:
|
|
36
36
|
(RCTPromiseResolveBlock)resolve
|
|
37
37
|
reject:(RCTPromiseRejectBlock)reject)
|
|
38
|
-
RCT_EXTERN_METHOD(clearProducts
|
|
38
|
+
RCT_EXTERN_METHOD(clearProducts:
|
|
39
|
+
(RCTPromiseResolveBlock)resolve
|
|
40
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
39
41
|
RCT_EXTERN_METHOD(promotedProduct:
|
|
40
42
|
(RCTPromiseResolveBlock)resolve
|
|
41
43
|
reject:(RCTPromiseRejectBlock)reject)
|
package/ios/RNIapIos.swift
CHANGED
|
@@ -318,9 +318,9 @@ class RNIapIos: RCTEventEmitter, SKRequestDelegate, SKPaymentTransactionObserver
|
|
|
318
318
|
for transaction in pendingTrans {
|
|
319
319
|
SKPaymentQueue.default().finishTransaction(transaction)
|
|
320
320
|
}
|
|
321
|
-
} else {
|
|
322
|
-
resolve(nil)
|
|
323
321
|
}
|
|
322
|
+
resolve(nil)
|
|
323
|
+
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
|
|
@@ -379,6 +379,7 @@ class RNIapIos: RCTEventEmitter, SKRequestDelegate, SKPaymentTransactionObserver
|
|
|
379
379
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
380
380
|
) {
|
|
381
381
|
finishTransaction(withIdentifier: transactionIdentifier)
|
|
382
|
+
resolve(nil)
|
|
382
383
|
}
|
|
383
384
|
|
|
384
385
|
|