react-native-iap 14.4.45 → 14.4.47

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.
Files changed (75) hide show
  1. package/NitroIap.podspec +2 -2
  2. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +113 -3
  3. package/ios/HybridRnIap.swift +61 -2
  4. package/lib/module/hooks/useIAP.js +9 -1
  5. package/lib/module/hooks/useIAP.js.map +1 -1
  6. package/lib/module/index.js +68 -1
  7. package/lib/module/index.js.map +1 -1
  8. package/lib/module/types.js +5 -0
  9. package/lib/module/types.js.map +1 -1
  10. package/lib/module/utils/errorMapping.js +32 -6
  11. package/lib/module/utils/errorMapping.js.map +1 -1
  12. package/lib/typescript/src/hooks/useIAP.d.ts +5 -1
  13. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  14. package/lib/typescript/src/index.d.ts +34 -1
  15. package/lib/typescript/src/index.d.ts.map +1 -1
  16. package/lib/typescript/src/specs/RnIap.nitro.d.ts +72 -26
  17. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  18. package/lib/typescript/src/types.d.ts +109 -51
  19. package/lib/typescript/src/types.d.ts.map +1 -1
  20. package/lib/typescript/src/utils/errorMapping.d.ts.map +1 -1
  21. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +76 -0
  22. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +2 -0
  23. package/nitrogen/generated/android/c++/JIapkitPurchaseState.hpp +80 -0
  24. package/nitrogen/generated/android/c++/JIapkitStore.hpp +59 -0
  25. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithIapkitAppleProps.hpp +57 -0
  26. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithIapkitGoogleProps.hpp +57 -0
  27. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithIapkitProps.hpp +70 -0
  28. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithIapkitResult.hpp +68 -0
  29. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithProviderProps.hpp +70 -0
  30. package/nitrogen/generated/android/c++/JNitroVerifyPurchaseWithProviderResult.hpp +86 -0
  31. package/nitrogen/generated/android/c++/JPurchaseVerificationProvider.hpp +59 -0
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +8 -0
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/IapkitPurchaseState.kt +28 -0
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/IapkitStore.kt +21 -0
  35. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithIapkitAppleProps.kt +36 -0
  36. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithIapkitGoogleProps.kt +36 -0
  37. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithIapkitProps.kt +42 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithIapkitResult.kt +42 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithProviderProps.kt +39 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroVerifyPurchaseWithProviderResult.kt +39 -0
  41. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseVerificationProvider.kt +21 -0
  42. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +8 -0
  43. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +123 -0
  44. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +27 -0
  45. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +43 -0
  46. package/nitrogen/generated/ios/swift/Func_void_NitroVerifyPurchaseWithProviderResult.swift +47 -0
  47. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +2 -0
  48. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +45 -0
  49. package/nitrogen/generated/ios/swift/IapkitPurchaseState.swift +68 -0
  50. package/nitrogen/generated/ios/swift/IapkitStore.swift +40 -0
  51. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithIapkitAppleProps.swift +35 -0
  52. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithIapkitGoogleProps.swift +35 -0
  53. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithIapkitProps.swift +100 -0
  54. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithIapkitResult.swift +57 -0
  55. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithProviderProps.swift +58 -0
  56. package/nitrogen/generated/ios/swift/NitroVerifyPurchaseWithProviderResult.swift +58 -0
  57. package/nitrogen/generated/ios/swift/PurchaseVerificationProvider.swift +40 -0
  58. package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +2 -0
  59. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +8 -0
  60. package/nitrogen/generated/shared/c++/IapkitPurchaseState.hpp +104 -0
  61. package/nitrogen/generated/shared/c++/IapkitStore.hpp +76 -0
  62. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithIapkitAppleProps.hpp +75 -0
  63. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithIapkitGoogleProps.hpp +75 -0
  64. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithIapkitProps.hpp +89 -0
  65. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithIapkitResult.hpp +87 -0
  66. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithProviderProps.hpp +84 -0
  67. package/nitrogen/generated/shared/c++/NitroVerifyPurchaseWithProviderResult.hpp +84 -0
  68. package/nitrogen/generated/shared/c++/PurchaseVerificationProvider.hpp +76 -0
  69. package/openiap-versions.json +3 -3
  70. package/package.json +1 -1
  71. package/src/hooks/useIAP.ts +32 -0
  72. package/src/index.ts +74 -5
  73. package/src/specs/RnIap.nitro.ts +101 -28
  74. package/src/types.ts +126 -57
  75. package/src/utils/errorMapping.ts +32 -4
