コード例 #1
0
            internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg)
            {
                if ((jobID == null) || (msg == null))
                {
                    throw new ArgumentNullException(nameof(jobID) + " || " + nameof(msg));
                }

                JobID          = jobID;
                PurchaseResult = (EPurchaseResult)msg.purchase_result_details;

                if (msg.purchase_receipt_info == null)
                {
                    return;
                }

                KeyValue receiptInfo = new KeyValue();

                using (MemoryStream ms = new MemoryStream(msg.purchase_receipt_info)) {
                    if (!receiptInfo.TryReadAsBinary(ms))
                    {
                        return;
                    }

                    List <KeyValue> lineItems = receiptInfo["lineitems"].Children;
                    Items = new Dictionary <uint, string>(lineItems.Count);

                    foreach (KeyValue lineItem in lineItems)
                    {
                        uint   appID    = (uint)lineItem["PackageID"].AsUnsignedLong();
                        string gameName = lineItem["ItemDescription"].Value;
                        gameName     = WebUtility.HtmlDecode(gameName);                     // Apparently steam expects client to decode sent HTML
                        Items[appID] = gameName;
                    }
                }
            }
コード例 #2
0
            internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg)
            {
                JobID = jobID;

                if (msg == null)
                {
                    return;
                }

                Result         = (EResult)msg.eresult;
                PurchaseResult = (EPurchaseResult)msg.purchase_result_details;

                ReceiptInfo = new KeyValue();
                using (MemoryStream ms = new MemoryStream(msg.purchase_receipt_info)) {
                    if (!ReceiptInfo.TryReadAsBinary(ms))
                    {
                        return;
                    }

                    List <KeyValue> lineItems = ReceiptInfo["lineitems"].Children;
                    Items = new Dictionary <uint, string>(lineItems.Count);

                    foreach (KeyValue lineItem in lineItems)
                    {
                        uint   appID    = (uint)lineItem["PackageID"].AsUnsignedLong();
                        string gameName = lineItem["ItemDescription"].AsString();
                        gameName = WebUtility.UrlDecode(gameName);                         // Apparently steam expects client to decode sent HTML
                        Items.Add(appID, gameName);
                    }
                }
            }
コード例 #3
0
        internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg)
        {
            JobID = jobID;
            PurchaseResultDetail = (EPurchaseResultDetail)msg.purchase_result_details;
            Result = (EResult)msg.eresult;

            if (msg.purchase_receipt_info == null)
            {
                return;
            }

            var receiptInfo = new KeyValue();

            using (var ms = new MemoryStream(msg.purchase_receipt_info))
            {
                if (!receiptInfo.TryReadAsBinary(ms))
                {
                    return;
                }
            }

            var lineItems = receiptInfo["lineitems"].Children;

            foreach (var lineItem in lineItems)
            {
                var packageID = lineItem["PackageID"].AsUnsignedInteger();
                var name      = lineItem["ItemDescription"].Value;

                if (packageID > 0)
                {
                    Packages.Add(packageID, name);
                }
            }
        }
コード例 #4
0
 internal PurchaseResponseCallback(CMsgClientPurchaseResponse body)
 {
     Result         = (EResult)body.eresult;
     ErrorCode      = body.purchase_result_details;
     ReceiptInfo    = body.purchase_receipt_info;
     PurchaseResult = (EPurchaseResult)ErrorCode;
 }
コード例 #5
0
            internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg)
            {
                if ((jobID == null) || (msg == null))
                {
                    throw new ArgumentNullException(nameof(jobID) + " || " + nameof(msg));
                }

                JobID          = jobID;
                PurchaseResult = (EPurchaseResult)msg.purchase_result_details;

                if (msg.purchase_receipt_info == null)
                {
                    return;
                }

                KeyValue receiptInfo = new KeyValue();

                using (MemoryStream ms = new MemoryStream(msg.purchase_receipt_info)) {
                    if (!receiptInfo.TryReadAsBinary(ms))
                    {
                        Logging.LogNullError(nameof(ms));
                        return;
                    }
                }

                List <KeyValue> lineItems = receiptInfo["lineitems"].Children;

                if (lineItems.Count == 0)
                {
                    return;
                }

                Items = new Dictionary <uint, string>(lineItems.Count);
                foreach (KeyValue lineItem in lineItems)
                {
                    uint packageID = lineItem["PackageID"].AsUnsignedInteger();
                    if (packageID == 0)
                    {
                        // Valid, coupons have PackageID of -1 (don't ask me why)
                        packageID = lineItem["ItemAppID"].AsUnsignedInteger();
                        if (packageID == 0)
                        {
                            Logging.LogNullError(nameof(packageID));
                            return;
                        }
                    }

                    string gameName = lineItem["ItemDescription"].Value;
                    if (string.IsNullOrEmpty(gameName))
                    {
                        Logging.LogNullError(nameof(gameName));
                        return;
                    }

                    gameName         = WebUtility.HtmlDecode(gameName);             // Apparently steam expects client to decode sent HTML
                    Items[packageID] = WebUtility.HtmlDecode(gameName);
                }
            }
