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.

  • Could not get crash report in Crashlytics / fabric. Showing error : “It looks like we are missing dSYMs to process crashes for the versions below.”
  • Xcode -dynamic not specified static library error
  • URLForUbiquityContainerIdentifier returns nil even if configured correctly
  • When is the layoutSubviews method called?
  • How to remove gesture recogniser
  • WebApp using webRTC for cross-platform videochat in iOS Browser and Android Chrome
  • 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: '',
            body: { 'receipt-data': receiptAsBase64EncodedString,
                    'password': SHARED_SECRET }
        Parse.Cloud.httpRequest(postData).then(function (httpResponse) {
            // httpResponse is a Parse.Cloud.HTTPResponse
            var json =; // 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.