private void SetPurchaseFailed(IStoreProduct product, StoreTransaction transactionInfo, PurchaseValidationResult validationResult, StorePurchaseError failReason, Exception e = null)
        {
            var result = new PurchaseResult(product, transactionInfo, validationResult);

            if (_purchaseOpCs != null)
            {
                if (failReason == StorePurchaseError.UserCanceled)
                {
                    _purchaseOpCs.SetCanceled();
                }
                else if (e != null)
                {
                    _purchaseOpCs.SetException(new StorePurchaseException(result, failReason, e));
                }
                else
                {
                    _purchaseOpCs.SetException(new StorePurchaseException(result, failReason));
                }
            }
            else
            {
                InvokePurchaseFailed(result, failReason, e);
                ReleaseTransaction();
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PurchaseResult"/> class.
 /// </summary>
 public PurchaseResult(IStoreProduct product, StoreTransaction transactionInfo, PurchaseValidationResult validationResult)
 {
     Product          = product;
     TransactionInfo  = transactionInfo;
     ValidationResult = validationResult;
 }
        private void SetPurchaseCompleted(IStoreProduct product, StoreTransaction transactionInfo, PurchaseValidationResult validationResult)
        {
            var result = new PurchaseResult(product, transactionInfo, validationResult);

            if (_purchaseOpCs != null)
            {
                _purchaseOpCs.SetResult(result);
            }
            else
            {
                InvokePurchaseCompleted(result);
                ReleaseTransaction();
            }
        }