コード例 #6
0
ファイル: Callbacks.cs プロジェクト: umaim/SteamKit
            internal PurchaseResponseCallback(JobID jobID, CMsgClientPurchaseResponse msg)
            {
                JobID  = jobID;
                Result = ( EResult )msg.eresult;
                PurchaseResultDetail = ( EPurchaseResultDetail )msg.purchase_result_details;
                PurchaseReceiptInfo  = new KeyValue();

                if (msg.purchase_receipt_info == null)
                {
                    return;
                }

                using var ms = new MemoryStream(msg.purchase_receipt_info);
                PurchaseReceiptInfo.TryReadAsBinary(ms);
            }
コード例 #7
0
            internal PurchaseResponseCallback(CMsgClientPurchaseResponse body)
            {
                Result         = (EResult)body.eresult;
                PurchaseResult = (EPurchaseResult)body.purchase_result_details;

                using (MemoryStream ms = new MemoryStream(body.purchase_receipt_info)) {
                    if (ReceiptInfo.TryReadAsBinary(ms))
                    {
                        foreach (KeyValue lineItem in ReceiptInfo["lineitems"].Children)
                        {
                            Items.Add((uint)lineItem["PackageID"].AsUnsignedLong(), lineItem["ItemDescription"].AsString());
                        }
                    }
                }
            }
コード例 #8
0
        public PurchaseResponseCallback(JobID _jobID, CMsgClientPurchaseResponse _clientPurchaseMessage)
        {
            JobID = _jobID;
            m_PurchaseResultDetail = (EPurchaseResultDetail)_clientPurchaseMessage.purchase_result_details;
            m_Result = (EResult)_clientPurchaseMessage.eresult;

            KeyValue receiptInfo = new KeyValue();

            using (MemoryStream memoryStream = new MemoryStream(_clientPurchaseMessage.purchase_receipt_info))
            {
                if (!receiptInfo.TryReadAsBinary(memoryStream))
                {
                    return;
                }
            }

            List <KeyValue> lineItems = receiptInfo["lineitems"].Children;

            foreach (KeyValue lineItem in lineItems)
            {
                uint packageID = lineItem["PackageID"].AsUnsignedInteger();
                if (packageID == 0)
                {
                    packageID = lineItem["ItemAppID"].AsUnsignedInteger();
                    if (packageID == 0)
                    {
                        return;
                    }
                }

                string gameName = lineItem["ItemDescription"].Value;
                if (string.IsNullOrEmpty(gameName))
                {
                    return;
                }

                gameName           = WebUtility.HtmlDecode(gameName);
                m_Items[packageID] = gameName;
            }
        }
コード例 #9
0
ファイル: SCHandler.cs プロジェクト: flnnhuman/sClient
            internal PurchaseResponseCallback([NotNull] JobID jobID, [NotNull] CMsgClientPurchaseResponse msg)
            {
                if (jobID == null || msg == null)
                {
                    throw new ArgumentNullException(nameof(jobID) + " || " + nameof(msg));
                }

                JobID = jobID;
                PurchaseResultDetail = (EPurchaseResultDetail)msg.purchase_result_details;
                Result = (EResult)msg.eresult;

                if (msg.purchase_receipt_info == null)
                {
                    sc.Logger.LogNullError(nameof(msg.purchase_receipt_info));

                    return;
                }

                var receiptInfo = new KeyValue();

                using (var ms = new MemoryStream(msg.purchase_receipt_info))
                {
                    if (!receiptInfo.TryReadAsBinary(ms))
                    {
                        sc.Logger.LogNullError(nameof(ms));

                        return;
                    }
                }

                var lineItems = receiptInfo["lineitems"].Children;

                if (lineItems.Count == 0)
                {
                    return;
                }

                Items = new Dictionary <uint, string>(lineItems.Count);

                foreach (KeyValue lineItem in lineItems)
                {
                    var packageID = lineItem["PackageID"].AsUnsignedInteger();

                    if (packageID == 0)
                    {
                        // Coupons have PackageID of -1 (don't ask me why)
                        // We'll use ItemAppID in this case
                        packageID = lineItem["ItemAppID"].AsUnsignedInteger();

                        if (packageID == 0)
                        {
                            sc.Logger.LogNullError(nameof(packageID));

                            return;
                        }
                    }

                    var gameName = lineItem["ItemDescription"].Value;

                    if (string.IsNullOrEmpty(gameName))
                    {
                        sc.Logger.LogNullError(nameof(gameName));

                        return;
                    }

                    // Apparently steam expects client to decode sent HTML
                    gameName         = WebUtility.HtmlDecode(gameName);
                    Items[packageID] = gameName;
                }
            }