public void SignatureTest() { /* from API docs: (https://gocardless.com/docs/signature_guide#constructing-the-parameter-array) * irb(main):002:0> to_query(data) * => "example%5B%5D=1&example%5B%5D=a&foo=bar" * irb(main):003:0> secret = '5PUZmVMmukNwiHc7V/TJvFHRQZWZumIpCnfZKrVYGpuAdkCcEfv3LIDSrsJ+xOVH' * => "5PUZmVMmukNwiHc7V/TJvFHRQZWZumIpCnfZKrVYGpuAdkCcEfv3LIDSrsJ+xOVH" * irb(main):004:0> signature(data, secret) * => "5a9447aef2ebd0e12d80d80c836858c6f9c13219f615ef5d135da408bcad453d" */ var model = new SignatureTestModel { Foo = "bar", Example = new object[] { 1, 'a' } }; var hash = model.ToHashParams(); Assert.AreEqual("example%5B%5D=1&example%5B%5D=a&foo=bar", hash.ToQueryString()); const string secret = "5PUZmVMmukNwiHc7V/TJvFHRQZWZumIpCnfZKrVYGpuAdkCcEfv3LIDSrsJ+xOVH"; Assert.AreEqual("5a9447aef2ebd0e12d80d80c836858c6f9c13219f615ef5d135da408bcad453d", Utils.GetSignatureForParams(hash, secret)); }