package/NitroIap.podspec CHANGED
@@ -42,8 +42,8 @@ Pod::Spec.new do |s|
42
42
  s.dependency 'React-jsi'
43
43
  s.dependency 'React-callinvoker'
44
44
  # OpenIAP Apple for StoreKit 2 integration
45
- # Use ~> to allow patch updates (e.g., 1.2.30 -> 1.2.31, but not 1.3.0)
46
- s.dependency 'openiap', "~> #{apple_version}"
45
+ # Exact version match for consistent builds
46
+ s.dependency 'openiap', "#{apple_version}"
47
47
 
48
48
  install_modules_dependencies(s)
49
49
  end
@@ -549,7 +549,34 @@ class HybridRnIap : HybridRnIapSpec() {
549
549
  }
550
550
  }
551
551
  }
552
-
552
+
553
+ override fun hasActiveSubscriptions(subscriptionIds: Array<String>?): Promise<Boolean> {
554
+ return Promise.async {
555
+ initConnection(null).await()
556
+
557
+ RnIapLog.payload(
558
+ "hasActiveSubscriptions",
559
+ mapOf("subscriptionIds" to (subscriptionIds?.toList() ?: "all"))
560
+ )
561
+
562
+ try {
563
+ val hasActive = openIap.hasActiveSubscriptions(subscriptionIds?.toList())
564
+ RnIapLog.result("hasActiveSubscriptions", hasActive)
565
+ hasActive
566
+ } catch (e: Exception) {
567
+ RnIapLog.failure("hasActiveSubscriptions", e)
568
+ val error = OpenIAPError.ServiceUnavailable
569
+ throw OpenIapException(
570
+ toErrorJson(
571
+ error = error,
572
+ debugMessage = e.message,
573
+ messageOverride = "Failed to check active subscriptions: ${e.message}"
574
+ )
575
+ )
576
+ }
577
+ }
578
+ }
579
+
553
580
  // Transaction management methods (Unified)
554
581
  override fun finishTransaction(params: NitroFinishTransactionParams): Promise<Variant_Boolean_NitroPurchaseResult> {
555
582
  return Promise.async {
@@ -1078,7 +1105,7 @@ class HybridRnIap : HybridRnIapSpec() {
1078
1105
  )
1079
1106
 
1080
1107
  Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.Second(result)
1081
-
1108
+
1082
1109
  } catch (e: Exception) {
1083
1110
  val debugMessage = e.message
1084
1111
  val error = OpenIAPError.InvalidReceipt
@@ -1092,7 +1119,60 @@ class HybridRnIap : HybridRnIapSpec() {
1092
1119
  }
1093
1120
  }
1094
1121
  }
