Esempio n. 1
0
    public void saveLongestLastingExpirationDate()
    {
#if UNITY_IPHONE
        var             builder            = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        var             appleConfig        = builder.Configure <IAppleConfiguration>();
        List <DateTime> allExpirationDates = new List <DateTime>();
        if (!string.IsNullOrEmpty(appleConfig.appReceipt))
        {
            var receiptData            = System.Convert.FromBase64String(appleConfig.appReceipt);
            AppleReceiptParser parser  = new AppleReceiptParser();
            AppleReceipt       receipt = parser.Parse(receiptData);
            //AppleReceipt receipt = new AppleReceiptParser.Parse(receiptData);

            FMC_GameDataController.instance.writeToReceiptLog("sled " + receipt.bundleID);
            FMC_GameDataController.instance.writeToReceiptLog("sled " + receipt.receiptCreationDate);
            foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts)
            {
                FMC_GameDataController.instance.writeToReceiptLog("sled Transaction ID: " + productReceipt.transactionID);
                FMC_GameDataController.instance.writeToReceiptLog("sled Product ID: " + productReceipt.productID);
                FMC_GameDataController.instance.writeToReceiptLog("sled Sub Expiration Date: " + productReceipt.subscriptionExpirationDate);

                // Wenn eine der IDs im Receipt mit einer der Abo-IDs übereinstimmt: Testen, ob das Abo gültig ist.
                if (String.Equals(productReceipt.productID, FMC_InAppPurchasing.subscription01, StringComparison.Ordinal) ||
                    String.Equals(productReceipt.productID, FMC_InAppPurchasing.subscription02, StringComparison.Ordinal))
                {
                    allExpirationDates.Add(productReceipt.subscriptionExpirationDate);
                    //if (!JF_Utility.isExpired(productReceipt.subscriptionExpirationDate))
                    //{
                    //    FMC_GameDataController.instance.setSubscriptionToActive();
                    //    FMC_GameDataController.instance.saveNewExpirationDate(productReceipt.subscriptionExpirationDate);
                    //}
                }
            }
        }
        else
        {
            refreshAppleReceipt();
        }

        if (allExpirationDates.Count > 0)
        {
            DateTime longestExpirationDate = allExpirationDates[0];
            for (int i = 0; i < allExpirationDates.Count; i++)
            {
                FMC_GameDataController.instance.writeToReceiptLog("Sled: Test for longest expiration Date.");
                if (JF_Utility.getExpirationTime(allExpirationDates[i]) > JF_Utility.getExpirationTime(longestExpirationDate))
                {
                    longestExpirationDate = allExpirationDates[i];
                }
            }
            FMC_GameDataController.instance.setSubscriptionToActive();
            FMC_GameDataController.instance.saveNewExpirationDate(longestExpirationDate);
        }
#endif
    }
        internal AppleReceipt getAppleReceiptFromBase64String(string receipt)
        {
            AppleReceipt appleReceipt = null;

            if (!string.IsNullOrEmpty(receipt))
            {
                var parser = new AppleReceiptParser();
                try {
                    appleReceipt = parser.Parse(Convert.FromBase64String(receipt));
                } catch (Exception) {
                }
            }
            return(appleReceipt);
        }
Esempio n. 3
0
    public void checkIfSubscriptionIsActive()
    {
#if UNITY_IPHONE
        var builder     = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
        var appleConfig = builder.Configure <IAppleConfiguration>();
        if (!string.IsNullOrEmpty(appleConfig.appReceipt))
        {
            var receiptData            = System.Convert.FromBase64String(appleConfig.appReceipt);
            AppleReceiptParser parser  = new AppleReceiptParser();
            AppleReceipt       receipt = parser.Parse(receiptData);
            //AppleReceipt receipt = new AppleReceiptParser.Parse(receiptData);

            FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Original Version: " + receipt.originalApplicationVersion);
            FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Bundle id: " + receipt.bundleID);
            FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Creation Date: " + receipt.receiptCreationDate);
            foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts)
            {
                FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Transaction ID: " + productReceipt.transactionID);
                FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Product ID: " + productReceipt.productID);
                FMC_GameDataController.instance.writeToReceiptLog("Check if Sub is active: Sub Expiration Date: " + productReceipt.subscriptionExpirationDate);

                // Wenn eine der IDs im Receipt mit einer der Abo-IDs übereinstimmt: Testen, ob das Abo gültig ist.
                if (String.Equals(productReceipt.productID, FMC_InAppPurchasing.subscription01, StringComparison.Ordinal) ||
                    String.Equals(productReceipt.productID, FMC_InAppPurchasing.subscription02, StringComparison.Ordinal))
                {
                    //TimeSpan utcOffset = DateTime.Now - DateTime.UtcNow;
                    //DateTime newDateToCheck = productReceipt.subscriptionExpirationDate + utcOffset;
                    //TimeSpan timeToExpiry = productReceipt.subscriptionExpirationDate - DateTime.UtcNow;
                    //Debug.Log("---------------------------- Time to expiry: " + timeToExpiry);
                    //if (timeToExpiry.TotalSeconds > 0)
                    //    return true;

                    if (!JF_Utility.isExpired(productReceipt.subscriptionExpirationDate))
                    {
                        FMC_GameDataController.instance.setSubscriptionToActive();
                        FMC_GameDataController.instance.saveNewExpirationDate(productReceipt.subscriptionExpirationDate);
                    }
                }
            }
            // Wenn keine übereinstimmende ID in den Product Receipts gefunden wurde: Subscription nicht aktiv.
        }
        else
        {
            refreshAppleReceipt();
        }
#endif
    }