/// <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); }
/// <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); }
/// <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; }