Swift StoreKit Testing: Expired subscription shows as "Currently subscribed"

448 Views Asked by At

Trying expired subscription detection on watchOS my app claims a valid subscription when it shouldn't.

print(status.localizedDescription) gives me Currently subscribed which is odd because the subscription should have expired 3 days ago. The StoreKit status array says

[StoreKit.Product.SubscriptionInfo.Status(state: StoreKit.Product.SubscriptionInfo.RenewalState(rawValue: 1), transaction: {
  "header" : {
    "alg" : "ES256",
    "kid" : "Apple_Xcode_Key",
    "typ" : "JWT",
    "x5c" : [
      "00000"
    ]
  },
  "payload" : {
    "bundleId" : "00000",
    "deviceVerification" : "00000",
    "deviceVerificationNonce" : "00000",
    "environment" : "Xcode",
    "expiresDate" : 1674848446946.3331,
    "inAppOwnershipType" : "PURCHASED",
    "isUpgraded" : false,
    "originalPurchaseDate" : 1674848086048.807,
    "originalTransactionId" : "0",
    "productId" : "00000",
    "purchaseDate" : 1674848086946.3331,
    "quantity" : 1,
    "signedDate" : 1674848087407.774,
    "subscriptionGroupIdentifier" : "0000",
    "transactionId" : "1",
    "type" : "Auto-Renewable Subscription",
    "webOrderLineItemId" : "1"
  },
  "signature" : "64 bytes (verified)"
}, renewalInfo: {
  "header" : {
    "alg" : "ES256",
    "kid" : "Apple_Xcode_Key",
    "typ" : "JWT",
    "x5c" : [
      "00000"
    ]
  },
  "payload" : {
    "autoRenewProductId" : "00000",
    "autoRenewStatus" : 1,
    "deviceVerification" : "00000",
    "deviceVerificationNonce" : "00000",
    "environment" : "Xcode",
    "originalTransactionId" : "0",
    "productId" : "00000",
    "recentSubscriptionStartDate" : 1674848086048.807,
    "signedDate" : 1674848087407.7899
  },
  "signature" : "64 bytes (verified)"
})]

Mind the expiresDate. Also, the autoRenewStatus is 1 however in StoreKit > Manage Transactions they are long expired (and therefore shouldn't have renewal enabled).

enter image description here

Am I missing something here?

I expected the subscription to throw an "expired" state.

0

There are 0 best solutions below