Implementing Receipt Validation in Swift 3

后端 未结 6 735
没有蜡笔的小新
没有蜡笔的小新 2020-12-24 09:59

I am developing an iOS app in Swift 3 and trying to implement receipt validation following this tutorial: http://savvyapps.com/blog/how-setup-test-auto-renewable-subscriptio

6条回答
  •  醉话见心
    2020-12-24 10:47

    I liked your answer and I just rewrote it in C# for those who are using it like me as I did not find a good source for the solution. Thanks Again For Consumable IAP

    void ReceiptValidation()
        {
            var recPath = NSBundle.MainBundle.AppStoreReceiptUrl.Path;
            if (File.Exists(recPath))
            {
                NSData recData;
                NSError error;
    
                recData = NSData.FromUrl(NSBundle.MainBundle.AppStoreReceiptUrl, NSDataReadingOptions.MappedAlways, out error);
    
                var recString = recData.GetBase64EncodedString(NSDataBase64EncodingOptions.None);
    
                var dict = new Dictionary();
                dict.TryAdd("receipt-data", recString);
    
                var dict1 = NSDictionary.FromObjectsAndKeys(dict.Values.ToArray(), dict.Keys.ToArray());
                var storeURL = new NSUrl("https://sandbox.itunes.apple.com/verifyReceipt");
                var storeRequest = new NSMutableUrlRequest(storeURL);
                storeRequest.HttpMethod = "POST";
    
                var jsonData = NSJsonSerialization.Serialize(dict1, NSJsonWritingOptions.PrettyPrinted, out error);
                if (error == null)
                {
                    storeRequest.Body = jsonData;
                    var session = NSUrlSession.FromConfiguration(NSUrlSessionConfiguration.DefaultSessionConfiguration);
                    var tsk = session.CreateDataTask(storeRequest, (data, response, err) =>
                    {
                        if (err == null)
                        {
                            var rstr = NSJsonSerialization.FromObject(data);
    
                        }
                        else
                        {
                            // Check Error
                        } 
                    });
                    tsk.Resume();
                }else
                {
                    // JSON Error Handling
                }
            }
        }
    

提交回复
热议问题