public void RejectsMismatchedHash() {
			var values = new NameValueCollection(positiveTestVector) {
				{"kontrollsumma", "111111117286c3159b65a705cf880570"}
			};
			var provider = new HandelsbankenPaymentProvider("account=9999&secret=aaaabbbb");
			Assert.False(provider.VerifyResponse(values["ordernummer"], 1100m, values));
		}
		public void GeneratedValuesShouldAgreeWithTestVectors() {
			var now = new DateTimeOffset(new DateTime(2001, 10, 14, 12, 15, 00));
			var expected = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {
				{"entryid","switch"},
				{"appaction","doDirectPay"},
				{"switchaction","3"},
				{"handOverDatatype","1"},
				{"appname","ssse"},
				{"language","sv"},
				{"country","se"},
				{"butikid","9999"},
				{"ordernummer","ABCD000001"},
				{"orderbelopp","1100"},
				{"senastebokningstid", "20011015121500"},
				{"retururl","https://www.butik.com/cgi/checkorder"},
				{"kontrollsumma","26efb0517cdfbbacb13a61e91feae16d"}
			};
			var provider = new HandelsbankenPaymentProvider("account=9999&secret=aaaabbbb") {
				Clock = () => now, Language = "sv", Country = "se"
			};
			var actual = provider.GenerateDetails(expected["ordernummer"], 1100m, expected["retururl"], expected["retururl"], "ignored");
			Assert.Equal("https://secure.handelsbanken.se/bb/glss/servlet/ssco_dirapp", actual.Url);
			foreach(var key in expected.Keys) {
				Assert.Equal(expected[key], actual.Fields[key]);
			}
		}
		public void RejectsMismatchedIdentifier() {
			var provider = new HandelsbankenPaymentProvider("account=9999&secret=aaaabbbb");
			Assert.False(provider.VerifyResponse("0000000001", 1100m, positiveTestVector));
		}
		public void RejectsNegativeTestVectors() {
			var provider = new HandelsbankenPaymentProvider("account=9999&secret=aaaabbbb");
			Assert.False(provider.VerifyResponse(negativeTestVector["ordernummer"], 1100m, negativeTestVector));
		}
		public void AcceptsPositiveTestVectors() {
			var provider = new HandelsbankenPaymentProvider("account=9999&secret=aaaabbbb");
			Assert.True(provider.VerifyResponse(positiveTestVector["ordernummer"], 1100m, positiveTestVector));
		}