react-native-iap 15.6.1 → 16.0.0
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/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +34 -182
- package/android/src/main/java/com/margelo/nitro/iap/ProductSerialization.kt +0 -69
- package/android/src/main/java/com/margelo/nitro/iap/RnIapLog.kt +0 -13
- package/ios/HybridRnIap.swift +30 -95
- package/ios/RnIapHelper.swift +37 -48
- package/ios/RnIapLog.swift +0 -11
- package/lib/module/hooks/useIAP.js +1 -11
- package/lib/module/hooks/useIAP.js.map +1 -1
- package/lib/module/index.js +45 -379
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.kepler.js +7 -82
- package/lib/module/index.kepler.js.map +1 -1
- package/lib/module/types.js +5 -57
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/errorMapping.js +13 -21
- package/lib/module/utils/errorMapping.js.map +1 -1
- package/lib/module/utils/type-bridge.js +39 -77
- package/lib/module/utils/type-bridge.js.map +1 -1
- package/lib/module/utils.js +5 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/module/vega-adapter.js +10 -48
- package/lib/module/vega-adapter.js.map +1 -1
- package/lib/typescript/src/hooks/useIAP.d.ts +1 -49
- package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -175
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/index.kepler.d.ts +2 -54
- package/lib/typescript/src/index.kepler.d.ts.map +1 -1
- package/lib/typescript/src/specs/RnIap.nitro.d.ts +32 -173
- package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +76 -284
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/errorMapping.d.ts.map +1 -1
- package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
- package/nitrogen/generated/android/NitroIap+autolinking.cmake +5 -12
- package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +0 -22
- package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +0 -2
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +38 -189
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +2 -9
- package/nitrogen/generated/android/c++/JInitConnectionConfig.hpp +1 -7
- package/nitrogen/generated/android/c++/JNitroActiveSubscription.hpp +1 -5
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidType.hpp +3 -3
- package/nitrogen/generated/android/c++/JNitroProduct.hpp +5 -39
- package/nitrogen/generated/android/c++/JNitroPurchase.hpp +25 -7
- package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +1 -9
- package/nitrogen/generated/android/c++/{JNitroReceiptValidationAppleOptions.hpp → JNitroPurchaseVerificationAppleOptions.hpp} +10 -10
- package/nitrogen/generated/android/c++/{JNitroReceiptValidationGoogleOptions.hpp → JNitroPurchaseVerificationGoogleOptions.hpp} +10 -10
- package/nitrogen/generated/android/c++/{JNitroReceiptValidationHorizonOptions.hpp → JNitroPurchaseVerificationHorizonOptions.hpp} +10 -10
- package/nitrogen/generated/android/c++/JNitroPurchaseVerificationParams.hpp +79 -0
- package/nitrogen/generated/android/c++/{JNitroReceiptValidationResultAndroid.hpp → JNitroPurchaseVerificationResultAndroid.hpp} +10 -10
- package/nitrogen/generated/android/c++/{JNitroReceiptValidationResultIOS.hpp → JNitroPurchaseVerificationResultIOS.hpp} +10 -12
- package/nitrogen/generated/android/c++/JNitroRenewalInfoIOS.hpp +19 -3
- package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +1 -6
- package/nitrogen/generated/android/c++/JProductType.hpp +3 -3
- package/nitrogen/generated/android/c++/JPurchase.hpp +0 -2
- package/nitrogen/generated/android/c++/JPurchaseAndroid.hpp +1 -7
- package/nitrogen/generated/android/c++/JPurchaseIOS.hpp +25 -7
- package/nitrogen/generated/android/c++/JPurchaseVerificationProvider.hpp +3 -3
- package/nitrogen/generated/android/c++/JRenewalInfoIOS.hpp +19 -3
- package/nitrogen/generated/android/c++/JRequestPurchaseResult.hpp +0 -2
- package/nitrogen/generated/android/c++/JVariant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid.cpp +26 -0
- package/nitrogen/generated/android/c++/{JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp → JVariant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid.hpp} +26 -28
- package/nitrogen/generated/android/c++/JVariant_NullType_InitConnectionConfig.hpp +1 -3
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroProduct.hpp +0 -22
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchase.hpp +0 -2
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationAppleOptions.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationAppleOptions.hpp +72 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationGoogleOptions.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationGoogleOptions.hpp +74 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationHorizonOptions.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPurchaseVerificationHorizonOptions.hpp +72 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroRequestPurchaseAndroid.hpp +0 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +2 -30
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InitConnectionConfig.kt +3 -8
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroActiveSubscription.kt +2 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidType.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +5 -20
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +32 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseRequest.kt +3 -13
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationAppleOptions.kt → NitroPurchaseVerificationAppleOptions.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationGoogleOptions.kt → NitroPurchaseVerificationGoogleOptions.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationHorizonOptions.kt → NitroPurchaseVerificationHorizonOptions.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationParams.kt → NitroPurchaseVerificationParams.kt} +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationResultAndroid.kt → NitroPurchaseVerificationResultAndroid.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroReceiptValidationResultIOS.kt → NitroPurchaseVerificationResultIOS.kt} +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRenewalInfoIOS.kt +24 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +2 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/ProductType.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseAndroid.kt +2 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseIOS.kt +30 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseVerificationProvider.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/RenewalInfoIOS.kt +24 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{Variant_NullType_NitroReceiptValidationGoogleOptions.kt → Variant_NullType_NitroPurchaseVerificationAppleOptions.kt} +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{Variant_NullType_Array_NitroOneTimePurchaseOfferDetail_.kt → Variant_NullType_NitroPurchaseVerificationGoogleOptions.kt} +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{Variant_NullType_NitroReceiptValidationAppleOptions.kt → Variant_NullType_NitroPurchaseVerificationHorizonOptions.kt} +9 -9
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +16 -16
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +212 -570
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +18 -42
- package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +21 -101
- package/nitrogen/generated/ios/swift/Func_void_std__variant_NitroPurchaseVerificationResultIOS__NitroPurchaseVerificationResultAndroid_.swift +58 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +2 -9
- package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +22 -181
- package/nitrogen/generated/ios/swift/InitConnectionConfig.swift +2 -13
- package/nitrogen/generated/ios/swift/NitroActiveSubscription.swift +1 -38
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidType.swift +4 -4
- package/nitrogen/generated/ios/swift/NitroProduct.swift +5 -122
- package/nitrogen/generated/ios/swift/NitroPurchase.swift +224 -7
- package/nitrogen/generated/ios/swift/NitroPurchaseRequest.swift +1 -75
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationAppleOptions.swift → NitroPurchaseVerificationAppleOptions.swift} +5 -5
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationGoogleOptions.swift → NitroPurchaseVerificationGoogleOptions.swift} +5 -5
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationHorizonOptions.swift → NitroPurchaseVerificationHorizonOptions.swift} +5 -5
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationParams.swift → NitroPurchaseVerificationParams.swift} +36 -36
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationResultAndroid.swift → NitroPurchaseVerificationResultAndroid.swift} +5 -5
- package/nitrogen/generated/ios/swift/{NitroReceiptValidationResultIOS.swift → NitroPurchaseVerificationResultIOS.swift} +5 -5
- package/nitrogen/generated/ios/swift/NitroRenewalInfoIOS.swift +149 -1
- package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +1 -38
- package/nitrogen/generated/ios/swift/ProductType.swift +4 -4
- package/nitrogen/generated/ios/swift/PurchaseAndroid.swift +2 -7
- package/nitrogen/generated/ios/swift/PurchaseIOS.swift +221 -4
- package/nitrogen/generated/ios/swift/PurchaseVerificationProvider.swift +4 -4
- package/nitrogen/generated/ios/swift/RenewalInfoIOS.swift +150 -2
- package/nitrogen/generated/ios/swift/{Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.swift → Variant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid.swift} +5 -5
- package/nitrogen/generated/ios/swift/{Variant_NullType_NitroLimitedQuantityInfoAndroid.swift → Variant_NullType_NitroPurchaseVerificationAppleOptions.swift} +4 -4
- package/nitrogen/generated/ios/swift/{Variant_NullType_NitroReceiptValidationAppleOptions.swift → Variant_NullType_NitroPurchaseVerificationGoogleOptions.swift} +4 -4
- package/nitrogen/generated/ios/swift/{Variant_NullType_NitroPreorderDetailsAndroid.swift → Variant_NullType_NitroPurchaseVerificationHorizonOptions.swift} +4 -4
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +1 -8
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +11 -18
- package/nitrogen/generated/shared/c++/InitConnectionConfig.hpp +2 -9
- package/nitrogen/generated/shared/c++/NitroActiveSubscription.hpp +1 -5
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidType.hpp +4 -4
- package/nitrogen/generated/shared/c++/NitroProduct.hpp +6 -22
- package/nitrogen/generated/shared/c++/NitroPurchase.hpp +25 -8
- package/nitrogen/generated/shared/c++/NitroPurchaseRequest.hpp +2 -10
- package/nitrogen/generated/shared/c++/{NitroReceiptValidationAppleOptions.hpp → NitroPurchaseVerificationAppleOptions.hpp} +11 -11
- package/nitrogen/generated/shared/c++/{NitroReceiptValidationGoogleOptions.hpp → NitroPurchaseVerificationGoogleOptions.hpp} +11 -11
- package/nitrogen/generated/shared/c++/{NitroReceiptValidationHorizonOptions.hpp → NitroPurchaseVerificationHorizonOptions.hpp} +11 -11
- package/nitrogen/generated/shared/c++/NitroPurchaseVerificationParams.hpp +101 -0
- package/nitrogen/generated/shared/c++/{NitroReceiptValidationResultAndroid.hpp → NitroPurchaseVerificationResultAndroid.hpp} +11 -11
- package/nitrogen/generated/shared/c++/{NitroReceiptValidationResultIOS.hpp → NitroPurchaseVerificationResultIOS.hpp} +11 -11
- package/nitrogen/generated/shared/c++/NitroRenewalInfoIOS.hpp +18 -2
- package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +1 -5
- package/nitrogen/generated/shared/c++/ProductType.hpp +5 -5
- package/nitrogen/generated/shared/c++/PurchaseAndroid.hpp +1 -8
- package/nitrogen/generated/shared/c++/PurchaseIOS.hpp +25 -8
- package/nitrogen/generated/shared/c++/PurchaseVerificationProvider.hpp +5 -5
- package/nitrogen/generated/shared/c++/RenewalInfoIOS.hpp +18 -2
- package/openiap-versions.json +3 -3
- package/package.json +1 -1
- package/src/hooks/useIAP.ts +0 -76
- package/src/index.kepler.ts +11 -96
- package/src/index.ts +60 -457
- package/src/specs/RnIap.nitro.ts +35 -196
- package/src/types.ts +77 -295
- package/src/utils/errorMapping.ts +21 -20
- package/src/utils/type-bridge.ts +53 -90
- package/src/utils.ts +8 -0
- package/src/vega-adapter.ts +11 -59
- package/lib/module/utils/deprecation.js +0 -15
- package/lib/module/utils/deprecation.js.map +0 -1
- package/lib/module/utils/platform-request.js +0 -28
- package/lib/module/utils/platform-request.js.map +0 -1
- package/lib/typescript/src/utils/deprecation.d.ts +0 -3
- package/lib/typescript/src/utils/deprecation.d.ts.map +0 -1
- package/lib/typescript/src/utils/platform-request.d.ts +0 -12
- package/lib/typescript/src/utils/platform-request.d.ts.map +0 -1
- package/nitrogen/generated/android/c++/JAlternativeBillingModeAndroid.hpp +0 -61
- package/nitrogen/generated/android/c++/JNitroDiscountAmountAndroid.hpp +0 -61
- package/nitrogen/generated/android/c++/JNitroDiscountDisplayInfoAndroid.hpp +0 -69
- package/nitrogen/generated/android/c++/JNitroLimitedQuantityInfoAndroid.hpp +0 -61
- package/nitrogen/generated/android/c++/JNitroOneTimePurchaseOfferDetail.hpp +0 -148
- package/nitrogen/generated/android/c++/JNitroPreorderDetailsAndroid.hpp +0 -61
- package/nitrogen/generated/android/c++/JNitroReceiptValidationParams.hpp +0 -79
- package/nitrogen/generated/android/c++/JNitroRentalDetailsAndroid.hpp +0 -66
- package/nitrogen/generated/android/c++/JNitroValidTimeWindowAndroid.hpp +0 -61
- package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_Array_NitroOneTimePurchaseOfferDetail_.cpp +0 -35
- package/nitrogen/generated/android/c++/JVariant_NullType_Array_NitroOneTimePurchaseOfferDetail_.hpp +0 -103
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroDiscountAmountAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroDiscountAmountAndroid.hpp +0 -72
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroDiscountDisplayInfoAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroDiscountDisplayInfoAndroid.hpp +0 -77
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroLimitedQuantityInfoAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroLimitedQuantityInfoAndroid.hpp +0 -71
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPreorderDetailsAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroPreorderDetailsAndroid.hpp +0 -72
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationAppleOptions.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationAppleOptions.hpp +0 -72
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationGoogleOptions.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationGoogleOptions.hpp +0 -74
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationHorizonOptions.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroReceiptValidationHorizonOptions.hpp +0 -72
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroRentalDetailsAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroRentalDetailsAndroid.hpp +0 -74
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroValidTimeWindowAndroid.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_NullType_NitroValidTimeWindowAndroid.hpp +0 -72
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/AlternativeBillingModeAndroid.kt +0 -24
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroDiscountAmountAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroDiscountDisplayInfoAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroLimitedQuantityInfoAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroOneTimePurchaseOfferDetail.kt +0 -111
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPreorderDetailsAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRentalDetailsAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroValidTimeWindowAndroid.kt +0 -56
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroDiscountAmountAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroDiscountDisplayInfoAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroLimitedQuantityInfoAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroPreorderDetailsAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroReceiptValidationHorizonOptions.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroRentalDetailsAndroid.kt +0 -62
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroValidTimeWindowAndroid.kt +0 -62
- package/nitrogen/generated/ios/swift/AlternativeBillingModeAndroid.swift +0 -44
- package/nitrogen/generated/ios/swift/Func_void_std__variant_NitroReceiptValidationResultIOS__NitroReceiptValidationResultAndroid_.swift +0 -58
- package/nitrogen/generated/ios/swift/NitroDiscountAmountAndroid.swift +0 -34
- package/nitrogen/generated/ios/swift/NitroDiscountDisplayInfoAndroid.swift +0 -98
- package/nitrogen/generated/ios/swift/NitroLimitedQuantityInfoAndroid.swift +0 -34
- package/nitrogen/generated/ios/swift/NitroOneTimePurchaseOfferDetail.swift +0 -351
- package/nitrogen/generated/ios/swift/NitroPreorderDetailsAndroid.swift +0 -34
- package/nitrogen/generated/ios/swift/NitroRentalDetailsAndroid.swift +0 -66
- package/nitrogen/generated/ios/swift/NitroValidTimeWindowAndroid.swift +0 -34
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroDiscountAmountAndroid.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroDiscountDisplayInfoAndroid.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroReceiptValidationGoogleOptions.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroReceiptValidationHorizonOptions.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroRentalDetailsAndroid.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType_NitroValidTimeWindowAndroid.swift +0 -30
- package/nitrogen/generated/ios/swift/Variant_NullType__NitroOneTimePurchaseOfferDetail_.swift +0 -30
- package/nitrogen/generated/shared/c++/AlternativeBillingModeAndroid.hpp +0 -80
- package/nitrogen/generated/shared/c++/NitroDiscountAmountAndroid.hpp +0 -87
- package/nitrogen/generated/shared/c++/NitroDiscountDisplayInfoAndroid.hpp +0 -91
- package/nitrogen/generated/shared/c++/NitroLimitedQuantityInfoAndroid.hpp +0 -87
- package/nitrogen/generated/shared/c++/NitroOneTimePurchaseOfferDetail.hpp +0 -149
- package/nitrogen/generated/shared/c++/NitroPreorderDetailsAndroid.hpp +0 -87
- package/nitrogen/generated/shared/c++/NitroReceiptValidationParams.hpp +0 -101
- package/nitrogen/generated/shared/c++/NitroRentalDetailsAndroid.hpp +0 -90
- package/nitrogen/generated/shared/c++/NitroValidTimeWindowAndroid.hpp +0 -87
- package/src/utils/deprecation.ts +0 -16
- package/src/utils/platform-request.ts +0 -37
|
@@ -16,7 +16,6 @@ import dev.hyo.openiap.ProductAndroid
|
|
|
16
16
|
import dev.hyo.openiap.ProductQueryType
|
|
17
17
|
import dev.hyo.openiap.ProductRequest
|
|
18
18
|
import dev.hyo.openiap.ProductSubscriptionAndroid
|
|
19
|
-
import dev.hyo.openiap.ProductSubscriptionAndroidOfferDetails
|
|
20
19
|
import dev.hyo.openiap.ProductCommon
|
|
21
20
|
import dev.hyo.openiap.ProductType as OpenIapProductType
|
|
22
21
|
import dev.hyo.openiap.Purchase as OpenIapPurchase
|
|
@@ -326,11 +325,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
326
325
|
// which handles enabling the billing program internally
|
|
327
326
|
val openIapConfig = configValue?.let {
|
|
328
327
|
OpenIapInitConnectionConfig(
|
|
329
|
-
alternativeBillingModeAndroid = when (it.alternativeBillingModeAndroid) {
|
|
330
|
-
com.margelo.nitro.iap.AlternativeBillingModeAndroid.USER_CHOICE -> dev.hyo.openiap.AlternativeBillingModeAndroid.UserChoice
|
|
331
|
-
com.margelo.nitro.iap.AlternativeBillingModeAndroid.ALTERNATIVE_ONLY -> dev.hyo.openiap.AlternativeBillingModeAndroid.AlternativeOnly
|
|
332
|
-
else -> null
|
|
333
|
-
},
|
|
334
328
|
enableBillingProgramAndroid = configValue.enableBillingProgramAndroid?.let { program ->
|
|
335
329
|
mapBillingProgram(program)
|
|
336
330
|
},
|
|
@@ -445,13 +439,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
445
439
|
|
|
446
440
|
ensureConnection()
|
|
447
441
|
|
|
448
|
-
if (type.trim().lowercase(Locale.US) == "inapp") {
|
|
449
|
-
RnIapLog.deprecation(
|
|
450
|
-
"product-type.inapp",
|
|
451
|
-
"fetchProducts received legacy type 'inapp'; forwarding as 'in-app'. " +
|
|
452
|
-
"The alias will be removed in react-native-iap 16.0.0."
|
|
453
|
-
)
|
|
454
|
-
}
|
|
455
442
|
val queryType = parseProductQueryType(type)
|
|
456
443
|
val skusList = skus.toList()
|
|
457
444
|
|
|
@@ -503,25 +490,13 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
503
490
|
val defaultResult = RequestPurchaseResult.create(emptyArray<com.margelo.nitro.iap.Purchase>())
|
|
504
491
|
|
|
505
492
|
val androidRequest =
|
|
506
|
-
|
|
507
|
-
(request.google as? Variant_NullType_NitroRequestPurchaseAndroid.Second)?.value
|
|
508
|
-
} else {
|
|
509
|
-
(request.android as? Variant_NullType_NitroRequestPurchaseAndroid.Second)
|
|
510
|
-
?.value
|
|
511
|
-
?.also {
|
|
512
|
-
RnIapLog.deprecation(
|
|
513
|
-
"request-purchase.android",
|
|
514
|
-
"`request.android` is deprecated and will be removed in react-native-iap 16.0.0. Use `request.google` instead."
|
|
515
|
-
)
|
|
516
|
-
}
|
|
517
|
-
}
|
|
493
|
+
(request.google as? Variant_NullType_NitroRequestPurchaseAndroid.Second)?.value
|
|
518
494
|
|
|
519
495
|
RnIapLog.payload(
|
|
520
496
|
"requestPurchase",
|
|
521
497
|
mapOf(
|
|
522
498
|
"androidSkus" to (androidRequest?.skus?.toList() ?: emptyList()),
|
|
523
|
-
"hasApple" to (request.apple != null)
|
|
524
|
-
"hasLegacyIOS" to (request.ios != null)
|
|
499
|
+
"hasApple" to (request.apple != null)
|
|
525
500
|
)
|
|
526
501
|
)
|
|
527
502
|
|
|
@@ -576,7 +551,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
576
551
|
}
|
|
577
552
|
}
|
|
578
553
|
|
|
579
|
-
val typeHint = androidRequest.skus.firstOrNull()?.let { productTypeBySku[it] } ?: "
|
|
554
|
+
val typeHint = androidRequest.skus.firstOrNull()?.let { productTypeBySku[it] } ?: "in-app"
|
|
580
555
|
val queryType = parseProductQueryType(typeHint)
|
|
581
556
|
|
|
582
557
|
val subscriptionOffers = (androidRequest.subscriptionOffers as? Variant_NullType_Array_AndroidSubscriptionOfferInput_.Second)?.value
|
|
@@ -599,8 +574,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
599
574
|
|
|
600
575
|
val requestProps = when (queryType) {
|
|
601
576
|
ProductQueryType.Subs -> {
|
|
602
|
-
val replacementMode = androidRequest.replacementMode.unwrapDouble()?.toInt()
|
|
603
|
-
|
|
604
577
|
// Parse subscriptionProductReplacementParams (8.1.0+)
|
|
605
578
|
val subscriptionProductReplacementParams = (androidRequest.subscriptionProductReplacementParams as? Variant_NullType_SubscriptionProductReplacementParamsAndroid.Second)?.value?.let { params ->
|
|
606
579
|
OpenIapSubscriptionProductReplacementParams(
|
|
@@ -616,7 +589,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
616
589
|
developerBillingOption = developerBillingOption,
|
|
617
590
|
originalExternalTransactionId = androidRequest.originalExternalTransactionId.unwrapString(),
|
|
618
591
|
purchaseToken = androidRequest.purchaseToken.unwrapString(),
|
|
619
|
-
replacementMode = replacementMode,
|
|
620
592
|
skus = androidRequest.skus.toList(),
|
|
621
593
|
subscriptionOffers = normalizedOffers,
|
|
622
594
|
subscriptionProductReplacementParams = subscriptionProductReplacementParams
|
|
@@ -697,14 +669,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
697
669
|
|
|
698
670
|
val typeName = androidOptions?.type?.name?.lowercase(java.util.Locale.ROOT)
|
|
699
671
|
val normalizedType = when (typeName) {
|
|
700
|
-
"inapp" -> {
|
|
701
|
-
RnIapLog.deprecation(
|
|
702
|
-
"product-type.inapp",
|
|
703
|
-
"getAvailablePurchases received legacy type 'inapp'; forwarding as 'in-app'. " +
|
|
704
|
-
"The alias will be removed in react-native-iap 16.0.0."
|
|
705
|
-
)
|
|
706
|
-
"in-app"
|
|
707
|
-
}
|
|
708
672
|
"in-app", "subs" -> typeName
|
|
709
673
|
else -> null
|
|
710
674
|
}
|
|
@@ -767,7 +731,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
767
731
|
// iOS specific fields (null on Android)
|
|
768
732
|
expirationDateIOS = null,
|
|
769
733
|
environmentIOS = null,
|
|
770
|
-
willExpireSoon = null,
|
|
771
734
|
daysUntilExpirationIOS = null,
|
|
772
735
|
renewalInfoIOS = null
|
|
773
736
|
)
|
|
@@ -1055,7 +1018,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1055
1018
|
private fun sendPurchaseUpdate(purchase: NitroPurchase) {
|
|
1056
1019
|
RnIapLog.result(
|
|
1057
1020
|
"sendPurchaseUpdate",
|
|
1058
|
-
mapOf("productId" to purchase.productId, "
|
|
1021
|
+
mapOf("productId" to purchase.productId, "store" to purchase.store)
|
|
1059
1022
|
)
|
|
1060
1023
|
val snapshot = synchronized(purchaseUpdatedListeners) {
|
|
1061
1024
|
if (pendingPurchaseUpdates.enqueueIfNeeded(purchaseUpdatedListeners.isNotEmpty(), purchase)) {
|
|
@@ -1112,13 +1075,8 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1112
1075
|
}
|
|
1113
1076
|
|
|
1114
1077
|
private fun parseProductQueryType(rawType: String): ProductQueryType {
|
|
1115
|
-
|
|
1116
|
-
.
|
|
1117
|
-
.lowercase(Locale.US)
|
|
1118
|
-
.replace("_", "")
|
|
1119
|
-
.replace("-", "")
|
|
1120
|
-
return when (normalized) {
|
|
1121
|
-
"subs", "subscription", "subscriptions" -> ProductQueryType.Subs
|
|
1078
|
+
return when (rawType.trim().lowercase(Locale.US)) {
|
|
1079
|
+
"subs" -> ProductQueryType.Subs
|
|
1122
1080
|
"all" -> ProductQueryType.All
|
|
1123
1081
|
else -> ProductQueryType.InApp
|
|
1124
1082
|
}
|
|
@@ -1151,10 +1109,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1151
1109
|
else -> emptyList()
|
|
1152
1110
|
}
|
|
1153
1111
|
|
|
1154
|
-
private fun serializeSubscriptionOffers(offers: List<ProductSubscriptionAndroidOfferDetails>): String {
|
|
1155
|
-
return JSONArray(legacySubscriptionOfferMaps(offers)).toString()
|
|
1156
|
-
}
|
|
1157
|
-
|
|
1158
1112
|
/**
|
|
1159
1113
|
* Serialize standardized SubscriptionOffer list to JSON string (OpenIAP 1.3.10+)
|
|
1160
1114
|
*/
|
|
@@ -1171,21 +1125,15 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1171
1125
|
|
|
1172
1126
|
private fun convertToNitroProduct(product: ProductCommon): NitroProduct {
|
|
1173
1127
|
val subscriptionOffers = when (product) {
|
|
1174
|
-
is ProductSubscriptionAndroid -> product.
|
|
1175
|
-
is ProductAndroid -> product.
|
|
1128
|
+
is ProductSubscriptionAndroid -> product.subscriptionOffers
|
|
1129
|
+
is ProductAndroid -> product.subscriptionOffers.orEmpty()
|
|
1176
1130
|
else -> emptyList()
|
|
1177
1131
|
}
|
|
1178
|
-
val
|
|
1179
|
-
is
|
|
1180
|
-
|
|
1181
|
-
else -> null
|
|
1132
|
+
val discountOffers = when (product) {
|
|
1133
|
+
is ProductAndroid -> product.discountOffers.orEmpty()
|
|
1134
|
+
else -> emptyList()
|
|
1182
1135
|
}
|
|
1183
1136
|
|
|
1184
|
-
val subscriptionOffersJson = subscriptionOffers.takeIf { it.isNotEmpty() }?.let { serializeSubscriptionOffers(it) }
|
|
1185
|
-
val oneTimeOffersNitro = oneTimeOffers
|
|
1186
|
-
?.map { it.toNitroOneTimePurchaseOfferDetail() }
|
|
1187
|
-
?.toTypedArray()
|
|
1188
|
-
|
|
1189
1137
|
var originalPriceAndroid: String? = null
|
|
1190
1138
|
var originalPriceAmountMicrosAndroid: Double? = null
|
|
1191
1139
|
var introductoryPriceValueAndroid: Double? = null
|
|
@@ -1195,12 +1143,14 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1195
1143
|
var freeTrialPeriodAndroid: String? = null
|
|
1196
1144
|
|
|
1197
1145
|
if (product.type == OpenIapProductType.InApp) {
|
|
1198
|
-
|
|
1199
|
-
originalPriceAndroid =
|
|
1200
|
-
originalPriceAmountMicrosAndroid =
|
|
1146
|
+
discountOffers.firstOrNull()?.let { offer ->
|
|
1147
|
+
originalPriceAndroid = product.displayPrice
|
|
1148
|
+
originalPriceAmountMicrosAndroid =
|
|
1149
|
+
offer.fullPriceMicrosAndroid?.toDoubleOrNull()
|
|
1150
|
+
?: product.price?.times(1_000_000)
|
|
1201
1151
|
}
|
|
1202
1152
|
} else {
|
|
1203
|
-
val phases = subscriptionOffers.firstOrNull()?.
|
|
1153
|
+
val phases = subscriptionOffers.firstOrNull()?.pricingPhasesAndroid?.pricingPhaseList.orEmpty()
|
|
1204
1154
|
if (phases.isNotEmpty()) {
|
|
1205
1155
|
val basePhase = phases.firstOrNull { it.recurrenceMode == 2 } ?: phases.last()
|
|
1206
1156
|
originalPriceAndroid = basePhase.formattedPrice
|
|
@@ -1248,7 +1198,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1248
1198
|
|
|
1249
1199
|
// Serialize standardized cross-platform discountOffers (OpenIAP 1.3.10+)
|
|
1250
1200
|
val standardizedDiscountOffers = when (product) {
|
|
1251
|
-
is ProductSubscriptionAndroid -> product.discountOffers
|
|
1252
1201
|
is ProductAndroid -> product.discountOffers
|
|
1253
1202
|
else -> null
|
|
1254
1203
|
}
|
|
@@ -1271,8 +1220,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1271
1220
|
isFamilyShareableIOS = null,
|
|
1272
1221
|
jsonRepresentationIOS = null,
|
|
1273
1222
|
pricingTermsIOS = null,
|
|
1274
|
-
|
|
1275
|
-
discountsIOS = null,
|
|
1223
|
+
bundledSubscriptionsIOS = null,
|
|
1276
1224
|
subscriptionPeriodUnitIOS = null,
|
|
1277
1225
|
subscriptionPeriodNumberIOS = null,
|
|
1278
1226
|
introductoryPriceIOS = null,
|
|
@@ -1291,8 +1239,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1291
1239
|
introductoryPricePeriodAndroid = introductoryPricePeriodAndroid.wrapVariant(),
|
|
1292
1240
|
subscriptionPeriodAndroid = subscriptionPeriodAndroid.wrapVariant(),
|
|
1293
1241
|
freeTrialPeriodAndroid = freeTrialPeriodAndroid.wrapVariant(),
|
|
1294
|
-
subscriptionOfferDetailsAndroid = subscriptionOffersJson.wrapVariant(),
|
|
1295
|
-
oneTimePurchaseOfferDetailsAndroid = oneTimeOffersNitro?.let { Variant_NullType_Array_NitroOneTimePurchaseOfferDetail_.Second(it) },
|
|
1296
1242
|
productStatusAndroid = productStatusAndroid.wrapVariant()
|
|
1297
1243
|
)
|
|
1298
1244
|
}
|
|
@@ -1314,17 +1260,21 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1314
1260
|
purchaseToken = purchase.purchaseToken.wrapVariant(),
|
|
1315
1261
|
currentPlanId = purchase.currentPlanId.wrapVariant(),
|
|
1316
1262
|
ids = purchase.ids.wrapVariant(),
|
|
1317
|
-
platform = IapPlatform.ANDROID,
|
|
1318
1263
|
store = mapIapStore(purchase.store),
|
|
1319
1264
|
quantity = purchase.quantity.toDouble(),
|
|
1320
1265
|
purchaseState = mapPurchaseState(purchase.purchaseState),
|
|
1321
1266
|
isAutoRenewing = purchase.isAutoRenewing,
|
|
1322
1267
|
advancedCommerceInfoIOS = null,
|
|
1323
1268
|
billingPlanTypeIOS = null,
|
|
1269
|
+
bundleOriginalTransactionIdIOS = null,
|
|
1270
|
+
bundleProductIdIOS = null,
|
|
1271
|
+
bundleSubscriptionGroupIdIOS = null,
|
|
1272
|
+
bundleTransactionIdIOS = null,
|
|
1324
1273
|
commitmentInfoIOS = null,
|
|
1325
1274
|
quantityIOS = null,
|
|
1326
1275
|
originalTransactionDateIOS = null,
|
|
1327
1276
|
originalTransactionIdentifierIOS = null,
|
|
1277
|
+
previousOriginalTransactionIdIOS = null,
|
|
1328
1278
|
appAccountToken = null,
|
|
1329
1279
|
appBundleIdIOS = null,
|
|
1330
1280
|
countryCodeIOS = null,
|
|
@@ -1339,6 +1289,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1339
1289
|
reasonStringRepresentationIOS = null,
|
|
1340
1290
|
revocationDateIOS = null,
|
|
1341
1291
|
revocationReasonIOS = null,
|
|
1292
|
+
revocationTypeIOS = null,
|
|
1342
1293
|
storefrontCountryCodeIOS = null,
|
|
1343
1294
|
subscriptionGroupIdIOS = null,
|
|
1344
1295
|
transactionReasonIOS = null,
|
|
@@ -1379,13 +1330,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1379
1330
|
|
|
1380
1331
|
// Billing error messages handled by OpenIAP
|
|
1381
1332
|
|
|
1382
|
-
// iOS-specific method - not supported on Android
|
|
1383
|
-
override fun getStorefrontIOS(): Promise<String> {
|
|
1384
|
-
return Promise.async {
|
|
1385
|
-
throw OpenIapException(toErrorJson(OpenIapError.FeatureNotSupported()))
|
|
1386
|
-
}
|
|
1387
|
-
}
|
|
1388
|
-
|
|
1389
1333
|
// iOS-specific method - not supported on Android
|
|
1390
1334
|
override fun getAppTransactionIOS(): Promise<Variant_NullType_String> {
|
|
1391
1335
|
return Promise.async {
|
|
@@ -1417,27 +1361,9 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1417
1361
|
}
|
|
1418
1362
|
}
|
|
1419
1363
|
|
|
1420
|
-
|
|
1421
|
-
override fun requestPromotedProductIOS(): Promise<Variant_NullType_NitroProduct> {
|
|
1422
|
-
return Promise.async {
|
|
1423
|
-
// Android doesn't have promoted products like iOS App Store
|
|
1424
|
-
// Return null as this feature is iOS-only
|
|
1425
|
-
Variant_NullType_NitroProduct.First(NullType.NULL)
|
|
1426
|
-
}
|
|
1427
|
-
}
|
|
1428
|
-
|
|
1429
|
-
override fun buyPromotedProductIOS(): Promise<Boolean> {
|
|
1430
|
-
return Promise.async {
|
|
1431
|
-
// Android doesn't have promoted products like iOS App Store
|
|
1432
|
-
false
|
|
1433
|
-
}
|
|
1434
|
-
}
|
|
1435
|
-
|
|
1436
|
-
override fun presentCodeRedemptionSheetIOS(): Promise<Boolean> {
|
|
1364
|
+
override fun presentCodeRedemptionSheetIOS(): Promise<Variant_NullType_NitroPurchase> {
|
|
1437
1365
|
return Promise.async {
|
|
1438
|
-
|
|
1439
|
-
// This is an iOS-only feature, so we return false on Android
|
|
1440
|
-
false
|
|
1366
|
+
Variant_NullType_NitroPurchase.First(NullType.NULL)
|
|
1441
1367
|
}
|
|
1442
1368
|
}
|
|
1443
1369
|
|
|
@@ -1471,11 +1397,11 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1471
1397
|
}
|
|
1472
1398
|
|
|
1473
1399
|
// Receipt validation - calls OpenIAP's verifyPurchase
|
|
1474
|
-
override fun
|
|
1400
|
+
override fun verifyPurchase(params: NitroPurchaseVerificationParams): Promise<Variant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid> {
|
|
1475
1401
|
return Promise.async {
|
|
1476
1402
|
try {
|
|
1477
1403
|
// For Android, we need the google options to be provided (new platform-specific structure)
|
|
1478
|
-
val nitroGoogleOptions = (params.google as?
|
|
1404
|
+
val nitroGoogleOptions = (params.google as? Variant_NullType_NitroPurchaseVerificationGoogleOptions.Second)?.value
|
|
1479
1405
|
?: throw OpenIapException(toErrorJson(OpenIapError.DeveloperError(), debugMessage = "Missing required parameter: google options"))
|
|
1480
1406
|
|
|
1481
1407
|
// Validate required google fields
|
|
@@ -1491,7 +1417,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1491
1417
|
}
|
|
1492
1418
|
}
|
|
1493
1419
|
|
|
1494
|
-
RnIapLog.payload("
|
|
1420
|
+
RnIapLog.payload("verifyPurchase", mapOf(
|
|
1495
1421
|
"sku" to nitroGoogleOptions.sku,
|
|
1496
1422
|
"packageName" to nitroGoogleOptions.packageName,
|
|
1497
1423
|
"isSub" to nitroGoogleOptions.isSub.unwrapBool()
|
|
@@ -1516,7 +1442,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1516
1442
|
val androidResult = verifyResult as? VerifyPurchaseResultAndroid
|
|
1517
1443
|
?: throw OpenIapException(toErrorJson(OpenIapError.InvalidPurchaseVerification, debugMessage = "Unexpected result type from verifyPurchase"))
|
|
1518
1444
|
RnIapLog.result(
|
|
1519
|
-
"
|
|
1445
|
+
"verifyPurchase",
|
|
1520
1446
|
mapOf(
|
|
1521
1447
|
"productId" to androidResult.productId,
|
|
1522
1448
|
"testTransaction" to androidResult.testTransaction
|
|
@@ -1524,7 +1450,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1524
1450
|
)
|
|
1525
1451
|
|
|
1526
1452
|
// Convert OpenIAP result to Nitro result
|
|
1527
|
-
val result =
|
|
1453
|
+
val result = NitroPurchaseVerificationResultAndroid(
|
|
1528
1454
|
autoRenewing = androidResult.autoRenewing,
|
|
1529
1455
|
betaProduct = androidResult.betaProduct,
|
|
1530
1456
|
cancelDate = androidResult.cancelDate.wrapVariant(),
|
|
@@ -1545,13 +1471,13 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1545
1471
|
testTransaction = androidResult.testTransaction
|
|
1546
1472
|
)
|
|
1547
1473
|
|
|
1548
|
-
|
|
1474
|
+
Variant_NitroPurchaseVerificationResultIOS_NitroPurchaseVerificationResultAndroid.Second(result)
|
|
1549
1475
|
|
|
1550
1476
|
} catch (e: OpenIapException) {
|
|
1551
|
-
RnIapLog.failure("
|
|
1477
|
+
RnIapLog.failure("verifyPurchase", e)
|
|
1552
1478
|
throw e
|
|
1553
1479
|
} catch (e: Exception) {
|
|
1554
|
-
RnIapLog.failure("
|
|
1480
|
+
RnIapLog.failure("verifyPurchase", e)
|
|
1555
1481
|
val debugMessage = e.message
|
|
1556
1482
|
val error = OpenIapError.InvalidPurchaseVerification
|
|
1557
1483
|
throw OpenIapException(
|
|
@@ -1713,12 +1639,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1713
1639
|
}
|
|
1714
1640
|
}
|
|
1715
1641
|
|
|
1716
|
-
override fun getReceiptIOS(): Promise<String> {
|
|
1717
|
-
return Promise.async {
|
|
1718
|
-
throw OpenIapException(toErrorJson(OpenIapError.FeatureNotSupported()))
|
|
1719
|
-
}
|
|
1720
|
-
}
|
|
1721
|
-
|
|
1722
1642
|
override fun requestReceiptRefreshIOS(): Promise<String> {
|
|
1723
1643
|
return Promise.async {
|
|
1724
1644
|
throw OpenIapException(toErrorJson(OpenIapError.FeatureNotSupported()))
|
|
@@ -1737,74 +1657,6 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1737
1657
|
}
|
|
1738
1658
|
}
|
|
1739
1659
|
|
|
1740
|
-
// -------------------------------------------------------------------------
|
|
1741
|
-
// Alternative Billing (Android)
|
|
1742
|
-
// -------------------------------------------------------------------------
|
|
1743
|
-
|
|
1744
|
-
@Suppress("DEPRECATION")
|
|
1745
|
-
override fun checkAlternativeBillingAvailabilityAndroid(): Promise<Boolean> {
|
|
1746
|
-
return Promise.async {
|
|
1747
|
-
RnIapLog.payload("checkAlternativeBillingAvailabilityAndroid", null)
|
|
1748
|
-
try {
|
|
1749
|
-
val isAvailable = withContext(Dispatchers.Main) {
|
|
1750
|
-
openIap.checkAlternativeBillingAvailability()
|
|
1751
|
-
}
|
|
1752
|
-
RnIapLog.result("checkAlternativeBillingAvailabilityAndroid", isAvailable)
|
|
1753
|
-
isAvailable
|
|
1754
|
-
} catch (err: Throwable) {
|
|
1755
|
-
RnIapLog.failure("checkAlternativeBillingAvailabilityAndroid", err)
|
|
1756
|
-
val errorType = parseOpenIapError(err)
|
|
1757
|
-
throw OpenIapException(toErrorJson(errorType, debugMessage = err.message), err)
|
|
1758
|
-
}
|
|
1759
|
-
}
|
|
1760
|
-
}
|
|
1761
|
-
|
|
1762
|
-
@Suppress("DEPRECATION")
|
|
1763
|
-
override fun showAlternativeBillingDialogAndroid(): Promise<Boolean> {
|
|
1764
|
-
return Promise.async {
|
|
1765
|
-
RnIapLog.payload("showAlternativeBillingDialogAndroid", null)
|
|
1766
|
-
try {
|
|
1767
|
-
val activity = context.currentActivity
|
|
1768
|
-
?: throw OpenIapException(toErrorJson(OpenIapError.DeveloperError(), debugMessage = "Activity not available"))
|
|
1769
|
-
|
|
1770
|
-
val userAccepted = withContext(Dispatchers.Main) {
|
|
1771
|
-
openIap.setActivity(activity)
|
|
1772
|
-
openIap.showAlternativeBillingInformationDialog(activity)
|
|
1773
|
-
}
|
|
1774
|
-
RnIapLog.result("showAlternativeBillingDialogAndroid", userAccepted)
|
|
1775
|
-
userAccepted
|
|
1776
|
-
} catch (err: Throwable) {
|
|
1777
|
-
RnIapLog.failure("showAlternativeBillingDialogAndroid", err)
|
|
1778
|
-
val errorType = parseOpenIapError(err)
|
|
1779
|
-
throw OpenIapException(toErrorJson(errorType, debugMessage = err.message), err)
|
|
1780
|
-
}
|
|
1781
|
-
}
|
|
1782
|
-
}
|
|
1783
|
-
|
|
1784
|
-
@Suppress("DEPRECATION")
|
|
1785
|
-
override fun createAlternativeBillingTokenAndroid(sku: Variant_NullType_String?): Promise<Variant_NullType_String> {
|
|
1786
|
-
return Promise.async {
|
|
1787
|
-
val skuValue = sku.unwrapString()
|
|
1788
|
-
RnIapLog.payload("createAlternativeBillingTokenAndroid", mapOf("sku" to skuValue))
|
|
1789
|
-
try {
|
|
1790
|
-
// Note: OpenIapModule.createAlternativeBillingReportingToken() doesn't accept sku parameter
|
|
1791
|
-
// The sku parameter is ignored for now - may be used in future versions
|
|
1792
|
-
val token = withContext(Dispatchers.Main) {
|
|
1793
|
-
openIap.createAlternativeBillingReportingToken()
|
|
1794
|
-
}
|
|
1795
|
-
RnIapLog.result(
|
|
1796
|
-
"createAlternativeBillingTokenAndroid",
|
|
1797
|
-
if (token.isNullOrBlank()) "<empty>" else "<token>"
|
|
1798
|
-
)
|
|
1799
|
-
token?.let { Variant_NullType_String.Second(it) } ?: Variant_NullType_String.First(NullType.NULL)
|
|
1800
|
-
} catch (err: Throwable) {
|
|
1801
|
-
RnIapLog.failure("createAlternativeBillingTokenAndroid", err)
|
|
1802
|
-
val errorType = parseOpenIapError(err)
|
|
1803
|
-
throw OpenIapException(toErrorJson(errorType, debugMessage = err.message), err)
|
|
1804
|
-
}
|
|
1805
|
-
}
|
|
1806
|
-
}
|
|
1807
|
-
|
|
1808
1660
|
// User Choice Billing listener
|
|
1809
1661
|
override fun addUserChoiceBillingListenerAndroid(listener: (UserChoiceBillingDetails) -> Unit) {
|
|
1810
1662
|
synchronized(userChoiceBillingListenersAndroid) {
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
package com.margelo.nitro.iap
|
|
2
2
|
|
|
3
3
|
import dev.hyo.openiap.DiscountOffer
|
|
4
|
-
import dev.hyo.openiap.ProductAndroidOneTimePurchaseOfferDetail
|
|
5
4
|
import dev.hyo.openiap.ProductCommon
|
|
6
|
-
import dev.hyo.openiap.ProductSubscriptionAndroidOfferDetails
|
|
7
5
|
import dev.hyo.openiap.SubscriptionOffer
|
|
8
6
|
|
|
9
|
-
internal fun legacySubscriptionOfferMaps(
|
|
10
|
-
offers: List<ProductSubscriptionAndroidOfferDetails>,
|
|
11
|
-
): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
|
|
12
|
-
|
|
13
7
|
internal fun subscriptionOfferMaps(
|
|
14
8
|
offers: List<SubscriptionOffer>,
|
|
15
9
|
): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
|
|
@@ -18,69 +12,6 @@ internal fun discountOfferMaps(
|
|
|
18
12
|
offers: List<DiscountOffer>,
|
|
19
13
|
): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
|
|
20
14
|
|
|
21
|
-
internal fun ProductAndroidOneTimePurchaseOfferDetail.toNitroOneTimePurchaseOfferDetail(): NitroOneTimePurchaseOfferDetail =
|
|
22
|
-
NitroOneTimePurchaseOfferDetail(
|
|
23
|
-
formattedPrice = formattedPrice,
|
|
24
|
-
priceAmountMicros = priceAmountMicros,
|
|
25
|
-
priceCurrencyCode = priceCurrencyCode,
|
|
26
|
-
offerId = offerId?.let { Variant_NullType_String.Second(it) },
|
|
27
|
-
offerToken = offerToken,
|
|
28
|
-
offerTags = offerTags.toTypedArray(),
|
|
29
|
-
fullPriceMicros = fullPriceMicros?.let { Variant_NullType_String.Second(it) },
|
|
30
|
-
purchaseOptionId = purchaseOptionId?.let { Variant_NullType_String.Second(it) },
|
|
31
|
-
discountDisplayInfo = discountDisplayInfo?.let { discount ->
|
|
32
|
-
Variant_NullType_NitroDiscountDisplayInfoAndroid.Second(
|
|
33
|
-
NitroDiscountDisplayInfoAndroid(
|
|
34
|
-
percentageDiscount = discount.percentageDiscount?.toDouble()?.let {
|
|
35
|
-
Variant_NullType_Double.Second(it)
|
|
36
|
-
},
|
|
37
|
-
discountAmount = discount.discountAmount?.let { amount ->
|
|
38
|
-
Variant_NullType_NitroDiscountAmountAndroid.Second(
|
|
39
|
-
NitroDiscountAmountAndroid(
|
|
40
|
-
discountAmountMicros = amount.discountAmountMicros,
|
|
41
|
-
formattedDiscountAmount = amount.formattedDiscountAmount,
|
|
42
|
-
)
|
|
43
|
-
)
|
|
44
|
-
},
|
|
45
|
-
)
|
|
46
|
-
)
|
|
47
|
-
},
|
|
48
|
-
validTimeWindow = validTimeWindow?.let { window ->
|
|
49
|
-
Variant_NullType_NitroValidTimeWindowAndroid.Second(
|
|
50
|
-
NitroValidTimeWindowAndroid(
|
|
51
|
-
startTimeMillis = window.startTimeMillis,
|
|
52
|
-
endTimeMillis = window.endTimeMillis,
|
|
53
|
-
)
|
|
54
|
-
)
|
|
55
|
-
},
|
|
56
|
-
limitedQuantityInfo = limitedQuantityInfo?.let { info ->
|
|
57
|
-
Variant_NullType_NitroLimitedQuantityInfoAndroid.Second(
|
|
58
|
-
NitroLimitedQuantityInfoAndroid(
|
|
59
|
-
maximumQuantity = info.maximumQuantity.toDouble(),
|
|
60
|
-
remainingQuantity = info.remainingQuantity.toDouble(),
|
|
61
|
-
)
|
|
62
|
-
)
|
|
63
|
-
},
|
|
64
|
-
preorderDetailsAndroid = preorderDetailsAndroid?.let { preorder ->
|
|
65
|
-
Variant_NullType_NitroPreorderDetailsAndroid.Second(
|
|
66
|
-
NitroPreorderDetailsAndroid(
|
|
67
|
-
preorderPresaleEndTimeMillis = preorder.preorderPresaleEndTimeMillis,
|
|
68
|
-
preorderReleaseTimeMillis = preorder.preorderReleaseTimeMillis,
|
|
69
|
-
)
|
|
70
|
-
)
|
|
71
|
-
},
|
|
72
|
-
rentalDetailsAndroid = rentalDetailsAndroid?.let { rental ->
|
|
73
|
-
Variant_NullType_NitroRentalDetailsAndroid.Second(
|
|
74
|
-
NitroRentalDetailsAndroid(
|
|
75
|
-
rentalExpirationPeriod = rental.rentalExpirationPeriod?.let {
|
|
76
|
-
Variant_NullType_String.Second(it)
|
|
77
|
-
},
|
|
78
|
-
rentalPeriod = rental.rentalPeriod,
|
|
79
|
-
)
|
|
80
|
-
)
|
|
81
|
-
},
|
|
82
|
-
)
|
|
83
|
-
|
|
84
15
|
internal fun ProductCommon.nitroDebugDescription(): Variant_NullType_String? =
|
|
85
16
|
debugDescription?.let { Variant_NullType_String.Second(it) }
|
|
86
17
|
|
|
@@ -3,14 +3,10 @@ package com.margelo.nitro.iap
|
|
|
3
3
|
import android.util.Log
|
|
4
4
|
import org.json.JSONArray
|
|
5
5
|
import org.json.JSONObject
|
|
6
|
-
import java.util.Collections
|
|
7
6
|
import java.util.Locale
|
|
8
|
-
import java.util.concurrent.ConcurrentHashMap
|
|
9
7
|
|
|
10
8
|
internal object RnIapLog {
|
|
11
9
|
private const val TAG = "RnIap"
|
|
12
|
-
private val emittedDeprecations: MutableSet<String> =
|
|
13
|
-
Collections.newSetFromMap(ConcurrentHashMap())
|
|
14
10
|
private val SENSITIVE_KEY_FRAGMENTS = setOf(
|
|
15
11
|
"token",
|
|
16
12
|
"apikey",
|
|
@@ -49,15 +45,6 @@ internal object RnIapLog {
|
|
|
49
45
|
Log.w(TAG, message)
|
|
50
46
|
}
|
|
51
47
|
|
|
52
|
-
fun deprecation(
|
|
53
|
-
key: String,
|
|
54
|
-
message: String,
|
|
55
|
-
) {
|
|
56
|
-
if (emittedDeprecations.add(key)) {
|
|
57
|
-
Log.w(TAG, message)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
48
|
private fun stringify(value: Any?): String {
|
|
62
49
|
val sanitized = sanitize(value) ?: return "null"
|
|
63
50
|
return when (sanitized) {
|