123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Xml.Linq;
- using Windows.ApplicationModel.Store;
- using Windows.Foundation;
- using Windows.Storage;
-
- namespace UnityEngine.Purchasing.Default
- {
- class UnibillCurrentAppSimulator : ICurrentApp
- {
- public void BuildMockProducts(List<WinProductDescription> winProducts)
- {
- StorageFolder myfolder = ApplicationData.Current.LocalFolder;
- if (!Exists("WindowsStoreProxy.xml"))
- {
- myfolder.CreateFileAsync("WindowsStoreProxy.xml").AsTask().Wait();
- }
- var file = myfolder.GetFileAsync("WindowsStoreProxy.xml").AsTask().Result;
-
- FileIO.WriteTextAsync(file, BuildDoc(winProducts).ToString()).AsTask().Wait();
-
- var task = CurrentAppSimulator.ReloadSimulatorAsync(file).AsTask();
- task.Wait();
- }
-
- private bool Exists(string fileName)
- {
- try
- {
- var task = ApplicationData.Current.LocalFolder.GetFileAsync(fileName).AsTask();
- task.Wait();
- if (task.Exception == null)
- {
- return true;
- }
- }
- catch
- {
- // Filenotfound
- }
- return false;
- }
-
- private XDocument BuildDoc(List<WinProductDescription> winProducts)
- {
- XNamespace xml = "xml";
- XElement CurrentApp =
- new XElement("CurrentApp",
- new XElement("ListingInformation",
- new XElement("App",
- new XElement("AppId", "2B14D306-D8F8-4066-A45B-0FB3464C67F2"),
- new XElement("LinkUri", "http://apps.windows.microsoft.com/app/2B14D306-D8F8-4066-A45B-0FB3464C67F2"),
- new XElement("CurrentMarket", "en-US"),
- new XElement("AgeRating", "3"),
- new XElement("MarketData", new XAttribute(XNamespace.Xml + "lang", "en-us"),
- new XElement("Name", "Unity IAP demo full license"),
- new XElement("Description", "Unity IAP Mock mode"),
- new XElement("Price", "4.99"),
- new XElement("CurrencySymbol", "$")
- )
- ),
- winProducts.Select(x => new XElement("Product", new XAttribute("ProductId", x.platformSpecificID), new XAttribute("ProductType", x.consumable ? "Consumable" : "Durable"),
- new XElement("MarketData", new XAttribute(XNamespace.Xml + "lang", "en-us"),
- new XElement("Name", x.title),
- new XElement("Price", 0.01m),
- new XElement("CurrencySymbol", RegionInfo.CurrentRegion.CurrencySymbol)
- )
- )
- )
- ),
- new XElement("LicenseInformation",
- new XElement("App",
- new XElement("IsActive", "true"),
- new XElement("IsTrial", "false")
- )
- )
- );
- var doc = new XDocument();
- doc.Add(CurrentApp);
- return doc;
- }
-
- public IAsyncOperation<IReadOnlyList<UnfulfilledConsumable>> GetUnfulfilledConsumablesAsync()
- {
- return CurrentAppSimulator.GetUnfulfilledConsumablesAsync();
- }
-
- public IAsyncOperation<ListingInformation> LoadListingInformationAsync()
- {
- return CurrentAppSimulator.LoadListingInformationAsync();
- }
-
-
- public IAsyncOperation<FulfillmentResult> ReportConsumableFulfillmentAsync(string productId, Guid transactionId)
- {
- return CurrentAppSimulator.ReportConsumableFulfillmentAsync(productId, transactionId);
- }
-
- public IAsyncOperation<PurchaseResults> RequestProductPurchaseAsync(string productId)
- {
- return CurrentAppSimulator.RequestProductPurchaseAsync(productId);
- }
-
- public IAsyncOperation<string> RequestProductReceiptAsync(string productId)
- {
- return CurrentAppSimulator.GetProductReceiptAsync(productId);
- }
-
- public LicenseInformation LicenseInformation
- {
- get
- {
- return CurrentAppSimulator.LicenseInformation;
- }
- }
-
-
- public IAsyncOperation<string> RequestAppReceiptAsync()
- {
- return CurrentAppSimulator.GetAppReceiptAsync();
- }
- }
- }
|