From d4f6bf2f095a6620aaee4248a805f727cb9575cc Mon Sep 17 00:00:00 2001 From: Kelvne Pechim Date: Tue, 16 Mar 2021 13:47:15 -0300 Subject: [PATCH 1/3] feat: adding introductoryPriceAsAmountAndroid --- android/src/main/java/com/dooboolab/RNIap/RNIapModule.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java b/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java index 0a77a6afe..fb9888e9d 100644 --- a/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java +++ b/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java @@ -297,6 +297,7 @@ public void onSkuDetailsResponse(BillingResult billingResult, List s for (SkuDetails skuDetails : skuDetailsList) { WritableMap item = Arguments.createMap(); item.putString("productId", skuDetails.getSku()); + long introductoryPriceMicros = skuDetails.getIntroductoryPriceAmountMicros(); long priceAmountMicros = skuDetails.getPriceAmountMicros(); // Use valueOf instead of constructors. // See: https://www.javaworld.com/article/2073176/caution--double-to-bigdecimal-in-java.html @@ -317,6 +318,7 @@ public void onSkuDetailsResponse(BillingResult billingResult, List s item.putString("freeTrialPeriodAndroid", skuDetails.getFreeTrialPeriod()); item.putString("introductoryPriceCyclesAndroid", String.valueOf(skuDetails.getIntroductoryPriceCycles())); item.putString("introductoryPricePeriodAndroid", skuDetails.getIntroductoryPricePeriod()); + item.putString("introductoryPriceAsAmountAndroid", String.valueOf(introductoryPriceMicros / 1000000d)); item.putString("iconUrl", skuDetails.getIconUrl()); item.putString("originalJson", skuDetails.getOriginalJson()); BigDecimal originalPriceAmountMicros = BigDecimal.valueOf(skuDetails.getOriginalPriceAmountMicros()); From d9930fea99e892fcc4fb40cdbf59d77cb6ef9e70 Mon Sep 17 00:00:00 2001 From: Kelvne Pechim Date: Tue, 16 Mar 2021 13:49:57 -0300 Subject: [PATCH 2/3] chore: safe conversion of types for intro price amount --- android/src/main/java/com/dooboolab/RNIap/RNIapModule.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java b/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java index fb9888e9d..6432c9f54 100644 --- a/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java +++ b/android/src/main/java/com/dooboolab/RNIap/RNIapModule.java @@ -302,8 +302,10 @@ public void onSkuDetailsResponse(BillingResult billingResult, List s // Use valueOf instead of constructors. // See: https://www.javaworld.com/article/2073176/caution--double-to-bigdecimal-in-java.html BigDecimal priceAmount = BigDecimal.valueOf(priceAmountMicros); + BigDecimal introductoryPriceAmount = BigDecimal.valueOf(introductoryPriceMicros); BigDecimal microUnitsDivisor = BigDecimal.valueOf(1000000); String price = priceAmount.divide(microUnitsDivisor).toString(); + String introductoryPriceAsAmountAndroid = introductoryPriceAmount.divide(microUnitsDivisor).toString(); item.putString("price", price); item.putString("currency", skuDetails.getPriceCurrencyCode()); item.putString("type", skuDetails.getType()); @@ -318,7 +320,7 @@ public void onSkuDetailsResponse(BillingResult billingResult, List s item.putString("freeTrialPeriodAndroid", skuDetails.getFreeTrialPeriod()); item.putString("introductoryPriceCyclesAndroid", String.valueOf(skuDetails.getIntroductoryPriceCycles())); item.putString("introductoryPricePeriodAndroid", skuDetails.getIntroductoryPricePeriod()); - item.putString("introductoryPriceAsAmountAndroid", String.valueOf(introductoryPriceMicros / 1000000d)); + item.putString("introductoryPriceAsAmountAndroid", introductoryPriceAsAmountAndroid); item.putString("iconUrl", skuDetails.getIconUrl()); item.putString("originalJson", skuDetails.getOriginalJson()); BigDecimal originalPriceAmountMicros = BigDecimal.valueOf(skuDetails.getOriginalPriceAmountMicros()); From 95e265acddc7abf4e03370c3dda8140a5c5fee5b Mon Sep 17 00:00:00 2001 From: Kelvne Pechim Date: Tue, 16 Mar 2021 13:52:42 -0300 Subject: [PATCH 3/3] doc: introductoryPriceAsAmountAndroid --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 661dab5cd..2b9f3da27 100644 --- a/README.md +++ b/README.md @@ -316,6 +316,7 @@ Property | iOS | And | Comment `title` | ✓ | ✓ | Returns the title Android and localizedTitle on iOS. `description` | ✓ | ✓ | Returns the localized description on Android and iOS. `introductoryPrice` | ✓ | ✓ | Formatted introductory price of a subscription, including its currency sign, such as €3.99.
The price doesn't include tax. +`introductoryPriceAsAmountAndroid` | | ✓ | Localized introductory price string, with only number (eg. `0.99`). `introductoryPriceAsAmountIOS` | ✓ | | Localized introductory price string, with only number (eg. `0.99`). `introductoryPricePaymentModeIOS` | ✓ | | The payment mode for this product discount. `introductoryPriceNumberOfPeriods` | ✓ | | An integer that indicates the number of periods the product discount is available.