flutter_inapp_purchase 6.4.5 
flutter_inapp_purchase: ^6.4.5 copied to clipboard
In App Purchase plugin for flutter. This project has been forked by react-native-iap and we are willing to share same experience with that on react-native.
CHANGELOG #
6.4.3 #
Bug Fixes #
- iOS: Replace ISO8601DateFormatter with millisecond timestamps for date fields (#535)
- Changed 
expirationDateIOSandrevocationDateIOSto use millisecond timestamps - Added explicit Int64 casting for better type safety
 - Aligned with expo-iap implementation for consistency
 - Improved Dart type safety for date parsing with safe num to int conversion
 
 - Changed 
 
6.4.2 #
Bug Fixes #
- Android: Fixed 
subscriptionOfferDetailsAndroidfield returning null (Fixes #534)- Added proper parsing for 
subscriptionOfferDetailsAndroidin subscription products - Removed parsing of deprecated 
subscriptionOfferDetailsfield - Fixed Map type casting issues that could cause runtime errors with 
Map<dynamic, dynamic>inputs 
 - Added proper parsing for 
 
Improvements #
- Type Safety: Improved type safety for JSON parsing across the codebase
- Added safe JSON map conversion helper to prevent type casting errors
 - Fixed all unsafe 
as Map<String, dynamic>casts intypes.dart - Ensures robust handling of platform channel data
 
 
6.4.1 #
Improvements #
- ActiveSubscription Type: Implemented a dedicated 
ActiveSubscriptiontype for subscription APIs to provide better type safety and clearer subscription status information (#532)getActiveSubscriptions()now returnsList<ActiveSubscription>instead ofList<SubscriptionPurchase>- New type includes subscription-specific fields like 
willExpireSoonanddaysUntilExpirationIOS - Automatically calculates expiration status for iOS subscriptions
 - Provides cleaner API with subscription-focused properties
 
 
6.4.0 #
Breaking Changes #
- 
Simplified requestProducts API: The
requestProductsmethod now accepts direct parameters instead of a wrapper object (Fixes #527)// Before (6.3.x) final products = await iap.requestProducts( RequestProductsParams( skus: ['product_id'], type: PurchaseType.inapp, ), ); // After (6.4.0) final products = await iap.requestProducts( skus: ['product_id'], type: PurchaseType.inapp, // Optional, defaults to PurchaseType.inapp );- Removed 
RequestProductsParamsclass - This change simplifies the API and improves developer experience based on user feedback
 
 - Removed 
 
New Features #
- 
DSL-like Builder Pattern for Purchase Requests: Added a builder pattern API for more intuitive and type-safe purchase request construction
// New builder pattern approach await iap.requestPurchaseWithBuilder( build: (r) => r ..type = PurchaseType.inapp ..withIOS((i) => i ..sku = 'product_id' ..quantity = 1) ..withAndroid((a) => a ..skus = ['product_id']), );- Provides better type safety with platform-specific configurations
 - Supports cascade notation for cleaner code
 - Separate builders for iOS and Android parameters
 - Available for both purchases and subscriptions
 
 
Improvements #
- Replaced magic numbers with enums: Android purchase states now use 
AndroidPurchaseStateenum instead of hardcoded values (0, 1, 2)- Better code readability and maintainability
 - Type-safe state checking
 
 
Deprecated Items Removed #
The following deprecated items from v6.3.x have been removed in v6.4.0:
subscriptionOfferDetailsfield (usesubscriptionOfferDetailsAndroidinstead)prorationModefield (usereplacementModeAndroidinstead)AndroidProrationModetypedef (useAndroidReplacementModeinstead)
Note to Users #
We understand there have been several breaking changes recently. We sincerely apologize for any inconvenience. These changes are part of our effort to quickly address the long maintenance gap and bring the library up to modern standards. With version 6.4.0, we believe the major restructuring is now complete, and the API should remain stable going forward.
6.3.3 #
Bug Fixes #
- Android Type Mapping: Fixed Android-specific field mappings to match TypeScript/OpenIAP specifications
- Fixed Product parsing for 
nameAndroidandoneTimePurchaseOfferDetailsAndroidfields - Fixed Purchase 
dataAndroidfield mapping from native Android data - Added proper platform checks for Android/iOS specific fields in toJson output
 - Fixed subscription offer details structure to handle nested pricingPhases
 - Fixed PricingPhase parsing for Android field names (formattedPrice, priceCurrencyCode, priceAmountMicros)
 
 - Fixed Product parsing for 
 
Code Quality #
- Platform-Specific Field Segregation: Enhanced platform checks across all type classes
- Added 
_platform.isAndroidand_platform.isIOSconditions for platform-specific fields - Android-specific fields now only appear on Android platform
 - iOS-specific fields now only appear on iOS platform
 - Added comprehensive TODO comments for v6.4.0 deprecation cleanup
 
 - Added 
 
Documentation #
- Release Notes: Added proper version planning comments for deprecated field removal in v6.4.0
 
6.3.2 #
Bug Fixes #
- iOS Purchase State Detection: Enhanced purchase state detection for iOS
- Fixed UI getting stuck in "Processing..." state when 
transactionStateIOSis null - Now properly detects successful purchases using multiple conditions (state, token, transaction ID)
 - Added duplicate transaction tracking to prevent double processing
 
 - Fixed UI getting stuck in "Processing..." state when 
 - Timeout Error Handling: Improved error handling for store server timeouts
- Added specific handling for Korean timeout message "요청한 시간이 초과되었습니다"
 - Provides user-friendly troubleshooting steps for network issues
 
 - Security: Enhanced security for sensitive data logging
- Purchase tokens are now masked in debug logs (showing only last 4 characters)
 - All sensitive logging is properly gated behind 
kDebugModeflag 
 
Documentation #
- Added comprehensive iOS purchase state detection guide
 - Enhanced troubleshooting documentation with iOS-specific solutions
 
6.3.1 #
Bug Fixes #
- Android Subscription Loading: Fixed type casting error when loading subscriptions
- Fixed 
_Map<String, dynamic>type casting issue that prevented subscriptions from loading - Improved handling of pricing phases data structure from Android
 - Fixed parsing of subscription offer details from nested JSON structure
 
 - Fixed 
 - Test Product Cleanup: Removed deprecated 
android.test.purchasedtest product ID- This test ID is no longer valid in Google Play Billing Library 6+
 
 - Type Safety: Improved type handling for Map conversions from native platforms
- Better handling of different Map implementations from iOS and Android
 
 
6.3.0 #
Bug Fixes #
- CRITICAL FIX: Android Purchase State Mapping: Fixed incorrect mapping of Android purchase states (#524)
- Previously mapped: 0=PURCHASED, 1=PENDING (incorrect)
 - Now correctly maps: 0=UNSPECIFIED_STATE, 1=PURCHASED, 2=PENDING
 - This fix aligns with official Google Play Billing documentation
 - Prevents misinterpreting UNSPECIFIED_STATE as a completed purchase
 - UNSPECIFIED_STATE (0) and unknown states now properly map to 
PurchaseState.unspecified 
 
Features #
- 
Enhanced OpenIAP Compliance: Extended OpenIAP specification support with comprehensive field mapping
- Added full iOS-specific field support: 
displayName,displayPrice,isFamilyShareable,jsonRepresentation,discountsIOS,subscriptioninfo, and promotional offer fields - Added comprehensive Android-specific field support: 
originalPrice,originalPriceAmount,freeTrialPeriod,subscriptionOffersAndroid, and billing cycle information - Enhanced Purchase object with StoreKit 2 fields: 
verificationResultIOS,environmentIOS,expirationDateIOS,revocationDateIOS, and transaction metadata 
 - Added full iOS-specific field support: 
 - 
Improved Test Organization: Restructured test suite by business flows
- Purchase Flow Tests: General purchase operations and error handling
 - Subscription Flow Tests: Subscription-specific operations and lifecycle management
 - Available Purchases Tests: Purchase history, restoration, and transaction management
 - Enhanced test coverage from 26% to 28.2%
 
 
Improvements #
- 
Type Safety: Enhanced type casting and JSON parsing reliability
- Fixed 
Map<Object?, Object?>toMap<String, dynamic>conversion issues - Improved null safety handling for platform-specific fields
 - Better error handling for malformed data
 
 - Fixed 
 - 
Subscription Management: Enhanced active subscription detection
- Improved iOS subscription detection logic for better reliability
 - Added fallback logic for subscription identification across platforms
 
 - 
Code Quality: Comprehensive test suite improvements
- All 95 tests now pass consistently
 - Flexible test assertions that adapt to mock data variations
 - Better separation of platform-specific test scenarios
 
 
Bug Fixes #
- Critical Fix: Fixed iOS subscription loading issue where 
requestProductswithPurchaseType.subsreturned empty arrays- iOS now correctly uses 
getItemsmethod instead of unsupportedgetSubscriptions - Resolves GitHub issues where users couldn't load subscription products on iOS
 
 - iOS now correctly uses 
 - Fixed type casting errors in purchase data conversion
 - Fixed subscription detection on iOS platform
 - Fixed Android purchase state mapping in active subscription queries
 - Resolved null reference exceptions for platform-specific fields
 - Fixed test expectations to match actual implementation behavior
 
Technical Improvements #
- Enhanced mock data consistency across test files
 - Improved JSON serialization/deserialization robustness
 - Better error messages and debugging information
 - Standardized field naming conventions following OpenIAP specification
 
Breaking Changes #
None - This version maintains full backward compatibility while extending functionality.
6.2.0 #
Features #
- OpenIAP Compliance: Added 
idfield toPurchaseclass for standardized transaction identification - Unified Purchase Token: Added 
purchaseTokenfield for cross-platform server validation- iOS: Contains JWS representation for App Store validation
 - Android: Contains purchase token for Google Play validation
 - Deprecated platform-specific token fields in favor of unified approach
 
 
Improvements #
- Transaction Management: 
finishTransactionnow acceptsPurchaseobjects directly - iOS StoreKit 2: Complete implementation with improved transaction handling
 - Date Handling: Fixed date parsing issues across platforms
 - Error Handling: Enhanced error reporting and duplicate event prevention
 
Bug Fixes #
- Fixed missing 
transactionIdandidfields in Android purchase responses - Fixed iOS transaction finishing with proper ID lookup
 - Fixed date conversion issues in 
Purchase.fromJson() 
Breaking Changes #
None - This version maintains backward compatibility.
6.1.0 #
Breaking Changes #
- API Cleanup: Removed all deprecated methods that were marked for removal in 6.0.0
- Removed 
initialize()- useinitConnection()instead - Removed 
checkSubscribed()- implement custom logic withgetAvailablePurchases() - Removed 
showInAppMessageAndroid()- no longer supported - Removed 
manageSubscription()- usedeepLinkToSubscriptionsAndroid()instead - Removed 
openPlayStoreSubscriptions()- usedeepLinkToSubscriptionsAndroid()instead - Removed 
clearTransactionIOS()- no longer needed - Removed 
showPromoCodesIOS()- usepresentCodeRedemptionSheetIOS()instead - Removed 
getPromotedProductIOS()andrequestPromotedProductIOS()- use standard purchase flow - Removed 
requestProductWithOfferIOS()andrequestPurchaseWithQuantityIOS()- userequestPurchase()with RequestPurchase object - Removed 
consumePurchaseAndroidLegacy()andvalidateReceiptAndroidLegacy()- use modern equivalents - Removed 
deepLinkToSubscriptionsAndroidLegacy()- usedeepLinkToSubscriptionsAndroid() - Removed 
acknowledgePurchaseAndroid()- usefinishTransaction()instead 
 - Removed 
 
Improvements #
- Code Quality: Removed internal legacy methods and cleaned up codebase
- Removed 
_requestPurchaseOld()internal method - Consolidated duplicate functionality
 - Improved type safety and consistency
 
 - Removed 
 
Migration Guide #
If you're upgrading from 6.0.x and were using any deprecated methods:
- Replace 
initialize()withinitConnection() - Replace 
acknowledgePurchaseAndroid()withfinishTransaction() - Use 
requestPurchase()with proper RequestPurchase objects instead of platform-specific methods - Use 
presentCodeRedemptionSheetIOS()for promo codes on iOS 
6.0.2 #
Bug Fixes #
- Android: Fixed missing 
signatureAndroidfield in purchase conversion- Added 
signatureAndroidand other Android-specific fields to the Purchase object - Ensures Android purchase signature is properly passed through for receipt validation
 
 - Added 
 
6.0.1 #
Bug Fixes #
- iOS: Fixed type casting issue where 
subscriptionPeriodNumberIOSwas sent as integer instead of string from native iOS code, causing runtime errors - Internal: Renamed unused stream controllers for better code clarity
_purchaseUpdatedController→_purchaseUpdatedListener_purchaseErrorListenerController→_purchaseErrorListener
 
6.0.0 #
Major Release - Open IAP Specification Compliance #
This major release redesigns the API to fully comply with the Open IAP specification, providing a standardized interface for in-app purchases across platforms.
What is Open IAP? #
Open IAP is an open standard for implementing in-app purchases consistently across different platforms and frameworks. By following this specification, flutter_inapp_purchase now offers:
- Consistent API design patterns
 - Standardized error codes and handling
 - Unified purchase flow across iOS and Android
 - Better interoperability with other IAP libraries
 
Breaking Changes #
- Architecture: Complete redesign following Open IAP specification
- Removed 
useIaphook andIapProvider- useFlutterInappPurchase.instancedirectly - Removed 
flutter_hooksdependency - Simplified API with direct instance access pattern
 
 - Removed 
 - iOS: Now requires iOS 11.0+ with StoreKit 2 support (iOS 15.0+)
 - Android: Updated to Billing Client v8.0.0
 - API Changes:
- Enum naming convention: 
E_UNKNOWN→eUnknown(lowerCamelCase) - Channel access: 
FlutterInappPurchase.channel→FlutterInappPurchase.instance.channel - Unified error handling with standardized error codes
 
 - Enum naming convention: 
 
New Features #
- Open IAP Compliance: Full implementation of the Open IAP specification
 - Improved Error Handling: Standardized error codes across platforms
 - Event-based Architecture: New listeners for purchase updates and errors
 - StoreKit 2 Support: Automatic transaction verification on iOS 15.0+
 - Better Type Safety: Enhanced TypeScript-like type definitions
 
Migration Guide #
// Before (5.x)
final iap = useIap();
await iap.initialize();
// After (6.0)
final iap = FlutterInappPurchase.instance;
await iap.initConnection();
For complete migration details, see the documentation.
5.6.2 #
- fix: removed references to deprecated v1 Android embedding by @moodstubos in https://github.com/hyochan/flutter_inapp_purchase/pull/497
 
5.6.1 #
- Erroneous duplicate item by @deakjahn in https://github.com/hyochan/flutter_inapp_purchase/pull/441
 - Fixed consumable products reading on Android by @33-Elephants in https://github.com/hyochan/flutter_inapp_purchase/pull/439
 - fix: Support AGP8 namespace by @dev-yakuza in https://github.com/hyochan/flutter_inapp_purchase/pull/467
 
5.6.0 #
- 
refactor: android init connection
Used Kotlin apply for cleaner initialization of billingClient. Introduced context ?: return for null-safety with context. Merged repetitive code into the updateConnectionStatus method to avoid duplication. Improved the handling of the alreadyFinished flag to ensure it is only set once and at the appropriate time. Streamlined the error and success handling for clarity. - 
Migrate android billingClient to 6.0.1
 
5.5.0 #
- 
Erroneous duplicate item (#441) - Remove extra
introductoryPricePaymentModeIOS - 
Fixed consumable products reading on Android (#439)
 - 
chore(deps): migrate internal packages to recent
http: ^1.1.0 meta: ^1.10.0 platform: ^3.1.3 - 
chore: migrate example project to recent flutter version, 3.16.0-0.3.pre
 
5.4.2 #
What's Changed #
- Update actions/stale action to v8 by @renovate in https://github.com/hyochan/flutter_inapp_purchase/pull/414
 - Fix - wrong casting by @BrunoFSimon in https://github.com/hyochan/flutter_inapp_purchase/pull/427
 - Fixed consumable product purchase on Android by @33-Elephants in https://github.com/hyochan/flutter_inapp_purchase/pull/420
 
New Contributors #
- @BrunoFSimon made their first contribution in https://github.com/hyochan/flutter_inapp_purchase/pull/427
 - @33-Elephants made their first contribution in https://github.com/hyochan/flutter_inapp_purchase/pull/420
 
Full Changelog: https://github.com/hyochan/flutter_inapp_purchase/compare/5.4.1...5.4.2
5.4.1 #
- Fixed concurrency issue on iOS. by @OctavianLfrd in https://github.com/hyochan/flutter_inapp_purchase/pull/413
 
5.4.0 #
- Fixed wrong casting in checkSubscribed method by @kleeb in https://github.com/hyochan/flutter_inapp_purchase/pull/368
 - Upgrade to billing 5.1 (reverse compatible) by @SamBergeron in https://github.com/hyochan/flutter_inapp_purchase/pull/392
 
5.3.0 #
What's Changed #
- Refactor java to kotlin, add showInAppMessageAndroid by @offline-first in https://github.com/hyochan/flutter_inapp_purchase/pull/365
 
New Contributors #
- @offline-first made their first contribution in https://github.com/hyochan/flutter_inapp_purchase/pull/365
 
Full Changelog: https://github.com/hyochan/flutter_inapp_purchase/compare/5.2.0...5.3.0
5.2.0 #
Bugfix #356
5.1.1 #
Run on UiThread and few others (#328)
- 
Related #272
 - 
The main difference is a new MethodResultWrapper class that wraps both the result and the channel. onMethodCall() now immediately saves this wrapped result-channel to a field and only uses that later to set both the result and to send back info on the channel. I did this in both Google and Amazon but I can't test the Amazon one.
 - 
Included the plugin registration differences.
 - 
Midified suggested in one of the issues that initConnection, endConnection and consumeAllItems shouldn't be accessors. This is very much so, property accessors are not supposed to do work and have side effects, just return a value. Now three new functions are suggested and marked the old ones deprecated.
 
Fourth, EnumUtil.getValueString() is not really necessary, we have describeEnum() in the Flutter engine just for this purpose.
5.1.0 #
Upgrade android billing client to 4.0.0 (#326)
Remove orderId in Purchase
- This is duplicate of 
transactionId. 
Support for Amazon devices with Google Play sideloaded (#313)
5.0.4 #
- Add iOS promo codes (#325)
 - Use http client in validateReceiptIos (#322)
 - Amazon 
getPricedirectly withoiut formatting (#316) 
5.0.2 #
- Replaced obfuscatedAccountIdAndroid with obfuscatedAccountId in request purchase method #299
 
4.0.1 #
platformdep version>=2.0.0 <4.0.0
3.0.0 #
- Upgrade android billing client to 
2.1.0from3.0.0. - Removed 
deveoperIdandaccountIdwhen requestingpurchaseorsubscriptioninandroid. - Added 
obfuscatedAccountIdAndroidandobfuscatedProfileIdAndroidwhen requestingpurchaseorsubscriptioninandroid. - Removed 
developerPayloadinandroid. - Added 
purchaseTokenAndroidas an optional parameter torequestPurchaseandrequestSubscription. 
2.3.1 #
Republishing since sourcode seems not merged correctly.
2.3.0 #
2.2.0 #
- Implement 
endConnectionmethod to declaratively finish observer in iOS. - Remove 
addTransactionObserverin IAPPromotionObserver.m for dup observer problems. - Automatically startPromotionObserver in 
initConnectionfor iOS. 
2.1.1 #
- Renamed 
finishTransactionIOSargumentpurchaseTokentotransactionId. 
2.1.0 #
finishTransactionparameter changes topurchasedItemfrompurchaseToken.- Update android billing client to 
2.1.0from2.0.3. 
2.0.3 #
2.0.0+16 #
- Resolve #106 by not sending 
result.errorto the listener. Created use_conectionSubscription. 
2.0.0+14 #
- Pass android exception to flutter side.
 
2.0.0+13 #
- Android receipt validation api upgrade to 
v3. 
2.0.0+6 #
- Send 
purchase-errorwith purchases returns null. 
2.0.0+5 #
- Renamed invoked parameters non-platform specific.
 
2.0.0+4 #
- Add 
deveoperIdandaccountIdwhen requestingpurchaseorsubscriptioninandroid. Find out more inrequestPurchaseandrequestSubscription. 
2.0.0+2 #
- Seperate long 
examplecode toexamplereadme. 
2.0.0+1 #
- Properly set return type 
PurchaseResultof when finishing transaction. 
2.0.0 🎉 #
- Removed deprecated note in the 
readme. - Make the previous tests work in 
travis. - Documentation on 
readmefor breaking features. - Abstracts 
finishTransaction.acknowledgePurchaseAndroid,consumePurchaseAndroid,finishTransactionIOS.
 
[Android]
- Completely remove prepare.
 - Upgrade billingclient to 2.0.3 which is currently recent in Sep 15 2019.
 - Remove [IInAppBillingService] binding since billingClient has its own functionalities.
 - Add [DoobooUtils] and add 
getBillingResponseDatathat visualizes erorr codes better. buyProductno more return asyn result. It rather relies on thepurchaseUpdatedListener.- Add feature method 
acknowledgePurchaseAndroid- Implement 
acknowledgePurchaseAndroid. - Renamed 
consumePurchasetoconsumePurchaseAndroidin dart side. - Update test codes.
 
 - Implement 
 - Renamed methods
buyProducttorequestPurchase.buySubscriptiontorequestSubscription.
 
[iOS]
- Implment features in new releases.
- enforce to 
finishTransactionafter purchases. - Work with 
purchaseUpdatedandpurchaseErrorlistener as in android. - Feature set from 
react-native-iap v3. - Should call finish transaction in every purchase request.
 - Add 
IAPPromotionObservercocoa touch file - Convert dic to json string before invoking purchase-updated
 - Add 
getPromotedProductIOSandrequestPromotedProductIOSmethods - Implement clearTransaction for ios
 - Include 
purchasePromotedstream that listens toiap-promoted-product. 
 - enforce to 
 
1.0.0 #
- Add 
DEPRECATIONnote. Please use in_app_purchase. 
0.9.+ #
- 
Breaking change. Migrate from the deprecated original Android Support Library to AndroidX. This shouldn't result in any functional changes, but it requires any Android apps using this plugin to also migrate to Android X if they're using the original support library. Android's Migrating to Android X Guide.
 - 
Improved getPurchaseHistory's speed 44% faster #68.
 
0.8.+ #
- 
Fixed receipt validation param for
android. - 
Updated
httppackage. - 
Implemented new method
getAppStoreInitiatedProducts.- Handling of iOS method 
paymentQueue:shouldAddStorePayment:forProduct: - Has no effect on Android.
 
 - Handling of iOS method 
 - 
Fixed issue with method
buyProductWithoutFinishTransactionfor iOS, was not getting the productId. - 
Fixed issue with
toStringmethod of classIapItem, was printing incorrect values. - 
Fixes for #44. Unsafe getting
originalJsonwhen restoring item andAndroid. - 
Use dictionaryWithObjectsAndKeys in NSDictionary to fetch product values. This will prevent from NSInvalidArgumentException in ios which rarely occurs.
 - 
Fixed wrong npe in
androidwhengetAvailablePurchases. - 
Only parse
orderIdwhen exists inAndroidto prevent crashing. - 
Add additional success purchase listener in
iOS. Related #54 
0.7.1 #
- Implemented receiptValidation for both android and ios.
- In Android, you need own backend to get your 
accessToken. 
 - In Android, you need own backend to get your 
 
0.7.0 #
- Addition of Amazon In-App Purchases.
 
0.6.9 #
- Prevent nil element exception when getting products.
 
0.6.8 #
- Prevent nil exception in ios when fetching products.
 
0.6.7 #
- Fix broken images on pub.
 
0.6.6 #
- Added missing introductory fields in ios.
 
0.6.5 #
- convert dynamic objects to PurchasedItems.
 - Fix return type for getAvailablePurchases().
 - Fix ios null value if optional operator.
 
0.6.3 #
- Update readme.
 
0.6.2 #
- Fixed failing when there is no introductory price in ios.
 
0.6.1 #
- Fixed 
checkSubscribedthat can interrupt billing lifecycle. 
0.6.0 #
- Major code refactoring by lukepighetti. Unify PlatformException, cleanup new, DateTime instead of string.
 
0.5.9 #
- Fix getSubscription json encoding problem in 
ios. 
0.5.8 #
- Avoid crashing on android caused by IllegalStateException.
 
0.5.7 #
- Avoid possible memory leak in android by deleting static declaration of activity and context.
 
0.5.6 #
- Few types fixed.
 
0.5.4 #
- Fixed error parsing IapItem.
 
0.5.3 #
- Fixed error parsing purchaseHistory.
 
0.5.2 #
- Fix crashing on error.
 
0.5.1 #
- Give better error message on ios.
 
0.5.0 #
- Code migration.
 - Support subscription period.
 - There was parameter renaming in 
0.5.0to identify different parameters sent from the device. Please check the readme. 
0.4.3 #
- Fixed subscription return types.
 
0.4.0 #
- Well formatted code.
 
0.3.3 #
- Code formatted
 - Updated missing data types
 
0.3.1 #
- Upgraded readme for ease of usage.
 - Enabled strong mode.
 
0.3.0 #
- Moved dynamic return type away and instead give 
PurchasedItem. 
0.2.2 #
- Migrated packages from FlutterInApp to FlutterInAppPurchase because pub won't get it.
 
0.1.0 #
- Initial release of beta
 - Moved code from react-native-iap