requestSubscription method

Future requestSubscription(
  1. String productId, {
  2. int? prorationModeAndroid,
  3. String? obfuscatedAccountIdAndroid,
  4. String? obfuscatedProfileIdAndroid,
  5. String? purchaseTokenAndroid,
  6. int? offerTokenIndex,
})

Request a subscription on Android or iOS. Result will be received in purchaseUpdated listener or purchaseError listener.

NOTICE second parameter is required on Android.

Check AndroidProrationMode for valid proration values Identical to requestPurchase on iOS. purchaseTokenAndroid is used when upgrading subscriptions and sets the old purchase token offerTokenIndex is now required for billing 5.0, if upgraded from billing 4.0 this will default to 0

Implementation

Future requestSubscription(
  String productId, {
  int? prorationModeAndroid,
  String? obfuscatedAccountIdAndroid,
  String? obfuscatedProfileIdAndroid,
  String? purchaseTokenAndroid,
  int? offerTokenIndex,
}) async {
  if (_platform.isAndroid) {
    return await _channel.invokeMethod('buyItemByType', <String, dynamic>{
      'type': _TypeInApp.subs.name,
      'productId': productId,
      'prorationMode': prorationModeAndroid ?? -1,
      'obfuscatedAccountId': obfuscatedAccountIdAndroid,
      'obfuscatedProfileId': obfuscatedProfileIdAndroid,
      'purchaseToken': purchaseTokenAndroid,
      'offerTokenIndex': offerTokenIndex,
    });
  } else if (_platform.isIOS) {
    return await _channel.invokeMethod('buyProduct', <String, dynamic>{
      'sku': productId,
    });
  }
  throw PlatformException(
      code: _platform.operatingSystem, message: "platform not supported");
}