Пример #1
0
        public static async Task StoreReceiptAsync(string productId, string receipt)
        {
            if (productId.Contains("subscritpion") && DownloadManager.ReceiptExpired(receipt))
            {
                return;
            }

            var encryptedFilename         = CipherEncryption(productId);
            var encodedFileName           = Convert.ToBase64String(encryptedFilename.ToArray());
            var encodedAndEscapedFilename = encodedFileName.Replace('/', '-');

            // TEST ONLY
            // =================================================
            //var f = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Assets\test\receipt.pmd");
            //var xml = new XmlDocument();
            //xml = await XmlDocument.LoadFromFileAsync(f);
            //var item = xml.GetElementsByTagName("ProductReceipt")[0] as XmlElement;
            //item.SetAttribute("ProductId", productId);
            //var date = new DateTimeOffset(DateTime.Now);
            //date = date.AddMinutes(3);
            //var str = date.ToString("u");
            //str = str.Replace(" ", "T");
            //item.SetAttribute("ExpirationDate", str);
            //receipt = xml.GetXml();
            //if (DownloadManager.ReceiptExpired(receipt)) return;
            // =================================================

            var folder = ApplicationData.Current.RoamingFolder;

            if (folder == null)
            {
                return;
            }
            folder = await folder.CreateFolderAsync("Receipts", CreationCollisionOption.OpenIfExists);

            var file = await folder.CreateFileAsync(encodedAndEscapedFilename + ".pmd", CreationCollisionOption.ReplaceExisting);

            IBuffer buffEncrypted = CipherEncryption(receipt);

            var stream = await file.OpenAsync(FileAccessMode.ReadWrite);

            await stream.WriteAsync(buffEncrypted);

            await stream.FlushAsync();

            stream.Dispose();

            stream        = null;
            buffEncrypted = null;
            file          = null;

            ApplicationData.Current.SignalDataChanged();

            //CipherDecryption(buffEncrypted);
        }
Пример #2
0
        public static string GetUrl(string productId, string receipt, string relUrl, string clientName, string magName)
        {
            if (productId.Contains("subscritpion") && DownloadManager.ReceiptExpired(receipt))
            {
                return("NoReceipt");
            }

            receipt = Uri.EscapeDataString(receipt);
            var url = "http://download.librelio.com/downloads/win8_verify.php";

            url += "?receipt=" + receipt + "&product_id=" + productId + "&urlstring=" + clientName + "/" + magName + "/" + relUrl;

            return(url);
        }
Пример #3
0
        private static async Task <string> GetReceiptAsync(string productId)
        {
            var encryptedFilename         = CipherEncryption(productId);
            var encodedFileName           = Convert.ToBase64String(encryptedFilename.ToArray());
            var encodedAndEscapedFilename = encodedFileName.Replace('/', '-');

            //var folder = ApplicationData.Current.RoamingFolder;
            var folder = ApplicationData.Current.RoamingFolder;

            if (folder == null)
            {
                return("NoReceipt");
            }
            folder = await folder.CreateFolderAsync("Receipts", CreationCollisionOption.OpenIfExists);

            try
            {
                var file = await folder.GetFileAsync(encodedAndEscapedFilename + ".pmd");

                var stream = await file.OpenAsync(FileAccessMode.Read);

                var  dataReader = new DataReader(stream.GetInputStreamAt(0));
                uint u          = await dataReader.LoadAsync((uint)stream.Size);

                IBuffer buffEncrypted = dataReader.ReadBuffer(u);

                dataReader.DetachStream();
                stream.Dispose();
                stream = null;

                var receipt = CipherDecryption(buffEncrypted);

                if (productId.Contains("subscritpion") && DownloadManager.ReceiptExpired(receipt))
                {
                    await file.DeleteAsync(StorageDeleteOption.PermanentDelete);

                    return("NoReceipt");
                }

                return(receipt);
            }
            catch (Exception e)
            {
                return("NoReceipt");
            }
        }