react-native-iap 15.4.0-rc.2 → 15.4.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.
Files changed (165) hide show
  1. package/README.md +23 -25
  2. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +250 -168
  3. package/android/src/main/java/com/margelo/nitro/iap/ProductSerialization.kt +98 -0
  4. package/ios/HybridRnIap.swift +19 -1
  5. package/ios/RnIapHelper.swift +30 -2
  6. package/lib/module/hooks/useIAP.js +19 -3
  7. package/lib/module/hooks/useIAP.js.map +1 -1
  8. package/lib/module/index.js +104 -18
  9. package/lib/module/index.js.map +1 -1
  10. package/lib/module/index.kepler.js +3 -0
  11. package/lib/module/index.kepler.js.map +1 -1
  12. package/lib/module/types.js +67 -6
  13. package/lib/module/types.js.map +1 -1
  14. package/lib/module/utils/type-bridge.js +22 -3
  15. package/lib/module/utils/type-bridge.js.map +1 -1
  16. package/lib/module/vega-adapter.js +24 -2
  17. package/lib/module/vega-adapter.js.map +1 -1
  18. package/lib/typescript/src/hooks/useIAP.d.ts +25 -2
  19. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  20. package/lib/typescript/src/index.d.ts +50 -10
  21. package/lib/typescript/src/index.d.ts.map +1 -1
  22. package/lib/typescript/src/index.kepler.d.ts +3 -0
  23. package/lib/typescript/src/index.kepler.d.ts.map +1 -1
  24. package/lib/typescript/src/specs/RnIap.nitro.d.ts +79 -9
  25. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  26. package/lib/typescript/src/types.d.ts +223 -35
  27. package/lib/typescript/src/types.d.ts.map +1 -1
  28. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
  29. package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
  30. package/nitrogen/generated/android/NitroIap+autolinking.cmake +3 -0
  31. package/nitrogen/generated/android/c++/JBillingChoiceImageLayoutAndroid.hpp +61 -0
  32. package/nitrogen/generated/android/c++/JBillingChoiceScreenTypeAndroid.hpp +61 -0
  33. package/nitrogen/generated/android/c++/JBillingProgramAndroid.hpp +3 -0
  34. package/nitrogen/generated/android/c++/JDeveloperBillingLaunchModeAndroid.hpp +61 -0
  35. package/nitrogen/generated/android/c++/JDeveloperBillingOptionParamsAndroid.hpp +78 -0
  36. package/nitrogen/generated/android/c++/JDeveloperBillingTypeAndroid.hpp +61 -0
  37. package/nitrogen/generated/android/c++/JDeveloperProvidedBillingDetailsAndroid.hpp +45 -5
  38. package/nitrogen/generated/android/c++/JDeveloperProvidedBillingProductAndroid.hpp +72 -0
  39. package/nitrogen/generated/android/c++/JFunc_void_DeveloperProvidedBillingDetailsAndroid.hpp +10 -0
  40. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +118 -3
  41. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +4 -1
  42. package/nitrogen/generated/android/c++/JInAppMessageCategoryAndroid.hpp +58 -0
  43. package/nitrogen/generated/android/c++/JInAppMessageResponseCodeAndroid.hpp +58 -0
  44. package/nitrogen/generated/android/c++/JInitConnectionConfig.hpp +7 -1
  45. package/nitrogen/generated/android/c++/JNitroBillingChoiceInfoAndroid.hpp +66 -0
  46. package/nitrogen/generated/android/c++/JNitroBillingProgramAvailabilityResultAndroid.hpp +18 -3
  47. package/nitrogen/generated/android/c++/JNitroBillingProgramInformationDialogParamsAndroid.hpp +63 -0
  48. package/nitrogen/generated/android/c++/JNitroBillingResultAndroid.hpp +72 -0
  49. package/nitrogen/generated/android/c++/JNitroGetBillingChoiceInfoParamsAndroid.hpp +74 -0
  50. package/nitrogen/generated/android/c++/JNitroInAppMessageParamsAndroid.hpp +64 -0
  51. package/nitrogen/generated/android/c++/JNitroInAppMessageResultAndroid.hpp +68 -0
  52. package/nitrogen/generated/android/c++/JNitroLaunchExternalLinkParamsAndroid.hpp +10 -1
  53. package/nitrogen/generated/android/c++/JNitroOneTimePurchaseOfferDetail.hpp +5 -1
  54. package/nitrogen/generated/android/c++/JNitroProduct.hpp +13 -1
  55. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +7 -0
  56. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +16 -1
  57. package/nitrogen/generated/android/c++/JProductType.hpp +58 -0
  58. package/nitrogen/generated/android/c++/JSubResponseCodeAndroid.hpp +61 -0
  59. package/nitrogen/generated/android/c++/JVariant_NullType_Array_InAppMessageCategoryAndroid_.cpp +35 -0
  60. package/nitrogen/generated/android/c++/JVariant_NullType_Array_InAppMessageCategoryAndroid_.hpp +81 -0
  61. package/nitrogen/generated/android/c++/JVariant_NullType_DeveloperBillingOptionParamsAndroid.cpp +26 -0
  62. package/nitrogen/generated/android/c++/JVariant_NullType_DeveloperBillingOptionParamsAndroid.hpp +78 -0
  63. package/nitrogen/generated/android/c++/JVariant_NullType_InitConnectionConfig.hpp +2 -0
  64. package/nitrogen/generated/android/c++/JVariant_NullType_NitroInAppMessageParamsAndroid.cpp +26 -0
  65. package/nitrogen/generated/android/c++/JVariant_NullType_NitroInAppMessageParamsAndroid.hpp +76 -0
  66. package/nitrogen/generated/android/c++/JVariant_NullType_NitroRequestPurchaseAndroid.hpp +7 -0
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingChoiceImageLayoutAndroid.kt +24 -0
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingChoiceScreenTypeAndroid.kt +24 -0
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/BillingProgramAndroid.kt +2 -1
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingLaunchModeAndroid.kt +24 -0
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingOptionParamsAndroid.kt +47 -0
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperBillingTypeAndroid.kt +24 -0
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperProvidedBillingDetailsAndroid.kt +13 -4
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/DeveloperProvidedBillingProductAndroid.kt +44 -0
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +13 -1
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InAppMessageCategoryAndroid.kt +23 -0
  77. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InAppMessageResponseCodeAndroid.kt +23 -0
  78. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/InitConnectionConfig.kt +5 -2
  79. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingChoiceInfoAndroid.kt +41 -0
  80. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingProgramAvailabilityResultAndroid.kt +10 -4
  81. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingProgramInformationDialogParamsAndroid.kt +41 -0
  82. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroBillingResultAndroid.kt +44 -0
  83. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroGetBillingChoiceInfoParamsAndroid.kt +44 -0
  84. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroInAppMessageParamsAndroid.kt +38 -0
  85. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroInAppMessageResultAndroid.kt +41 -0
  86. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroLaunchExternalLinkParamsAndroid.kt +6 -3
  87. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroOneTimePurchaseOfferDetail.kt +5 -2
  88. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -2
  89. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +8 -2
  90. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/ProductType.kt +23 -0
  91. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/SubResponseCodeAndroid.kt +24 -0
  92. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_Array_InAppMessageCategoryAndroid_.kt +53 -0
  93. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_DeveloperBillingOptionParamsAndroid.kt +53 -0
  94. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NullType_NitroInAppMessageParamsAndroid.kt +53 -0
  95. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +24 -0
  96. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +382 -0
  97. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +48 -0
  98. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +74 -2
  99. package/nitrogen/generated/ios/swift/BillingChoiceImageLayoutAndroid.swift +44 -0
  100. package/nitrogen/generated/ios/swift/BillingChoiceScreenTypeAndroid.swift +44 -0
  101. package/nitrogen/generated/ios/swift/BillingProgramAndroid.swift +4 -0
  102. package/nitrogen/generated/ios/swift/DeveloperBillingLaunchModeAndroid.swift +44 -0
  103. package/nitrogen/generated/ios/swift/DeveloperBillingOptionParamsAndroid.swift +114 -0
  104. package/nitrogen/generated/ios/swift/DeveloperBillingTypeAndroid.swift +44 -0
  105. package/nitrogen/generated/ios/swift/DeveloperProvidedBillingDetailsAndroid.swift +121 -4
  106. package/nitrogen/generated/ios/swift/DeveloperProvidedBillingProductAndroid.swift +71 -0
  107. package/nitrogen/generated/ios/swift/Func_void_NitroBillingChoiceInfoAndroid.swift +46 -0
  108. package/nitrogen/generated/ios/swift/Func_void_NitroBillingResultAndroid.swift +46 -0
  109. package/nitrogen/generated/ios/swift/Func_void_NitroInAppMessageResultAndroid.swift +46 -0
  110. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +4 -1
  111. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +78 -2
  112. package/nitrogen/generated/ios/swift/InAppMessageCategoryAndroid.swift +40 -0
  113. package/nitrogen/generated/ios/swift/InAppMessageResponseCodeAndroid.swift +40 -0
  114. package/nitrogen/generated/ios/swift/InitConnectionConfig.swift +12 -1
  115. package/nitrogen/generated/ios/swift/NitroBillingChoiceInfoAndroid.swift +66 -0
  116. package/nitrogen/generated/ios/swift/NitroBillingProgramAvailabilityResultAndroid.swift +50 -2
  117. package/nitrogen/generated/ios/swift/NitroBillingProgramInformationDialogParamsAndroid.swift +34 -0
  118. package/nitrogen/generated/ios/swift/NitroBillingResultAndroid.swift +77 -0
  119. package/nitrogen/generated/ios/swift/NitroGetBillingChoiceInfoParamsAndroid.swift +71 -0
  120. package/nitrogen/generated/ios/swift/NitroInAppMessageParamsAndroid.swift +67 -0
  121. package/nitrogen/generated/ios/swift/NitroInAppMessageResultAndroid.swift +66 -0
  122. package/nitrogen/generated/ios/swift/NitroLaunchExternalLinkParamsAndroid.swift +39 -2
  123. package/nitrogen/generated/ios/swift/NitroOneTimePurchaseOfferDetail.swift +39 -2
  124. package/nitrogen/generated/ios/swift/NitroProduct.swift +113 -2
  125. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +75 -1
  126. package/nitrogen/generated/ios/swift/ProductType.swift +40 -0
  127. package/nitrogen/generated/ios/swift/SubResponseCodeAndroid.swift +44 -0
  128. package/nitrogen/generated/ios/swift/Variant_NullType_DeveloperBillingOptionParamsAndroid.swift +18 -0
  129. package/nitrogen/generated/ios/swift/Variant_NullType_NitroInAppMessageParamsAndroid.swift +18 -0
  130. package/nitrogen/generated/ios/swift/Variant_NullType__InAppMessageCategoryAndroid_.swift +18 -0
  131. package/nitrogen/generated/shared/c++/BillingChoiceImageLayoutAndroid.hpp +80 -0
  132. package/nitrogen/generated/shared/c++/BillingChoiceScreenTypeAndroid.hpp +80 -0
  133. package/nitrogen/generated/shared/c++/BillingProgramAndroid.hpp +4 -0
  134. package/nitrogen/generated/shared/c++/DeveloperBillingLaunchModeAndroid.hpp +80 -0
  135. package/nitrogen/generated/shared/c++/DeveloperBillingOptionParamsAndroid.hpp +103 -0
  136. package/nitrogen/generated/shared/c++/DeveloperBillingTypeAndroid.hpp +80 -0
  137. package/nitrogen/generated/shared/c++/DeveloperProvidedBillingDetailsAndroid.hpp +24 -6
  138. package/nitrogen/generated/shared/c++/DeveloperProvidedBillingProductAndroid.hpp +96 -0
  139. package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +3 -0
  140. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +25 -1
  141. package/nitrogen/generated/shared/c++/InAppMessageCategoryAndroid.hpp +76 -0
  142. package/nitrogen/generated/shared/c++/InAppMessageResponseCodeAndroid.hpp +76 -0
  143. package/nitrogen/generated/shared/c++/InitConnectionConfig.hpp +8 -1
  144. package/nitrogen/generated/shared/c++/NitroBillingChoiceInfoAndroid.hpp +90 -0
  145. package/nitrogen/generated/shared/c++/NitroBillingProgramAvailabilityResultAndroid.hpp +16 -2
  146. package/nitrogen/generated/shared/c++/NitroBillingProgramInformationDialogParamsAndroid.hpp +89 -0
  147. package/nitrogen/generated/shared/c++/NitroBillingResultAndroid.hpp +96 -0
  148. package/nitrogen/generated/shared/c++/NitroGetBillingChoiceInfoParamsAndroid.hpp +99 -0
  149. package/nitrogen/generated/shared/c++/NitroInAppMessageParamsAndroid.hpp +88 -0
  150. package/nitrogen/generated/shared/c++/NitroInAppMessageResultAndroid.hpp +92 -0
  151. package/nitrogen/generated/shared/c++/NitroLaunchExternalLinkParamsAndroid.hpp +9 -2
  152. package/nitrogen/generated/shared/c++/NitroOneTimePurchaseOfferDetail.hpp +5 -1
  153. package/nitrogen/generated/shared/c++/NitroProduct.hpp +13 -1
  154. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +12 -1
  155. package/nitrogen/generated/shared/c++/ProductType.hpp +76 -0
  156. package/nitrogen/generated/shared/c++/SubResponseCodeAndroid.hpp +80 -0
  157. package/openiap-versions.json +3 -3
  158. package/package.json +1 -1
  159. package/src/hooks/useIAP.ts +63 -0
  160. package/src/index.kepler.ts +9 -0
  161. package/src/index.ts +223 -95
  162. package/src/specs/RnIap.nitro.ts +116 -8
  163. package/src/types.ts +238 -35
  164. package/src/utils/type-bridge.ts +26 -2
  165. package/src/vega-adapter.ts +46 -11
