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