Check if user has valid auto-renewable subscription with Parse iOS SDK

I’m trying to implement an application with auto-renewable subscription. Users should pay to access all functions of my application. I already use Parse as backend for my application. It provides some API methods for inAppPurchases but there is nothing said about auto-renewable type. The only thing I have found is some two years old threads in the blog it is said that receipt verification was implemented only for downloadable purchases.

I have tried to use as it called in docs “Simple purchase” and it works fine but I can’t figure out how can I check if my user already bought subscription or not.

  • PFUser does not have a member named subscript?
  • Swift - trouble appending array from class
  • How to prevent duplicate entry on parse?
  • Unable to save channels to PFInstallation (iOS)
  • Parse - Query after a specific row
  • Loading image in Swift from Parse
  • Does anybody know is there way to do it via Parse API or This should implemented in another way?

    Solutions Collect From Internet About “Check if user has valid auto-renewable subscription with Parse iOS SDK”

    As mentioned, receipt validation is only built into the Parse SDK for downloadable content, but it is fairly simple to to create a Cloud Code function that POSTs the app receipt to the iTunes Store for validation. Here are the Apple docs for server side validation: Validating Receipts with the App Store

    Here is a what a basic function would look like:

    Parse.Cloud.define('validateReceipt', function (request, response) {
        var receiptAsBase64EncodedString = request.params.receiptData;
        var postData = {
            method: 'POST',
            url: 'http://buy.itunes.apple.com/verifyReceipt',
            body: { 'receipt-data': receiptAsBase64EncodedString,
                    'password': SHARED_SECRET }
        }
    
        Parse.Cloud.httpRequest(postData).then(function (httpResponse) {
            // httpResponse is a Parse.Cloud.HTTPResponse
            var json = httpResponse.data; // Response body as a JavaScript object.
            var validationStatus = json.status; // App Store validation status code
            var receiptJSON = json.receipt; // Receipt data as a JSON object
    
            // TODO: You'll need to check the IAP receipts to retrieve the
            //       expiration date of the auto-renewing subscription, and
            //       determine if it is expired yet.
            var subscriptionIsActive = true;
    
           if (subscriptionIsActive) {
               return response.success('Subscription Active');
           }
           else {
               return response.error('Subscription Expired');
           }
        });
    });
    

    See Receipt Fields for details on interpreting the receipt JSON. It’s fairly straight forward for iOS 7+, but auto-renewing subscription receipts for iOS 6 and earlier are tedious.