使用Parse iOS SDK检查用户是否具有有效的自动续订订阅

使用Parse iOS SDK检查用户是否具有有效的自动续订订阅,ios,parse-platform,in-app-purchase,Ios,Parse Platform,In App Purchase,我正在尝试使用自动续费订阅实现一个应用程序。用户应付费访问我的应用程序的所有功能。我已经将解析用作我的应用程序的后端。它提供了一些用于InApp购买的API方法,但并没有提到自动更新类型。我唯一发现的是博客中一些两年前的帖子,据说收据验证只针对可下载的购买实施 我曾尝试使用文档中所称的“简单购买”,但效果很好,但我不知道如何检查我的用户是否已经购买了订阅 有人知道有什么方法可以通过Parse API实现吗?或者应该用另一种方法实现吗?如前所述,收据验证只内置在Parse SDK中用于下载内容,但

我正在尝试使用自动续费订阅实现一个应用程序。用户应付费访问我的应用程序的所有功能。我已经将解析用作我的应用程序的后端。它提供了一些用于InApp购买的API方法,但并没有提到自动更新类型。我唯一发现的是博客中一些两年前的帖子,据说收据验证只针对可下载的购买实施

我曾尝试使用文档中所称的“简单购买”,但效果很好,但我不知道如何检查我的用户是否已经购买了订阅


有人知道有什么方法可以通过Parse API实现吗?或者应该用另一种方法实现吗?

如前所述,收据验证只内置在Parse SDK中用于下载内容,但创建一个云代码函数将应用收据发布到iTunes商店进行验证非常简单。以下是用于服务器端验证的Apple文档:

下面是一个基本函数的示例:

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');
       }
    });
});

有关解释收据JSON的详细信息,请参阅。对于iOS 7+来说,这相当简单,但是iOS 6和更早版本的自动续费订阅收据非常繁琐。

你知道了吗?@rpvilao不幸的是,没有。我使用了此处描述的不续费订阅,谢谢回复。我来看看。上面的代码对我来说不太合适;不确定这是否是由于解析中的新内容造成的?或者可能站在苹果这边?(这篇文章已经两年了,谁知道呢?)为了让它正常工作,我必须在
postData
中将标题显式设置为
{'Content-Type':'application/json'}
@AnnaDickinson我托管的parse.com服务器似乎仍然在验证没有在这里设置内容类型的收据,所以我打赌这是parse的一个变化,我还特别假设您使用的是Parse Server,因为托管的Parse.com将在5天后关闭。因为您可以在Parse Server中使用任何npm模块,所以我强烈建议您使用不同的http请求模块,它将提供比Parse.Cloud.httpRequest更大的灵活性。Axios是我个人的推荐,因为它基于承诺的api非常适合云代码。