示例#1
0
        /// <summary>
        /// Verifies the fingerprint returned by WireCard
        /// </summary>
        /// <param name="secret">The customer secret key</param>
        /// <param name="items">The form values</param>
        /// <returns></returns>
        public static bool VerifyFingerprint(string secret, NameValueCollection items)
        {
            var builder   = new FingerprintBuilder();
            var itemArray = (items["responseFingerprintOrder"] ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var key in itemArray)
            {
                if (key == "secret")
                {
                    builder.AddValue("secret", secret);
                }
                else
                {
                    builder.AddValue(key, items[key]);
                }
            }

            if (builder.GetFingerprintOrder() != items["responseFingerprintOrder"])
            {
                throw new WireCardException("Fingerprint could not be checked!");
            }

            var hash = builder.GetFingerprint();

            return(hash.Equals(items["responseFingerprint"], StringComparison.OrdinalIgnoreCase));
        }
        /// <summary>
        /// Verifies the fingerprint returned by WireCard
        /// </summary>
        /// <param name="secret">The customer secret key</param>
        /// <param name="items">The form values</param>
        /// <returns></returns>
        public static bool VerifyFingerprint(string secret, NameValueCollection items)
        {
            var builder = new FingerprintBuilder();

            string[] itemArray = (items["responseFingerprintOrder"] ?? "").Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string key in itemArray)
            {
                if (key == "secret")
                {
                    builder.AddValue("secret", secret);
                }
                else
                {
                    builder.AddValue(key, items[key]);
                }
            }

            if (builder.GetFingerprintOrder() != items["responseFingerprintOrder"])
            {
                throw new WireCardException("Fingerprint could not be checked!");
            }

            string hash = builder.GetFingerprint();

            return hash.Equals(items["responseFingerprint"], StringComparison.OrdinalIgnoreCase);
        }
示例#3
0
        /// <summary>
        /// Returns all form values that have to be POSTed to QPay
        /// </summary>
        /// <remarks>
        /// This method also verifies the form values and throws an exception, i.e. if a mandatory
        /// field is null.
        /// </remarks>
        /// <exception cref="WireCardNet.WireCardException">Thrown if a field violates the requirements
        /// by QPay</exception>
        /// <returns>A NameValueCollection containing form values</returns>
        public NameValueCollection GetFormValues()
        {
            var b = new FingerprintBuilder(WireCard.QPayCustomerSecret);

            foreach (string key in _customParameters.AllKeys)
            {
                b.AddValue(key, _customParameters[key]);
            }

            b.AddValue("customerId", WireCard.QPayCustomerId);

            if (!string.IsNullOrEmpty(WireCard.QPayShopId))
            {
                b.AddValue("shopId", WireCard.QPayShopId);
            }

            b.AddValue("amount", Amount.ToString("0.00", CultureInfo.InvariantCulture));

            if (AmountNet.HasValue)
            {
                b.AddValue("amount_net", Amount.ToString("0.00", CultureInfo.InvariantCulture));
            }

            b.AddValue("currency", Currency);

            if (PaymentType != PaymentType.Undefined)
            {
                b.AddValue("paymenttype", PaymentType.ToString().ToUpper().Replace('_', '-'));
            }

            if (!string.IsNullOrEmpty(FinancialInstitution))
            {
                b.AddValue("financialInstitution", FinancialInstitution);
            }

            b.AddValue("language", Language);
            b.AddValue("orderDescription", OrderDescription);

            if (!string.IsNullOrEmpty(DisplayText))
            {
                b.AddValue("displayText", DisplayText);
            }

            b.AddValue("successURL", SuccessURL);
            b.AddValue("cancelURL", CancelURL);
            b.AddValue("failureURL", FailureURL);
            b.AddValue("serviceURL", ServiceURL);

            if (!string.IsNullOrEmpty(ConfirmURL))
            {
                b.AddValue("confirmURL", ConfirmURL);
            }

            if (!string.IsNullOrEmpty(ImageURL))
            {
                b.AddValue("imageURL", ImageURL);
            }

            if (DuplicateRequestCheck)
            {
                b.AddValue("duplicateRequestCheck", "yes");
            }

            if (AutoDeposit)
            {
                b.AddValue("autoDeposit", "yes");
            }

            if (MaxRetries.HasValue)
            {
                b.AddValue("maxRetries", MaxRetries.Value.ToString(CultureInfo.InvariantCulture));
            }

            NameValueCollection form = b.GetFormValues();

            form.Add("requestFingerprintOrder", b.GetFingerprintOrder());
            form.Add("requestFingerprint", b.GetFingerprint());

            return(form);
        }
示例#4
0
        /// <summary>
        /// Returns all form values that have to be POSTed to QPay
        /// </summary>
        /// <remarks>
        /// This method also verifies the form values and throws an exception, i.e. if a mandatory
        /// field is null.
        /// </remarks>
        /// <exception cref="WireCardNet.WireCardException">Thrown if a field violates the requirements
        /// by QPay</exception>
        /// <returns>A NameValueCollection containing form values</returns>
        public NameValueCollection GetFormValues()
        {
            var b = new FingerprintBuilder(WireCard.QPayCustomerSecret);

            foreach (string key in _customParameters.AllKeys)
            {
                b.AddValue(key, _customParameters[key]);
            }

            b.AddValue("customerId", WireCard.QPayCustomerId);

            if (!string.IsNullOrEmpty(WireCard.QPayShopId))
            {
                b.AddValue("shopId", WireCard.QPayShopId);
            }

            b.AddValue("amount", Amount.ToString("0.00", CultureInfo.InvariantCulture));

            if (AmountNet.HasValue)
            {
                b.AddValue("amount_net", Amount.ToString("0.00", CultureInfo.InvariantCulture));
            }

            b.AddValue("currency", Currency);

            if (PaymentType != PaymentType.Undefined)
            {
                b.AddValue("paymenttype", PaymentType.ToString().ToUpper().Replace('_', '-'));
            }

            if (!string.IsNullOrEmpty(FinancialInstitution))
            {
                b.AddValue("financialInstitution", FinancialInstitution);
            }

            b.AddValue("language", Language);
            b.AddValue("orderDescription", OrderDescription);

            if (!string.IsNullOrEmpty(DisplayText))
            {
                b.AddValue("displayText", DisplayText);
            }

            b.AddValue("successURL", SuccessURL);
            b.AddValue("cancelURL", CancelURL);
            b.AddValue("failureURL", FailureURL);
            b.AddValue("serviceURL", ServiceURL);

            if (!string.IsNullOrEmpty(ConfirmURL))
            {
                b.AddValue("confirmURL", ConfirmURL);
            }

            if (!string.IsNullOrEmpty(ImageURL))
            {
                b.AddValue("imageURL", ImageURL);
            }

            if (DuplicateRequestCheck)
            {
                b.AddValue("duplicateRequestCheck", "yes");
            }

            if (AutoDeposit)
            {
                b.AddValue("autoDeposit", "yes");
            }

            if (MaxRetries.HasValue)
            {
                b.AddValue("maxRetries", MaxRetries.Value.ToString(CultureInfo.InvariantCulture));
            }

            NameValueCollection form = b.GetFormValues();

            form.Add("requestFingerprintOrder", b.GetFingerprintOrder());
            form.Add("requestFingerprint", b.GetFingerprint());

            return form;
        }