public iDealResponse HandleResponse(string response, ISignatureProvider signatureProvider) { var xDocument = XElement.Parse(response); switch (xDocument.Name.LocalName) { case "DirectoryRes": return new DirectoryResponse(response); case "AcquirerTrxRes": return new TransactionResponse(response); case "AcquirerStatusRes": var statusResponse = new StatusResponse(response); // Check fingerprint if (statusResponse.Fingerprint != signatureProvider.GetThumbprintAcquirerCertificate()) throw new SecurityException("Signature fingerprint from status respone does not match fingerprint acquirer's certificate"); // Check digital signature if (!signatureProvider.VerifySignature(statusResponse.SignatureValue, statusResponse.MessageDigest)) throw new SecurityException("Signature status response from acquirer's certificate is not valid"); return statusResponse; case "ErrorRes": throw new iDealException(xDocument); default: throw new InvalidDataException("Unknown response"); } }
public iDealResponse HandleResponse(string response, ISignatureProvider signatureProvider) { var xDocument = XElement.Parse(response); if (!signatureProvider.VerifySignature(response)) { throw new InvalidSignatureException(); } switch (xDocument.Name.LocalName) { case "DirectoryRes": return new DirectoryResponse(response); case "AcquirerTrxRes": return new TransactionResponse(response); case "AcquirerStatusRes": var statusResponse = new StatusResponse(response); return statusResponse; case "AcquirerErrorRes": throw new iDealException(xDocument); default: throw new InvalidDataException("Unknown response"); } }
public void CanCreateStatusResponseCancelled() { var statusResponseCancelled = new StreamReader("Util\\TestResponses\\StatusResponseCancelled.xml").ReadToEnd(); var statusResponse = new StatusResponse(statusResponseCancelled); Assert.AreEqual(8, statusResponse.AcquirerId); Assert.AreEqual("0000000000078321", statusResponse.TransactionId); Assert.AreEqual(Status.Status.Cancelled, statusResponse.Status); Assert.IsNullOrEmpty(statusResponse.ConsumerName); Assert.IsNullOrEmpty(statusResponse.ConsumerAccountNumber); Assert.IsNullOrEmpty(statusResponse.ConsumerCity); Assert.AreEqual("6CFC36389C7A3C49440B8733D258CB2167FAC18F", statusResponse.Fingerprint); Assert.AreEqual(statusResponse.CreateDateTimeStamp + "0000000000078321Cancelled", statusResponse.MessageDigest); Assert.AreEqual("RTK+t4Nr5LRPfgOhWkUpECFts4GWbu2kKTw7VYmISdBl870D3rYIhg9gdaDPhXuj25hJ/ztwbCNKYNf+MnymTeOszIm1xdWDvuCHe4WT3F8vA+6rZIiPBUcVqFfyXAfj8Tr9pSsFWppWxzYddo0tGOkF5g8JxHB91NltEdWtzbY=", statusResponse.SignatureValue); }
public void CanCreateStatusResponseSuccess() { var statusResponseSuccess = new StreamReader("Util\\TestResponses\\StatusResponseSuccess.xml").ReadToEnd(); var statusResponse = new StatusResponse(statusResponseSuccess); Assert.AreEqual(8, statusResponse.AcquirerId); Assert.AreEqual("0000000000078316", statusResponse.TransactionId); Assert.AreEqual(Status.Status.Success, statusResponse.Status); Assert.AreEqual("Webpirates", statusResponse.ConsumerName); Assert.AreEqual("108429563", statusResponse.ConsumerAccountNumber); Assert.AreEqual("Meppel", statusResponse.ConsumerCity); Assert.AreEqual("6CFC36389C7A3C49440B8733D258CB2167FAC18F", statusResponse.Fingerprint); Assert.AreEqual(statusResponse.CreateDateTimeStamp + "0000000000078316Success108429563", statusResponse.MessageDigest); Assert.AreEqual("LAwZjEiH+Z8BAzRTNGopGq3OT8V80if3H6pKcNfWcyyXb0yqzYcX3/+vkTeirq+A4Sv7UuVdrcmGqzbZW7kDzX1/fxbyGahfYlsbysQLvxDdR6ExIjHohRx1RHwFZ1NO1hbw3R4ab27hHBz43gtytz4YP5nT6B9zwW+eHIlNIuY=", statusResponse.SignatureValue); }
public void CanCreateStatusResponseExpired() { var statusResponseExpired = new StreamReader("Util\\TestResponses\\StatusResponseExpired.xml").ReadToEnd(); var statusResponse = new StatusResponse(statusResponseExpired); Assert.AreEqual(8, statusResponse.AcquirerId); Assert.AreEqual("0000000000078324", statusResponse.TransactionId); Assert.AreEqual(Status.Status.Expired, statusResponse.Status); Assert.IsNullOrEmpty(statusResponse.ConsumerName); Assert.IsNullOrEmpty(statusResponse.ConsumerAccountNumber); Assert.IsNullOrEmpty(statusResponse.ConsumerCity); Assert.AreEqual("6CFC36389C7A3C49440B8733D258CB2167FAC18F", statusResponse.Fingerprint); Assert.AreEqual(statusResponse.CreateDateTimeStamp + "0000000000078324Expired", statusResponse.MessageDigest); Assert.AreEqual("ijQkrIqUzZbSWzFrQzPb9iYJ1NRJlZtFH1u0r6TbwkzltPgAGpbkoOdiPRiYC0kBEixJ3eTC9QhKGDy3dk1h5b7cBo1vdiCa8odKPMZ8wb1cP9qoy3EO+DKUKuutwJW2S4ocGtv1d5StJWslDkYvVlXHhOjN/t15NRVKb5jpvmU=", statusResponse.SignatureValue); }
public void CanCreateStatusResponseOpen() { var statusResponseOpen = new StreamReader("Util\\TestResponses\\StatusResponseOpen.xml").ReadToEnd(); var statusResponse = new StatusResponse(statusResponseOpen); Assert.AreEqual(8, statusResponse.AcquirerId); Assert.AreEqual("0000000000078323", statusResponse.TransactionId); Assert.AreEqual(Status.Status.Open, statusResponse.Status); Assert.IsNullOrEmpty(statusResponse.ConsumerName); Assert.IsNullOrEmpty(statusResponse.ConsumerAccountNumber); Assert.IsNullOrEmpty(statusResponse.ConsumerCity); Assert.AreEqual("6CFC36389C7A3C49440B8733D258CB2167FAC18F", statusResponse.Fingerprint); Assert.AreEqual(statusResponse.CreateDateTimeStamp + "0000000000078323Open", statusResponse.MessageDigest); Assert.AreEqual("UiyTyuINsQwL1FmpSnhvcHQ1p/wTUiE07Ag4XAIETFCNPGK5ag0PfktPfAYKXX3uB38fhuaoMddWlcpQ9nJLDe+i+LKxg37ILGs7+LUgROGyV5DpSM78pvD3hanP8r4bLPuvNBNJYpeddcb91iLcopbNGHBudZufeaX8mT8xMkc=", statusResponse.SignatureValue); }
public void CanCreateStatusResponseFailure() { var statusResponseFailure = new StreamReader("Util\\TestResponses\\StatusResponseFailure.xml").ReadToEnd(); var statusResponse = new StatusResponse(statusResponseFailure); Assert.AreEqual(8, statusResponse.AcquirerId); Assert.AreEqual("0000000000078322", statusResponse.TransactionId); Assert.AreEqual(Status.Status.Failure, statusResponse.Status); Assert.IsNullOrEmpty(statusResponse.ConsumerName); Assert.IsNullOrEmpty(statusResponse.ConsumerAccountNumber); Assert.IsNullOrEmpty(statusResponse.ConsumerCity); Assert.AreEqual("6CFC36389C7A3C49440B8733D258CB2167FAC18F", statusResponse.Fingerprint); Assert.AreEqual(statusResponse.CreateDateTimeStamp + "0000000000078322Failure", statusResponse.MessageDigest); Assert.AreEqual("MRscIWUKhPQAcuPxTF+PUKPt/FnMGMSG2jtw3CHUGCJ+KiMKDq6F3wdU/hzhKwqkg6iEzRvSLzZtuh6vQXHyx5f0NQ3sz63nkl6SoU+mRM6c3qWZs6+ckzNOfMRXClhZVGU87t+th3x1IVkvcS+jIgvG9F0JLlz7rt3oU4htDSU=", statusResponse.SignatureValue); }