getSubscriptionToken function

String getSubscriptionToken(
  1. PurchaseDetails purchase
)

Returns the token for a SUBSCRIPTION to be used with VerifyLocalPurchase.verifySubscription.

  • iOS/macOS: parses localVerificationData JSON to extract originalTransactionId, which is stable across renewals and restores.
  • Android: returns purchase.verificationData.serverVerificationData (the subscription token).

Example:

final token = getSubscriptionToken(purchase);
final isActive = await VerifyLocalPurchase().verifySubscription(token);

Implementation

String getSubscriptionToken(PurchaseDetails purchase) {
  if (Platform.isIOS || Platform.isMacOS) {
    // iOS/macOS: parse localVerificationData JSON to get originalTransactionId
    // The originalTransactionId is stable across renewals and restores
    final data = jsonDecode(purchase.verificationData.localVerificationData);
    return data['originalTransactionId'] as String;
  } else {
    // Android: use serverVerificationData (contains the subscriptionToken)
    return purchase.verificationData.serverVerificationData;
  }
}