1095
-
1122
+
1123
+ override fun verifyPurchaseWithProvider(params: NitroVerifyPurchaseWithProviderProps): Promise<NitroVerifyPurchaseWithProviderResult> {
1124
+ return Promise.async {
1125
+ try {
1126
+ // Convert Nitro enum to string (e.g., IAPKIT -> "iapkit")
1127
+ val providerString = params.provider.name.lowercase()
1128
+ RnIapLog.payload("verifyPurchaseWithProvider", mapOf("provider" to providerString))
1129
+
1130
+ // Build the props map for OpenIAP - use string value for provider
1131
+ val propsMap = mutableMapOf<String, Any?>("provider" to providerString)
1132
+ params.iapkit?.let { iapkit ->
1133
+ val iapkitMap = mutableMapOf<String, Any?>()
1134
+ iapkit.apiKey?.let { iapkitMap["apiKey"] = it }
1135
+ iapkit.google?.let { google ->
1136
+ iapkitMap["google"] = mapOf("purchaseToken" to google.purchaseToken)
1137
+ }
1138
+ iapkit.apple?.let { apple ->
1139
+ iapkitMap["apple"] = mapOf("jws" to apple.jws)
1140
+ }
1141
+ propsMap["iapkit"] = iapkitMap
1142
+ }
1143
+
1144
+ val props = dev.hyo.openiap.VerifyPurchaseWithProviderProps.fromJson(propsMap)
1145
+ val result = openIap.verifyPurchaseWithProvider(props)
1146
+
1147
+ RnIapLog.result("verifyPurchaseWithProvider", mapOf("provider" to result.provider, "iapkitCount" to result.iapkit.size))
1148
+
1149
+ // Convert result to Nitro types
1150
+ val nitroIapkitResults = result.iapkit.map { item ->
1151
+ NitroVerifyPurchaseWithIapkitResult(
1152
+ isValid = item.isValid,
1153
+ state = mapIapkitPurchaseState(item.state.name),
1154
+ store = mapIapkitStore(item.store.name)
1155
+ )
1156
+ }.toTypedArray()
1157
+
1158
+ NitroVerifyPurchaseWithProviderResult(
1159
+ iapkit = nitroIapkitResults,
1160
+ provider = mapPurchaseVerificationProvider(result.provider.name)
1161
+ )
1162
+ } catch (e: Exception) {
1163
+ RnIapLog.failure("verifyPurchaseWithProvider", e)
1164
+ val error = OpenIAPError.VerificationFailed
1165
+ throw OpenIapException(
1166
+ toErrorJson(
1167
+ error = error,
1168
+ debugMessage = e.message,
1169
+ messageOverride = "Verification failed: ${e.message ?: "unknown reason"}"
1170
+ )
1171
+ )
1172
+ }
1173
+ }
1174
+ }
1175
+
1096
1176
  // iOS-specific methods - Not applicable on Android, return appropriate defaults
1097
1177
  override fun subscriptionStatusIOS(sku: String): Promise<Array<NitroSubscriptionStatus>?> {
1098
1178
  return Promise.async {
@@ -1324,6 +1404,36 @@ class HybridRnIap : HybridRnIapSpec() {
1324
1404
  }
1325
1405
  }
1326
1406
 
1407
+ // Helper functions to map OpenIAP enum values to Nitro enum values
1408
+ private fun mapIapkitPurchaseState(stateName: String): IapkitPurchaseState {
1409
+ return when (stateName.uppercase()) {
1410
+ "ENTITLED" -> IapkitPurchaseState.ENTITLED
1411
+ "PENDING_ACKNOWLEDGMENT", "PENDING-ACKNOWLEDGMENT" -> IapkitPurchaseState.PENDING_ACKNOWLEDGMENT
1412
+ "PENDING" -> IapkitPurchaseState.PENDING
1413
+ "CANCELED" -> IapkitPurchaseState.CANCELED
1414
+ "EXPIRED" -> IapkitPurchaseState.EXPIRED
1415
+ "READY_TO_CONSUME", "READY-TO-CONSUME" -> IapkitPurchaseState.READY_TO_CONSUME
1416
+ "CONSUMED" -> IapkitPurchaseState.CONSUMED
1417
+ "INAUTHENTIC" -> IapkitPurchaseState.INAUTHENTIC
1418
+ else -> IapkitPurchaseState.UNKNOWN
1419
+ }
1420
+ }
1421
+
1422
+ private fun mapIapkitStore(storeName: String): IapkitStore {
1423
+ return when (storeName.uppercase()) {
1424
+ "APPLE" -> IapkitStore.APPLE
1425
+ "GOOGLE" -> IapkitStore.GOOGLE
1426
+ else -> IapkitStore.GOOGLE // Default to Google on Android
1427
+ }
1428
+ }
1429
+
1430
+ private fun mapPurchaseVerificationProvider(providerName: String): PurchaseVerificationProvider {
1431
+ return when (providerName.uppercase()) {
1432
+ "IAPKIT" -> PurchaseVerificationProvider.IAPKIT
1433
+ else -> PurchaseVerificationProvider.NONE
1434
+ }
1435
+ }
1436
+
1327
1437
  private fun toErrorResult(
1328
1438
  error: OpenIAPError,
1329
1439
  productId: String? = null,
@@ -265,7 +265,22 @@ class HybridRnIap: HybridRnIapSpec {
265
265
  }
266
266
  }
267
267
  }