@@ -0,0 +1,98 @@
1
+ package com.margelo.nitro.iap
2
+
3
+ import dev.hyo.openiap.DiscountOffer
4
+ import dev.hyo.openiap.ProductAndroidOneTimePurchaseOfferDetail
5
+ import dev.hyo.openiap.ProductCommon
6
+ import dev.hyo.openiap.ProductSubscriptionAndroidOfferDetails
7
+ import dev.hyo.openiap.SubscriptionOffer
8
+
9
+ internal fun legacySubscriptionOfferMaps(
10
+ offers: List<ProductSubscriptionAndroidOfferDetails>,
11
+ ): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
12
+
13
+ internal fun subscriptionOfferMaps(
14
+ offers: List<SubscriptionOffer>,
15
+ ): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
16
+
17
+ internal fun discountOfferMaps(
18
+ offers: List<DiscountOffer>,
19
+ ): List<Map<String, Any?>> = offers.map { it.toJson().withoutTypeNames() }
20
+
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
+ internal fun ProductCommon.nitroDebugDescription(): Variant_NullType_String? =
85
+ debugDescription?.let { Variant_NullType_String.Second(it) }
86
+
87
+ private fun Map<String, Any?>.withoutTypeNames(): Map<String, Any?> =
88
+ entries
89
+ .filter { it.key != "__typename" }
90
+ .associate { (key, value) -> key to value.withoutTypeNames() }
91
+
92
+ private fun Any?.withoutTypeNames(): Any? = when (this) {
93
+ is Map<*, *> -> entries
94
+ .filter { it.key != "__typename" }
95
+ .associate { (key, value) -> key.toString() to value.withoutTypeNames() }
96
+ is List<*> -> map { it.withoutTypeNames() }
97
+ else -> this
98
+ }
@@ -1385,12 +1385,30 @@ class HybridRnIap: HybridRnIapSpec {
1385
1385
  }