268
-
268
+
269
+ func hasActiveSubscriptions(subscriptionIds: [String]?) throws -> Promise<Bool> {
270
+ return Promise.async {
271
+ try self.ensureConnection()
272
+ do {
273
+ RnIapLog.payload("hasActiveSubscriptions", subscriptionIds ?? [])
274
+ let hasActive = try await OpenIapModule.shared.hasActiveSubscriptions(subscriptionIds)
275
+ RnIapLog.result("hasActiveSubscriptions", hasActive)
276
+ return hasActive
277
+ } catch {
278
+ RnIapLog.failure("hasActiveSubscriptions", error: error)
279
+ throw error
280
+ }
281
+ }
282
+ }
283
+
269
284
  func finishTransaction(params: NitroFinishTransactionParams) throws -> Promise<Variant_Bool_NitroPurchaseResult> {
270
285
  return Promise.async {
271
286
  guard let iosParams = params.ios else { return .first(true) }
@@ -305,7 +320,7 @@ class HybridRnIap: HybridRnIapSpec {
305
320
  return Promise.async {
306
321
  do {
307
322
  RnIapLog.payload("validateReceiptIOS", ["sku": params.sku])
308
- let props = try OpenIapSerialization.receiptValidationProps(from: ["sku": params.sku])
323
+ let props = try OpenIapSerialization.verifyPurchaseProps(from: ["sku": params.sku])
309
324
  let result = try await OpenIapModule.shared.validateReceiptIOS(props)
310
325
  var encoded = RnIapHelper.sanitizeDictionary(OpenIapSerialization.encode(result))
311
326
  if encoded["receiptData"] != nil {
@@ -334,6 +349,50 @@ class HybridRnIap: HybridRnIapSpec {
334
349
  }
335
350
  }
336
351
 
352
+ func verifyPurchaseWithProvider(params: NitroVerifyPurchaseWithProviderProps) throws -> Promise<NitroVerifyPurchaseWithProviderResult> {
353
+ return Promise.async {
354
+ do {
355
+ RnIapLog.payload("verifyPurchaseWithProvider", ["provider": params.provider.stringValue])
356
+ // Convert Nitro params to OpenIAP props using JSONSerialization (same as expo-iap)
357
+ // Use stringValue for enum to get proper string representation ("iapkit" instead of numeric rawValue)
358
+ var propsDict: [String: Any] = ["provider": params.provider.stringValue]
359
+ if let iapkit = params.iapkit {
360
+ var iapkitDict: [String: Any] = [:]
361
+ if let apiKey = iapkit.apiKey {
362
+ iapkitDict["apiKey"] = apiKey
363
+ }
364
+ if let apple = iapkit.apple {
365
+ iapkitDict["apple"] = ["jws": apple.jws]
366
+ }
367
+ if let google = iapkit.google {
368
+ iapkitDict["google"] = ["purchaseToken": google.purchaseToken]
369
+ }
370
+ propsDict["iapkit"] = iapkitDict
371
+ }
372
+ // Use JSONSerialization + JSONDecoder like expo-iap does
373
+ let jsonData = try JSONSerialization.data(withJSONObject: propsDict)
374
+ let props = try JSONDecoder().decode(VerifyPurchaseWithProviderProps.self, from: jsonData)
375
+ let result = try await OpenIapModule.shared.verifyPurchaseWithProvider(props)
376
+ RnIapLog.result("verifyPurchaseWithProvider", ["provider": result.provider, "iapkitCount": result.iapkit.count])
377
+ // Convert result to Nitro types
378
+ let nitroIapkitResults = result.iapkit.map { item -> NitroVerifyPurchaseWithIapkitResult in
379
+ NitroVerifyPurchaseWithIapkitResult(
380
+ isValid: item.isValid,
381
+ state: IapkitPurchaseState(fromString: item.state.rawValue) ?? .unknown,
382
+ store: IapkitStore(fromString: item.store.rawValue) ?? .apple
383
+ )
384
+ }
385
+ return NitroVerifyPurchaseWithProviderResult(
386
+ iapkit: nitroIapkitResults,
387
+ provider: PurchaseVerificationProvider(fromString: result.provider.rawValue) ?? .iapkit
388
+ )
389
+ } catch {
390
+ RnIapLog.failure("verifyPurchaseWithProvider", error: error)
391
+ throw PurchaseError.make(code: .receiptFailed, message: error.localizedDescription)
392
+ }
393
+ }
394
+ }
395
+
337
396
  func getStorefront() throws -> Promise<String> {
338
397
  return Promise.async {
339
398
  do {
@@ -6,7 +6,7 @@ import { Platform } from 'react-native';
6
6
  import { RnIapConsole } from "../utils/debug.js";
7
7
 
8
8
  // Internal modules
9
- import { initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, validateReceipt as validateReceiptInternal, getActiveSubscriptions, hasActiveSubscriptions, restorePurchases as restorePurchasesTopLevel, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, userChoiceBillingListenerAndroid } from "../index.js";
9
+ import { initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, validateReceipt as validateReceiptInternal, verifyPurchase as verifyPurchaseTopLevel, verifyPurchaseWithProvider as verifyPurchaseWithProviderTopLevel, getActiveSubscriptions, hasActiveSubscriptions, restorePurchases as restorePurchasesTopLevel, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, userChoiceBillingListenerAndroid } from "../index.js";
10
10
 
11
11
  // Types
12
12
  import { ErrorCode } from "../types.js";
@@ -138,6 +138,12 @@ export function useIAP(options) {
138
138
  androidOptions
139
139
  });
140
140
  }, []);
141
+ const verifyPurchase = useCallback(async options => {
142
+ return verifyPurchaseTopLevel(options);
143
+ }, []);
144
+ const verifyPurchaseWithProvider = useCallback(async options => {
145
+ return verifyPurchaseWithProviderTopLevel(options);
146
+ }, []);
141
147
  const initIapWithSubscriptions = useCallback(async () => {
142
148
  // Register listeners BEFORE initConnection to avoid race condition
143
149
  subscriptionsRef.current.purchaseUpdate = purchaseUpdatedListener(async purchase => {
@@ -222,6 +228,8 @@ export function useIAP(options) {
222
228
  fetchProducts: fetchProductsInternal,
223
229
  requestPurchase,
224
230
  validateReceipt,
231
+ verifyPurchase,
232
+ verifyPurchaseWithProvider,
225
233
  restorePurchases: async () => {
226
234
  try {
227
235
  await restorePurchasesTopLevel();
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","userChoiceBillingListenerAndroid","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","error","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","config","alternativeBillingModeAndroid","remove","currentSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","verifyPurchase","verifyPurchaseTopLevel","verifyPurchaseWithProvider","verifyPurchaseWithProviderTopLevel","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","userChoiceBillingListenerAndroid","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","error","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","config","alternativeBillingModeAndroid","remove","currentSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ import { NitroModules } from 'react-native-nitro-modules';
8
8
 
9
9
  // Internal modules
10
10
 
11
+ import { ErrorCode } from "./types.js";
11
12
  import { convertNitroProductToProduct, convertNitroPurchaseToPurchase, convertProductToProductSubscription, validateNitroProduct, validateNitroPurchase, convertNitroSubscriptionStatusToSubscriptionStatusIOS } from "./utils/type-bridge.js";
12
13
  import { parseErrorStringToJsonObj } from "./utils/error.js";
13
14
  import { normalizeErrorCodeFromNative, createPurchaseError } from "./utils/errorMapping.js";
@@ -1010,7 +1011,7 @@ export const consumePurchaseAndroid = async purchaseToken => {
1010
1011
  * Validate receipt on both iOS and Android platforms
1011
1012
  * @param sku - Product SKU
1012
1013
  * @param androidOptions - Android-specific validation options (required for Android)
1013
- * @returns Promise<ReceiptValidationResultIOS | ReceiptValidationResultAndroid> - Platform-specific receipt validation result
1014
+ * @returns Promise<VerifyPurchaseResultIOS | VerifyPurchaseResultAndroid> - Platform-specific receipt validation result
1014
1015
  */
1015
1016
  export const validateReceipt = async options => {
1016
1017
  const {
@@ -1075,6 +1076,72 @@ export const validateReceipt = async options => {
1075
1076
  }
1076
1077
  };
1077
1078
 
1079
+ /**
1080
+ * Verify purchase with the configured providers
1081
+ *
1082
+ * This function uses the native OpenIAP verifyPurchase implementation
1083
+ * which validates purchases using platform-specific methods.
1084
+ * This is an alias for validateReceipt for API consistency with OpenIAP.
1085
+ *
1086
+ * @param options - Receipt validation options containing the SKU
1087
+ * @returns Promise resolving to receipt validation result
1088
+ */
1089
+ export const verifyPurchase = validateReceipt;
1090
+
1091
+ /**
1092
+ * Verify purchase with a specific provider (e.g., IAPKit)
1093
+ *
1094
+ * This function allows you to verify purchases using external verification
1095
+ * services like IAPKit, which provide additional validation and security.
1096
+ *
1097
+ * @param options - Verification options including provider and credentials
1098
+ * @returns Promise resolving to provider-specific verification result
1099
+ *
1100
+ * @example
1101
+ * ```typescript
1102
+ * const result = await verifyPurchaseWithProvider({
1103
+ * provider: 'iapkit',
1104
+ * iapkit: {
1105
+ * apiKey: 'your-api-key',
1106
+ * apple: { jws: purchase.purchaseToken },
1107
+ * google: { purchaseToken: purchase.purchaseToken },
1108
+ * },
1109
+ * });
1110
+ * ```
1111
+ */
1112
+ export const verifyPurchaseWithProvider = async options => {
1113
+ try {
1114
+ const result = await IAP.instance.verifyPurchaseWithProvider({
1115
+ provider: options.provider,
1116
+ iapkit: options.iapkit ?? null
1117
+ });
1118
+ // Validate provider - Nitro spec allows 'none' for compatibility, but this function only supports 'iapkit'
1119
+ if (result.provider !== 'iapkit') {
1120
+ throw createPurchaseError({
1121
+ code: ErrorCode.DeveloperError,
1122
+ message: `Unsupported provider: ${result.provider}. Only 'iapkit' is supported.`
1123
+ });
1124
+ }
1125
+ return {
1126
+ provider: result.provider,
1127
+ iapkit: result.iapkit.map(item => ({
1128
+ isValid: item.isValid,
1129
+ state: item.state,
1130
+ store: item.store
1131
+ }))
1132
+ };
1133
+ } catch (error) {
1134
+ RnIapConsole.error('[verifyPurchaseWithProvider] Failed:', error);
1135
+ const parsedError = parseErrorStringToJsonObj(error);
1136
+ throw createPurchaseError({
1137
+ code: parsedError.code,
1138
+ message: parsedError.message,
1139
+ responseCode: parsedError.responseCode,
1140
+ debugMessage: parsedError.debugMessage
1141
+ });
1142
+ }
1143
+ };
1144
+
1078
1145
  /**
1079
1146
  * Sync iOS purchases with App Store (iOS only)
1080
1147
  * @returns Promise<boolean>