1386
1386
  }
1387
1387
 
1388
- func createBillingProgramReportingDetailsAndroid(program: BillingProgramAndroid) throws -> Promise<NitroBillingProgramReportingDetailsAndroid> {
1388
+ func getBillingChoiceInfoAndroid(params: NitroGetBillingChoiceInfoParamsAndroid) throws -> Promise<NitroBillingChoiceInfoAndroid> {
1389
+ return Promise.async {
1390
+ throw OpenIapException.make(code: .featureNotSupported, message: "Billing Choice API is Android-only")
1391
+ }
1392
+ }
1393
+
1394
+ func createBillingProgramReportingDetailsAndroid(program: BillingProgramAndroid, developerBillingType: DeveloperBillingTypeAndroid?) throws -> Promise<NitroBillingProgramReportingDetailsAndroid> {
1389
1395
  return Promise.async {
1390
1396
  throw OpenIapException.make(code: .featureNotSupported, message: "Billing Programs API is Android-only")
1391
1397
  }
1392
1398
  }
1393
1399
 
1400
+ func showBillingProgramInformationDialogAndroid(params: NitroBillingProgramInformationDialogParamsAndroid) throws -> Promise<NitroBillingResultAndroid> {
1401
+ return Promise.async {
1402
+ throw OpenIapException.make(code: .featureNotSupported, message: "Billing Choice API is Android-only")
1403
+ }
1404
+ }
1405
+
1406
+ func showInAppMessagesAndroid(params: Variant_NullType_NitroInAppMessageParamsAndroid?) throws -> Promise<NitroInAppMessageResultAndroid> {
1407
+ return Promise.async {
1408
+ throw OpenIapException.make(code: .featureNotSupported, message: "In-app messages are Android-only")
1409
+ }
1410
+ }
1411
+
1394
1412
  func launchExternalLinkAndroid(params: NitroLaunchExternalLinkParamsAndroid) throws -> Promise<Bool> {
1395
1413
  return Promise.async {
1396
1414
  throw OpenIapException.make(code: .featureNotSupported, message: "Billing Programs API is Android-only")
@@ -99,12 +99,14 @@ enum RnIapHelper {
99
99
  // MARK: - JSON serialization helpers
100
100
 
101
101
  static func serializeToJSON(_ array: [[String: Any]]) -> String? {
102
- guard let jsonData = try? JSONSerialization.data(withJSONObject: array, options: []) else { return nil }
102
+ guard JSONSerialization.isValidJSONObject(array),
103
+ let jsonData = try? JSONSerialization.data(withJSONObject: array, options: []) else { return nil }
103
104
  return String(data: jsonData, encoding: .utf8)
104
105
  }
105
106
 
106
107
  static func serializeToJSON(_ dict: [String: Any]) -> String? {
107
- guard let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: []) else { return nil }
108
+ guard JSONSerialization.isValidJSONObject(dict),
109
+ let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: []) else { return nil }
108
110
  return String(data: jsonData, encoding: .utf8)
109
111
  }
110
112
 
@@ -145,6 +147,26 @@ enum RnIapHelper {
145
147
  }
146
148
  }
147
149
 
150
+ var pricingTermsIOS: Variant_NullType_String? = nil
151
+ if let pricingTermsArray = dictionary["pricingTermsIOS"] as? [[String: Any]], !pricingTermsArray.isEmpty {
152
+ if let json = serializeToJSON(pricingTermsArray) {
153
+ pricingTermsIOS = .second(json)
154
+ } else {
155
+ NSLog("⚠️ [RnIapHelper] Failed to serialize pricingTermsIOS")
156
+ }
157
+ }
158
+
159
+ var subscriptionInfoIOS: Variant_NullType_String? = nil
160
+ let subscriptionInfoDict = dictionary["subscriptionInfoIOS"] as? [String: Any]
161
+ ?? dictionary["subscription"] as? [String: Any]
162
+ if let subscriptionInfo = subscriptionInfoDict, !subscriptionInfo.isEmpty {
163
+ if let json = serializeToJSON(subscriptionInfo) {
164
+ subscriptionInfoIOS = .second(json)
165
+ } else {
166
+ NSLog("⚠️ [RnIapHelper] Failed to serialize subscriptionInfoIOS")
167
+ }
168
+ }
169
+
148
170
  // Handle subscriptionOffers - standardized cross-platform offers (OpenIAP 1.3.10+)
149
171
  var subscriptionOffers: Variant_NullType_String? = nil
150
172
  if let offersArray = dictionary["subscriptionOffers"] as? [[String: Any]], !offersArray.isEmpty {
@@ -169,6 +191,7 @@ enum RnIapHelper {
169
191
  id: dictionary["id"] as? String ?? "",
170
192
  title: dictionary["title"] as? String ?? "",
171
193
  description: dictionary["description"] as? String ?? "",
194
+ debugDescription: wrapString(dictionary["debugDescription"] as? String),
172
195
  type: dictionary["type"] as? String ?? "",
173
196
  displayName: displayName,
174
197
  displayPrice: dictionary["displayPrice"] as? String,
@@ -178,6 +201,8 @@ enum RnIapHelper {
178
201
  typeIOS: wrapString(dictionary["typeIOS"] as? String),
179
202
  isFamilyShareableIOS: wrapBool(boolValue(dictionary["isFamilyShareableIOS"])),
180
203
  jsonRepresentationIOS: wrapString(dictionary["jsonRepresentationIOS"] as? String),
204
+ pricingTermsIOS: pricingTermsIOS,
205
+ subscriptionInfoIOS: subscriptionInfoIOS,
181
206
  discountsIOS: discountsIOS,
182
207
  introductoryPriceIOS: wrapString(dictionary["introductoryPriceIOS"] as? String),
183
208
  introductoryPriceAsAmountIOS: wrapDouble(doubleValue(dictionary["introductoryPriceAsAmountIOS"])),
@@ -417,6 +442,7 @@ enum RnIapHelper {
417
442
  id: id,
418
443
  title: id,
419
444
  description: "",
445
+ debugDescription: nil,
420
446
  type: "inapp",
421
447
  displayName: nil,
422
448
  displayPrice: nil,
@@ -426,6 +452,8 @@ enum RnIapHelper {
426
452
  typeIOS: nil,
427
453
  isFamilyShareableIOS: nil,
428
454
  jsonRepresentationIOS: nil,
455
+ pricingTermsIOS: nil,
456
+ subscriptionInfoIOS: nil,
429
457
  discountsIOS: nil,
430
458
  introductoryPriceIOS: nil,
431
459
  introductoryPriceAsAmountIOS: nil,
@@ -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, verifyPurchase as verifyPurchaseTopLevel, verifyPurchaseWithProvider as verifyPurchaseWithProviderTopLevel, getActiveSubscriptions, hasActiveSubscriptions, syncIOS, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, userChoiceBillingListenerAndroid, subscriptionBillingIssueListener, isStandardIOS } 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, syncIOS, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, getBillingChoiceInfoAndroid, isBillingProgramAvailableAndroid, createBillingProgramReportingDetailsAndroid, launchExternalLinkAndroid, showBillingProgramInformationDialogAndroid, showInAppMessagesAndroid, userChoiceBillingListenerAndroid, developerProvidedBillingListenerAndroid, subscriptionBillingIssueListener, isStandardIOS } from "../index.js";
10
10
 
11
11
  // Types
12
12
  import { ErrorCode } from "../types.js";
@@ -168,7 +168,10 @@ export function useIAP(options) {
168
168
  if (Platform.OS === 'android') {
169
169
  if (optionsRef.current?.enableBillingProgramAndroid) {
170
170
  config = {
171
- enableBillingProgramAndroid: optionsRef.current.enableBillingProgramAndroid
171
+ enableBillingProgramAndroid: optionsRef.current.enableBillingProgramAndroid,
172
+ ...(optionsRef.current.billingChoiceScreenTypeAndroid ? {
173
+ billingChoiceScreenTypeAndroid: optionsRef.current.billingChoiceScreenTypeAndroid
174
+ } : {})
172
175
  };
173
176
  } else if (optionsRef.current?.alternativeBillingModeAndroid) {
174
177
  config = {
@@ -219,6 +222,11 @@ export function useIAP(options) {
219
222
  }
220
223
  });
221
224
  }
225
+ if (Platform.OS === 'android' && optionsRef.current?.onDeveloperProvidedBillingAndroid && !subscriptionsRef.current.developerProvidedBillingAndroid) {
226
+ subscriptionsRef.current.developerProvidedBillingAndroid = developerProvidedBillingListenerAndroid(details => {
227
+ optionsRef.current?.onDeveloperProvidedBillingAndroid?.(details);
228
+ });
229
+ }
222
230
 
223
231
  // Always attach so callers that supply `onSubscriptionBillingIssue` later
224
232
  // (after the hook has already set up listeners) still receive events.
@@ -235,11 +243,13 @@ export function useIAP(options) {
235
243
  subscriptionsRef.current.purchaseError?.remove();
236
244
  subscriptionsRef.current.promotedProductIOS?.remove();
237
245
  subscriptionsRef.current.userChoiceBillingAndroid?.remove();
246
+ subscriptionsRef.current.developerProvidedBillingAndroid?.remove();
238
247
  subscriptionsRef.current.subscriptionBillingIssue?.remove();
239
248
  subscriptionsRef.current.purchaseUpdate = undefined;
240
249
  subscriptionsRef.current.purchaseError = undefined;
241
250
  subscriptionsRef.current.promotedProductIOS = undefined;
242
251
  subscriptionsRef.current.userChoiceBillingAndroid = undefined;
252
+ subscriptionsRef.current.developerProvidedBillingAndroid = undefined;
243
253
  subscriptionsRef.current.subscriptionBillingIssue = undefined;
244
254
  }, []);
245
255
  const initIapWithSubscriptions = useCallback(async () => {
@@ -323,7 +333,13 @@ export function useIAP(options) {
323
333
  ...(Platform.OS === 'android' ? {
324
334
  checkAlternativeBillingAvailabilityAndroid,
325
335
  showAlternativeBillingDialogAndroid,
326
- createAlternativeBillingTokenAndroid
336
+ createAlternativeBillingTokenAndroid,
337
+ getBillingChoiceInfoAndroid,
338
+ isBillingProgramAvailableAndroid,
339
+ createBillingProgramReportingDetailsAndroid,
340
+ launchExternalLinkAndroid,
341
+ showBillingProgramInformationDialogAndroid,
342
+ showInAppMessagesAndroid
327
343
  } : {})
328
344
  };
329
345
  }
@@ -1 +1 @@
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","syncIOS","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","userChoiceBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","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","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","buildAndroidConfig","config","enableBillingProgramAndroid","alternativeBillingModeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","code","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"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","syncIOS","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","getBillingChoiceInfoAndroid","isBillingProgramAvailableAndroid","createBillingProgramReportingDetailsAndroid","launchExternalLinkAndroid","showBillingProgramInformationDialogAndroid","showInAppMessagesAndroid","userChoiceBillingListenerAndroid","developerProvidedBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","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","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","buildAndroidConfig","config","enableBillingProgramAndroid","billingChoiceScreenTypeAndroid","alternativeBillingModeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","code","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","onDeveloperProvidedBillingAndroid","developerProvidedBillingAndroid","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":";;AAAA;AACA,SAAQA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAO,OAAO;AAC9D,SAAQC,QAAQ,QAAO,cAAc;AACrC,SAAQC,YAAY,QAAO,mBAAgB;;AAE3C;AACA,SACEC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,qBAAqB,EACrBC,iBAAiB,IAAIC,yBAAyB,EAC9CC,eAAe,IAAIC,uBAAuB,EAC1CC,aAAa,EACbC,eAAe,IAAIC,uBAAuB,EAC1CC,cAAc,IAAIC,sBAAsB,EACxCC,0BAA0B,IAAIC,kCAAkC,EAChEC,sBAAsB,EACtBC,sBAAsB,EACtBC,OAAO,EACPC,qBAAqB,EACrBC,mCAAmC,EACnCC,0CAA0C,EAC1CC,mCAAmC,EACnCC,oCAAoC,EACpCC,2BAA2B,EAC3BC,gCAAgC,EAChCC,2CAA2C,EAC3CC,yBAAyB,EACzBC,0CAA0C,EAC1CC,wBAAwB,EACxBC,gCAAgC,EAChCC,uCAAuC,EACvCC,gCAAgC,EAChCC,aAAa,QACR,aAAK;;AAEZ;AACA,SAAQC,SAAS,QAAO,aAAU;;AA2BlC;;AAqRA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,OAAuB,EAAU;EACtD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG1C,QAAQ,CAAU,KAAK,CAAC;EAC1D,MAAM,CAAC2C,QAAQ,EAAEC,WAAW,CAAC,GAAG5C,QAAQ,CAAY,EAAE,CAAC;EACvD,MAAM,CAAC6C,aAAa,EAAEC,gBAAgB,CAAC,GAAG9C,QAAQ,CAAwB,EAAE,CAAC;EAC7E,MAAM,CAAC+C,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGhD,QAAQ,CAAa,EAAE,CAAC;EAC5E,MAAM,CAACiD,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGlD,QAAQ,CAAU,CAAC;EACvE,MAAM,CAACmD,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGpD,QAAQ,CAE5D,EAAE,CAAC;EAEL,MAAMqD,UAAU,GAAGpD,MAAM,CAA4BuC,OAAO,CAAC;EAC7D,MAAMc,YAAY,GAAGrD,MAAM,CAAU,KAAK,CAAC;;EAE3C;EACA,MAAMsD,uBAAuB,GAAGzD,WAAW,CACzC,CACE0D,aAAkB,EAClBC,QAAa,EACbC,MAA2B,KACnB;IACR,MAAMC,MAAM,GAAG,CAAC,GAAGH,aAAa,CAAC;IACjCC,QAAQ,CAACG,OAAO,CAAEC,OAAO,IAAK;MAC5B,MAAMC,WAAW,GAAGH,MAAM,CAACI,IAAI,CAC5BC,YAAY,IAAKN,MAAM,CAACM,YAAY,CAAC,KAAKN,MAAM,CAACG,OAAO,CAC3D,CAAC;MACD,IAAI,CAACC,WAAW,EAAE;QAChBH,MAAM,CAACM,IAAI,CAACJ,OAAO,CAAC;MACtB;IACF,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,EACD,EACF,CAAC;EAED5D,SAAS,CAAC,MAAM;IACdsD,UAAU,CAACa,OAAO,GAAG1B,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbzC,SAAS,CAAC,MAAM;IACduD,YAAY,CAACY,OAAO,GAAGzB,SAAS;EAClC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAM0B,gBAAgB,GAAGlE,MAAM,CAO5B,CAAC,CAAC,CAAC;;EAEN;EACA,MAAMmE,YAAY,GAAGnE,MAAM,CAAU,IAAI,CAAC;EAE1C,MAAMoE,qBAAqB,GAAGpE,MAAM,CAAwB,EAAE,CAAC;EAE/DF,SAAS,CAAC,MAAM;IACdsE,qBAAqB,CAACH,OAAO,GAAGrB,aAAa;EAC/C,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;;EAEnB;EACA,MAAMyB,aAAa,GAAGxE,WAAW,CAAEyE,KAAc,IAAK;IACpD,IAAIlB,UAAU,CAACa,OAAO,EAAEM,OAAO,EAAE;MAC/BnB,UAAU,CAACa,OAAO,CAACM,OAAO,CACxBD,KAAK,YAAYE,KAAK,GAAGF,KAAK,GAAG,IAAIE,KAAK,CAACC,MAAM,CAACH,KAAK,CAAC,CAC1D,CAAC;IACH;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,qBAAqB,GAAG7E,WAAW,CACvC,MAAO8E,MAGN,IAAoB;IACnB,IAAI,CAACtB,YAAY,CAACY,OAAO,EAAE;MACzB/D,YAAY,CAAC0E,IAAI,CACf,2DACF,CAAC;MACD;IACF;IACA,IAAI;MACF,MAAMC,WAAW,GAAGF,MAAM,CAACG,IAAI,IAAI,QAAQ;MAC3C5E,YAAY,CAAC6E,KAAK,CAAC,sCAAsC,EAAE;QACzDC,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBF,IAAI,EAAED;MACR,CAAC,CAAC;MACF,MAAMI,MAAM,GAAG,MAAMrE,aAAa,CAAC;QACjCoE,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBF,IAAI,EAAED;MACR,CAAC,CAAC;MACF3E,YAAY,CAAC6E,KAAK,CAAC,gCAAgC,EAAEE,MAAM,CAAC;MAC5D,MAAMC,KAAK,GAAID,MAAM,IAAI,EAAwC;;MAEjE;MACA,IAAIJ,WAAW,KAAK,MAAM,EAAE;QAC1B;QACAhC,gBAAgB,CAAEsC,iBAAwC,IACxD7B,uBAAuB,CACrB6B,iBAAiB,EACjBD,KAAK,EACJE,YAAiC,IAAKA,YAAY,CAACC,EACtD,CACF,CAAC;QACD;MACF;MAEA,IAAIR,WAAW,KAAK,KAAK,EAAE;QACzB;QACA,MAAMS,WAAW,GAAGJ,KAAK,CAACK,MAAM,CAC7BC,IAAI,IAAsBA,IAAI,CAACV,IAAI,KAAK,QAC3C,CAAC;QACD,MAAMW,gBAAgB,GAAGP,KAAK,CAACK,MAAM,CAClCC,IAAI,IAAkCA,IAAI,CAACV,IAAI,KAAK,MACvD,CAAC;QAEDnC,WAAW,CAAE+C,YAAuB,IAClCpC,uBAAuB,CACrBoC,YAAY,EACZJ,WAAW,EACVK,OAAgB,IAAKA,OAAO,CAACN,EAChC,CACF,CAAC;QACDxC,gBAAgB,CAAEsC,iBAAwC,IACxD7B,uBAAuB,CACrB6B,iBAAiB,EACjBM,gBAAgB,EACfL,YAAiC,IAAKA,YAAY,CAACC,EACtD,CACF,CAAC;QACD;MACF;;MAEA;MACA1C,WAAW,CAAE+C,YAAuB,IAClCpC,uBAAuB,CACrBoC,YAAY,EACZR,KAAK,EACJS,OAAgB,IAAKA,OAAO,CAACN,EAChC,CACF,CAAC;IACH,CAAC,CAAC,OAAOf,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;MACrDD,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAAChB,uBAAuB,EAAEe,aAAa,CACzC,CAAC;EAED,MAAMuB,6BAA6B,GAAG/F,WAAW,CAC/C,MAAO0C,OAAyB,IAAoB;IAClD,IAAI;MACF,MAAM0C,MAAM,GAAG,MAAM1E,qBAAqB,CAAC;QACzCsF,6BAA6B,EAC3BtD,OAAO,EAAEsD,6BAA6B,IAAI,KAAK;QACjDC,yBAAyB,EAAEvD,OAAO,EAAEuD,yBAAyB,IAAI,IAAI;QACrEC,uBAAuB,EAAExD,OAAO,EAAEwD,uBAAuB,IAAI;MAC/D,CAAC,CAAC;MACFhD,qBAAqB,CAACkC,MAAM,CAAC;IAC/B,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;MAChED,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM2B,8BAA8B,GAAGnG,WAAW,CAChD,MAAOoG,eAA0B,IAAoC;IACnE,IAAI;MACF,MAAMhB,MAAM,GAAG,MAAM9D,sBAAsB,CAAC8E,eAAe,CAAC;MAC5D9C,sBAAsB,CAAC8B,MAAM,CAAC;MAC9B,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;MAChED,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,EAAE;IACX;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM6B,8BAA8B,GAAGrG,WAAW,CAChD,MAAOoG,eAA0B,IAAuB;IACtD,IAAI;MACF,OAAO,MAAM7E,sBAAsB,CAAC6E,eAAe,CAAC;IACtD,CAAC,CAAC,OAAO3B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,sCAAsC,EAAEA,KAAK,CAAC;MACjED,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,KAAK;IACd;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM7D,iBAAiB,GAAGX,WAAW,CACnC,MAAOsG,IAAmC,IAAoB;IAC5D;IACA;IACA;IACA;IACA;IACA,MAAM1F,yBAAyB,CAAC0F,IAAI,CAAC;EACvC,CAAC,EACD,EACF,CAAC;EAED,MAAMzF,eAAe,GAAGb,WAAW,CACjC,MAAOuG,UAAgC,IAAoB;IACzD,MAAMzF,uBAAuB,CAACyF,UAAU,CAAC;EAC3C,CAAC,EACD,EACF,CAAC;EAED,MAAMC,gBAAgB,GAAGxG,WAAW,CAClC,MAAO0C,OAAyB,IAAoB;IAClD,IAAI;MACF,IAAItC,QAAQ,CAACqG,EAAE,KAAK,KAAK,EAAE;QACzB,MAAMjF,OAAO,CAAC,CAAC;MACjB;MAEA,MAAMuE,6BAA6B,CAACrD,OAAO,CAAC;IAC9C,CAAC,CAAC,OAAO+B,KAAK,EAAE;MACdpE,YAAY,CAAC0E,IAAI,CAAC,8BAA8B,EAAEN,KAAK,CAAC;MACxDD,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAACsB,6BAA6B,EAAEvB,aAAa,CAC/C,CAAC;EAED,MAAMxD,eAAe,GAAGhB,WAAW,CACjC,MAAO0C,OAA4B,IACjCzB,uBAAuB,CAACyB,OAAO,CAAC,EAClC,EACF,CAAC;EAED,MAAMxB,cAAc,GAAGlB,WAAW,CAChC,MAAO0C,OAA4B,IAAoC;IACrE,OAAOvB,sBAAsB,CAACuB,OAAO,CAAC;EACxC,CAAC,EACD,EACF,CAAC;EAED,MAAMtB,0BAA0B,GAAGpB,WAAW,CAC5C,MACE0C,OAAwC,IACM;IAC9C,OAAOrB,kCAAkC,CAACqB,OAAO,CAAC;EACpD,CAAC,EACD,EACF,CAAC;;EAED;EACA,MAAMgE,kBAAkB,GAAG1G,WAAW,CAAC,MAAM;IAC3C,IAAI2G,MAMS;IAEb,IAAIvG,QAAQ,CAACqG,EAAE,KAAK,SAAS,EAAE;MAC7B,IAAIlD,UAAU,CAACa,OAAO,EAAEwC,2BAA2B,EAAE;QACnDD,MAAM,GAAG;UACPC,2BAA2B,EACzBrD,UAAU,CAACa,OAAO,CAACwC,2BAA2B;UAChD,IAAIrD,UAAU,CAACa,OAAO,CAACyC,8BAA8B,GACjD;YACEA,8BAA8B,EAC5BtD,UAAU,CAACa,OAAO,CAACyC;UACvB,CAAC,GACD,CAAC,CAAC;QACR,CAAC;MACH,CAAC,MAAM,IAAItD,UAAU,CAACa,OAAO,EAAE0C,6BAA6B,EAAE;QAC5DH,MAAM,GAAG;UACPG,6BAA6B,EAC3BvD,UAAU,CAACa,OAAO,CAAC0C;QACvB,CAAC;MACH;IACF;IAEA,OAAOH,MAAM;EACf,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMI,iBAAiB,GAAG/G,WAAW,CAAC,MAAM;IAC1C,IAAI,CAACqE,gBAAgB,CAACD,OAAO,CAAC4C,cAAc,EAAE;MAC5C3C,gBAAgB,CAACD,OAAO,CAAC4C,cAAc,GAAGxG,uBAAuB,CAC/D,MAAOyG,QAAkB,IAAK;QAC5B,IAAI;UACF,MAAMd,8BAA8B,CAAC,CAAC;UACtC,MAAMJ,6BAA6B,CAAC,CAAC;QACvC,CAAC,CAAC,OAAOmB,CAAC,EAAE;UACV7G,YAAY,CAAC0E,IAAI,CAAC,wCAAwC,EAAEmC,CAAC,CAAC;QAChE;QACA,IAAI3D,UAAU,CAACa,OAAO,EAAE+C,iBAAiB,EAAE;UACzC5D,UAAU,CAACa,OAAO,CAAC+C,iBAAiB,CAACF,QAAQ,CAAC;QAChD;MACF,CAAC,EACD1D,UAAU,CAACa,OAAO,EAAEgD,8BACtB,CAAC;IACH;IAEA,IAAI,CAAC/C,gBAAgB,CAACD,OAAO,CAACiD,aAAa,EAAE;MAC3ChD,gBAAgB,CAACD,OAAO,CAACiD,aAAa,GAAG9G,qBAAqB,CAC3DkE,KAAK,IAAK;QACT,IACEA,KAAK,CAAC6C,IAAI,KAAK9E,SAAS,CAAC+E,cAAc,IACvC,CAAC/D,YAAY,CAACY,OAAO,EACrB;UACA;QACF;QACA,IAAIb,UAAU,CAACa,OAAO,EAAEoD,eAAe,EAAE;UACvCjE,UAAU,CAACa,OAAO,CAACoD,eAAe,CAAC/C,KAAK,CAAC;QAC3C;MACF,CACF,CAAC;IACH;IAEA,IAAIlC,aAAa,CAAC,CAAC,IAAI,CAAC8B,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,EAAE;MACnEkB,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,GAAG1C,0BAA0B,CACrEqF,OAAgB,IAAK;QACpB1C,qBAAqB,CAAC0C,OAAO,CAAC;QAC9B,IAAIvC,UAAU,CAACa,OAAO,EAAEqD,oBAAoB,EAAE;UAC5ClE,UAAU,CAACa,OAAO,CAACqD,oBAAoB,CAAC3B,OAAO,CAAC;QAClD;MACF,CACF,CAAC;IACH;IAEA,IACE1F,QAAQ,CAACqG,EAAE,KAAK,SAAS,IACzBlD,UAAU,CAACa,OAAO,EAAEsD,0BAA0B,IAC9C,CAACrD,gBAAgB,CAACD,OAAO,CAACuD,wBAAwB,EAClD;MACAtD,gBAAgB,CAACD,OAAO,CAACuD,wBAAwB,GAC/CvF,gCAAgC,CAAEwF,OAAO,IAAK;QAC5C,IAAIrE,UAAU,CAACa,OAAO,EAAEsD,0BAA0B,EAAE;UAClDnE,UAAU,CAACa,OAAO,CAACsD,0BAA0B,CAACE,OAAO,CAAC;QACxD;MACF,CAAC,CAAC;IACN;IAEA,IACExH,QAAQ,CAACqG,EAAE,KAAK,SAAS,IACzBlD,UAAU,CAACa,OAAO,EAAEyD,iCAAiC,IACrD,CAACxD,gBAAgB,CAACD,OAAO,CAAC0D,+BAA+B,EACzD;MACAzD,gBAAgB,CAACD,OAAO,CAAC0D,+BAA+B,GACtDzF,uCAAuC,CAAEuF,OAAO,IAAK;QACnDrE,UAAU,CAACa,OAAO,EAAEyD,iCAAiC,GAAGD,OAAO,CAAC;MAClE,CAAC,CAAC;IACN;;IAEA;IACA;IACA,IAAI,CAACvD,gBAAgB,CAACD,OAAO,CAAC2D,wBAAwB,EAAE;MACtD1D,gBAAgB,CAACD,OAAO,CAAC2D,wBAAwB,GAC/CzF,gCAAgC,CAAE2E,QAAkB,IAAK;QACvD1D,UAAU,CAACa,OAAO,EAAE4D,0BAA0B,GAAGf,QAAQ,CAAC;MAC5D,CAAC,CAAC;IACN;EACF,CAAC,EAAE,CAACd,8BAA8B,EAAEJ,6BAA6B,CAAC,CAAC;;EAEnE;EACA,MAAMkC,gBAAgB,GAAGjI,WAAW,CAAC,MAAM;IACzCqE,gBAAgB,CAACD,OAAO,CAAC4C,cAAc,EAAEkB,MAAM,CAAC,CAAC;IACjD7D,gBAAgB,CAACD,OAAO,CAACiD,aAAa,EAAEa,MAAM,CAAC,CAAC;IAChD7D,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,EAAE+E,MAAM,CAAC,CAAC;IACrD7D,gBAAgB,CAACD,OAAO,CAACuD,wBAAwB,EAAEO,MAAM,CAAC,CAAC;IAC3D7D,gBAAgB,CAACD,OAAO,CAAC0D,+BAA+B,EAAEI,MAAM,CAAC,CAAC;IAClE7D,gBAAgB,CAACD,OAAO,CAAC2D,wBAAwB,EAAEG,MAAM,CAAC,CAAC;IAC3D7D,gBAAgB,CAACD,OAAO,CAAC4C,cAAc,GAAGmB,SAAS;IACnD9D,gBAAgB,CAACD,OAAO,CAACiD,aAAa,GAAGc,SAAS;IAClD9D,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,GAAGgF,SAAS;IACvD9D,gBAAgB,CAACD,OAAO,CAACuD,wBAAwB,GAAGQ,SAAS;IAC7D9D,gBAAgB,CAACD,OAAO,CAAC0D,+BAA+B,GAAGK,SAAS;IACpE9D,gBAAgB,CAACD,OAAO,CAAC2D,wBAAwB,GAAGI,SAAS;EAC/D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,wBAAwB,GAAGpI,WAAW,CAAC,YAA2B;IACtE,MAAM2G,MAAM,GAAGD,kBAAkB,CAAC,CAAC;IAEnC,IAAI;MACF,MAAMtB,MAAM,GAAG,MAAM9E,cAAc,CAACqG,MAAM,CAAC;MAE3C,IAAI,CAACrC,YAAY,CAACF,OAAO,EAAE;QACzB;MACF;MAEA,IAAI,CAACgB,MAAM,EAAE;QACXxC,YAAY,CAAC,KAAK,CAAC;QACnBvC,YAAY,CAAC0E,IAAI,CAAC,wCAAwC,CAAC;QAC3D;MACF;MAEAgC,iBAAiB,CAAC,CAAC;MACnBnE,YAAY,CAAC,IAAI,CAAC;IACpB,CAAC,CAAC,OAAO6B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;MACnDwD,gBAAgB,CAAC,CAAC;MAClB,IAAI3D,YAAY,CAACF,OAAO,EAAE;QACxBxB,YAAY,CAAC,KAAK,CAAC;MACrB;MACA4B,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAACiC,kBAAkB,EAAEK,iBAAiB,EAAEkB,gBAAgB,EAAEzD,aAAa,CAAC,CAAC;EAE5E,MAAM6D,SAAS,GAAGrI,WAAW,CAAC,YAA8B;IAC1D,MAAM2G,MAAM,GAAGD,kBAAkB,CAAC,CAAC;IAEnC,IAAI;MACF,MAAMtB,MAAM,GAAG,MAAM9E,cAAc,CAACqG,MAAM,CAAC;MAE3C,IAAI,CAACrC,YAAY,CAACF,OAAO,EAAE;QACzB,OAAO,KAAK;MACd;MAEA,IAAIgB,MAAM,EAAE;QACV2B,iBAAiB,CAAC,CAAC;QACnBnE,YAAY,CAAC,IAAI,CAAC;QAClB,OAAO,IAAI;MACb;MAEAA,YAAY,CAAC,KAAK,CAAC;MACnB,OAAO,KAAK;IACd,CAAC,CAAC,OAAO6B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC;MACvDwD,gBAAgB,CAAC,CAAC;MAClB,IAAI3D,YAAY,CAACF,OAAO,EAAE;QACxBxB,YAAY,CAAC,KAAK,CAAC;MACrB;MACA4B,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,KAAK;IACd;EACF,CAAC,EAAE,CAACiC,kBAAkB,EAAEK,iBAAiB,EAAEkB,gBAAgB,EAAEzD,aAAa,CAAC,CAAC;EAE5EvE,SAAS,CAAC,MAAM;IACdqE,YAAY,CAACF,OAAO,GAAG,IAAI;IAC3BgE,wBAAwB,CAAC,CAAC;IAE1B,OAAO,MAAM;MACX9D,YAAY,CAACF,OAAO,GAAG,KAAK;MAC5B6D,gBAAgB,CAAC,CAAC;MAClB;MACArF,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACwF,wBAAwB,EAAEH,gBAAgB,CAAC,CAAC;EAEhD,OAAO;IACLtF,SAAS;IACTE,QAAQ;IACRE,aAAa;IACbpC,iBAAiB;IACjBsC,kBAAkB;IAClBE,kBAAkB;IAClBE,mBAAmB;IACnB3C,qBAAqB,EAAEqF,6BAA6B;IACpDhF,aAAa,EAAE8D,qBAAqB;IACpChE,eAAe;IACfG,eAAe;IACfE,cAAc;IACdE,0BAA0B;IAC1BoF,gBAAgB;IAChB/E,qBAAqB;IACrBC,mCAAmC;IACnCJ,sBAAsB,EAAE6E,8BAA8B;IACtD5E,sBAAsB,EAAE8E,8BAA8B;IACtDgC,SAAS;IACT;IACA,IAAIjI,QAAQ,CAACqG,EAAE,KAAK,SAAS,GACzB;MACE9E,0CAA0C;MAC1CC,mCAAmC;MACnCC,oCAAoC;MACpCC,2BAA2B;MAC3BC,gCAAgC;MAChCC,2CAA2C;MAC3CC,yBAAyB;MACzBC,0CAA0C;MAC1CC;IACF,CAAC,GACD,CAAC,CAAC;EACR,CAAC;AACH","ignoreList":[]}
@@ -406,12 +406,11 @@ export const userChoiceBillingListenerAndroid = listener => {
406
406
  };
407
407
 
408
408
  /**
409
- * Add a listener for developer provided billing events (Android 8.3.0+ only).
410
- * Fires when a user selects developer billing in the External Payments flow.
409
+ * Add a listener for developer provided billing events (Android 8.3.0+).
410
+ * Fires for External Payments and Billing Choice developer billing flows.
411
411
  *
412
- * External Payments is part of Google Play Billing Library 8.3.0+ and allows
413
- * showing a side-by-side choice between Google Play Billing and developer's
414
- * external payment option directly in the purchase flow. (Japan only)
412
+ * The payload includes selected products and nullable token, link, and original
413
+ * transaction fields. Billing Choice fields require Billing Library 9.1.0+.
415
414
  *
416
415
  * @param listener - Function to call when user chooses developer billing
417
416
  * @returns EventSubscription with remove() method to unsubscribe
@@ -421,14 +420,10 @@ export const userChoiceBillingListenerAndroid = listener => {
421
420
  * @example
422
421
  * ```typescript
423
422
  * const subscription = developerProvidedBillingListenerAndroid((details) => {
424
- * console.log('User chose developer billing');
425
- * console.log('External transaction token received; send it to your backend without logging it.');
426
- *
427
- * // Process payment through your external payment system
428
- * await processExternalPayment();
429
- *
430
- * // Report transaction to Google Play (within 24 hours)
431
- * await reportToGooglePlay(details.externalTransactionToken);
423
+ * await processExternalPayment(details.products, details.linkUri);
424
+ * if (details.externalTransactionToken) {
425
+ * await reportToGooglePlay(details.externalTransactionToken);
426
+ * }
432
427
  * });
433
428
  *
434
429
  * // Later, remove the listener
@@ -1192,6 +1187,10 @@ export const getTransactionJwsIOS = async sku => {
1192
1187
  * ```ts
1193
1188
  * await initConnection();
1194
1189
  * await initConnection({ enableBillingProgramAndroid: 'external-offer' });
1190
+ * await initConnection({
1191
+ * enableBillingProgramAndroid: 'billing-choice',
1192
+ * billingChoiceScreenTypeAndroid: 'developer-rendered',
1193
+ * });
1195
1194
  * ```
1196
1195
  *
1197
1196
  * @remarks When using `useIAP()`, connection is auto-managed on mount/unmount —
@@ -1376,6 +1375,9 @@ export const requestPurchase = async request => {
1376
1375
  if (androidRequest.isOfferPersonalized != null) {
1377
1376
  androidPayload.isOfferPersonalized = androidRequest.isOfferPersonalized;
1378
1377
  }
1378
+ if (androidRequest.developerBillingOption) {
1379
+ androidPayload.developerBillingOption = androidRequest.developerBillingOption;
1380
+ }
1379
1381
 
1380
1382
  // One-time purchase offerToken (Android 7.0+)
1381
1383
  if (!isSubs) {
@@ -1389,6 +1391,9 @@ export const requestPurchase = async request => {
1389
1391
  if (subsRequest.purchaseToken) {
1390
1392
  androidPayload.purchaseToken = subsRequest.purchaseToken;
1391
1393
  }
1394
+ if (subsRequest.originalExternalTransactionId) {
1395
+ androidPayload.originalExternalTransactionId = subsRequest.originalExternalTransactionId;
1396
+ }
1392
1397
  if (subsRequest.replacementMode != null) {
1393
1398
  androidPayload.replacementMode = subsRequest.replacementMode;
1394
1399
  }
@@ -2297,7 +2302,9 @@ export const isBillingProgramAvailableAndroid = async program => {
2297
2302
  const result = await IAP.instance.isBillingProgramAvailableAndroid(program);
2298
2303
  return {
2299
2304
  billingProgram: result.billingProgram,
2300
- isAvailable: result.isAvailable
2305
+ choiceScreenType: result.choiceScreenType,
2306
+ isAvailable: result.isAvailable,
2307
+ isExternalLinkAvailable: result.isExternalLinkAvailable
2301
2308
  };
2302
2309
  } catch (error) {
2303
2310
  RnIapConsole.error('Failed to check billing program availability:', error);
@@ -2305,6 +2312,32 @@ export const isBillingProgramAvailableAndroid = async program => {
2305
2312
  }
2306
2313
  };
2307
2314
 
2315
+ /**
2316
+ * Fetch Play Billing assets and loyalty text for developer-rendered Billing Choice screens (Android only).
2317
+ *
2318
+ * @param params - Billing Choice info request parameters
2319
+ * @returns Promise with Play-hosted image URL and optional loyalty information
2320
+ * @platform Android
2321
+ * @since Google Play Billing Library 9.1.0+
2322
+ *
2323
+ * @see {@link https://openiap.dev/docs/apis/android/get-billing-choice-info-android}
2324
+ */
2325
+ export const getBillingChoiceInfoAndroid = async (params = {}) => {
2326
+ if (Platform.OS !== 'android') {
2327
+ throw new Error('Billing Choice API is only supported on Android');
2328
+ }
2329
+ try {
2330
+ return await IAP.instance.getBillingChoiceInfoAndroid({
2331
+ billingProgram: params.billingProgram ?? 'billing-choice',
2332
+ playBillingChoiceImageLayout: params.playBillingChoiceImageLayout ?? 'rectangular-four-by-one',
2333
+ userLocale: params.userLocale ?? null
2334
+ });
2335
+ } catch (error) {
2336
+ RnIapConsole.error('Failed to get Billing Choice info:', error);
2337
+ throw error;
2338
+ }
2339
+ };
2340
+
2308
2341
  /**
2309
2342
  * Create billing program reporting details for external transactions (Android only).
2310
2343
  * Used to get the external transaction token needed for reporting to Google.
@@ -2326,12 +2359,14 @@ export const isBillingProgramAvailableAndroid = async program => {
2326
2359
  *
2327
2360
  * @see {@link https://openiap.dev/docs/apis/android/create-billing-program-reporting-details-android}
2328
2361
  */
2329
- export const createBillingProgramReportingDetailsAndroid = async program => {
2362
+ export const createBillingProgramReportingDetailsAndroid = async (programOrArgs, developerBillingType) => {
2330
2363
  if (Platform.OS !== 'android') {
2331
2364
  throw new Error('Billing Programs API is only supported on Android');
2332
2365
  }
2333
2366
  try {
2334
- const result = await IAP.instance.createBillingProgramReportingDetailsAndroid(program);
2367
+ const program = typeof programOrArgs === 'string' ? programOrArgs : programOrArgs.program;
2368
+ const resolvedDeveloperBillingType = typeof programOrArgs === 'string' ? developerBillingType : programOrArgs.developerBillingType ?? developerBillingType;
2369
+ const result = await IAP.instance.createBillingProgramReportingDetailsAndroid(program, resolvedDeveloperBillingType ?? null);
2335
2370
  return {
2336
2371
  billingProgram: result.billingProgram,
2337
2372
  externalTransactionToken: result.externalTransactionToken
@@ -2343,7 +2378,56 @@ export const createBillingProgramReportingDetailsAndroid = async program => {
2343
2378
  };
2344
2379
 
2345
2380
  /**
2346
- * Launch external link for external offers or app download (Android only).
2381
+ * Show Google's mandatory information dialog before a developer-rendered,
2382
+ * in-app Billing Choice screen (Android only).
2383
+ *
2384
+ * @param params - Dialog parameters with the external transaction token
2385
+ * @returns Promise with BillingResult
2386
+ * @platform Android
2387
+ * @since Google Play Billing Library 9.1.0+
2388
+ *
2389
+ * @see {@link https://openiap.dev/docs/apis/android/show-billing-program-information-dialog-android}
2390
+ */
2391
+ export const showBillingProgramInformationDialogAndroid = async params => {
2392
+ if (Platform.OS !== 'android') {
2393
+ throw new Error('Billing Choice API is only supported on Android');
2394
+ }
2395
+ try {
2396
+ return await IAP.instance.showBillingProgramInformationDialogAndroid({
2397
+ billingProgram: params.billingProgram ?? 'billing-choice',
2398
+ externalTransactionToken: params.externalTransactionToken
2399
+ });
2400
+ } catch (error) {
2401
+ RnIapConsole.error('Failed to show Billing Choice information dialog:', error);
2402
+ throw error;
2403
+ }
2404
+ };
2405
+
2406
+ /**
2407
+ * Show Play Billing in-app messages, such as transactional subscription updates (Android only).
2408
+ *
2409
+ * @param params - Optional in-app message categories
2410
+ * @returns Promise with in-app message result
2411
+ * @platform Android
2412
+ * @since Google Play Billing Library 4.1.0+
2413
+ *
2414
+ * @see {@link https://openiap.dev/docs/apis/android/show-in-app-messages-android}
2415
+ */
2416
+ export const showInAppMessagesAndroid = async params => {
2417
+ if (Platform.OS !== 'android') {
2418
+ throw new Error('In-app messages are only supported on Android');
2419
+ }
2420
+ try {
2421
+ return await IAP.instance.showInAppMessagesAndroid(params ?? null);
2422
+ } catch (error) {
2423
+ RnIapConsole.error('Failed to show in-app messages:', error);
2424
+ throw error;
2425
+ }
2426
+ };
2427
+
2428
+ /**
2429
+ * Launch an external link for Billing Programs (Android only). Developer-rendered
2430
+ * Billing Choice external-link flows require 9.1.0+ and a pre-generated token.
2347
2431
  *
2348
2432
  * @param params - Parameters for launching the external link
2349
2433
  * @returns Promise<boolean> - true if user accepted, false otherwise
@@ -2353,7 +2437,8 @@ export const createBillingProgramReportingDetailsAndroid = async program => {
2353
2437
  * @example
2354
2438
  * ```typescript
2355
2439
  * const success = await launchExternalLinkAndroid({
2356
- * billingProgram: 'external-offer',
2440
+ * billingProgram: 'billing-choice',
2441
+ * externalTransactionToken: reportingDetails.externalTransactionToken,
2357
2442
  * launchMode: 'launch-in-external-browser-or-app',
2358
2443
  * linkType: 'link-to-digital-content-offer',
2359
2444
  * linkUri: 'https://your-website.com/purchase'
@@ -2372,6 +2457,7 @@ export const launchExternalLinkAndroid = async params => {
2372
2457
  try {
2373
2458
  return await IAP.instance.launchExternalLinkAndroid({
2374
2459
  billingProgram: params.billingProgram,
2460
+ externalTransactionToken: params.externalTransactionToken,
2375
2461
  launchMode: params.launchMode,
2376
2462
  linkType: params.linkType,
2377
2463
  linkUri: params.linkUri