public void ExtraHeadersAreSent(CardPaymentModel payment, string responseData, string receiptId) { const string EXTRA_HEADER_NAME = "X-Extra-Request-Header"; var httpClient = Substitute.For<IHttpClient>(); var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(responseData) }; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var responseTask = new TaskCompletionSource<HttpResponseMessage>(); responseTask.SetResult(response); httpClient.SendAsync(Arg.Is<HttpRequestMessage>(r => r.Headers.Contains(EXTRA_HEADER_NAME))) .Returns(responseTask.Task); var client = new Client(new Connection(httpClient, DotNetLoggerFactory.Create, "http://something.com")); var judo = new JudoPayApi(DotNetLoggerFactory.Create, client); payment.HttpHeaders.Add(EXTRA_HEADER_NAME, "some random value"); IResult<ITransactionResult> paymentReceiptResult = judo.Payments.Create(payment).Result; Assert.NotNull(paymentReceiptResult); Assert.IsFalse(paymentReceiptResult.HasError); Assert.NotNull(paymentReceiptResult.Response); Assert.That(paymentReceiptResult.Response.ReceiptId, Is.EqualTo(134567)); }
public void RegisterCardWithError(CardPaymentModel registerCard, string responseData, JudoApiError errorType) { var httpClient = Substitute.For<IHttpClient>(); var response = new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(responseData) }; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var responseTask = new TaskCompletionSource<HttpResponseMessage>(); responseTask.SetResult(response); httpClient.SendAsync(Arg.Any<HttpRequestMessage>()).Returns(responseTask.Task); var client = new Client(new Connection(httpClient, DotNetLoggerFactory.Create, "http://something.com")); var judo = new JudoPayApi(DotNetLoggerFactory.Create, client); IResult<ITransactionResult> paymentReceiptResult = null; // ReSharper disable CanBeReplacedWithTryCastAndCheckForNull paymentReceiptResult = judo.RegisterCards.Create(registerCard).Result; // ReSharper restore CanBeReplacedWithTryCastAndCheckForNull Assert.NotNull(paymentReceiptResult); Assert.IsTrue(paymentReceiptResult.HasError); Assert.IsNull(paymentReceiptResult.Response); Assert.IsNotNull(paymentReceiptResult.Error); Assert.AreEqual((int)errorType, paymentReceiptResult.Error.Code); }
public void CycleSession() { _sessionPaymentModel = new CardPaymentModel(); _sessionTokenPaymentModel = new TokenPaymentModel(); _sessionPKPaymentModel = new PKPaymentModel(); _sessionAndroidPaymentModel = new AndroidPaymentModel(); }
public void ValidateCardPaymentWithoutErrors() { var payment = new CardPaymentModel { Amount = 2.0m, CardAddress = new CardAddressModel { Line1 = "Test Street", Line2 = "Test Street", Line3 = "Test Street", PostCode = "W40 9AU", Town = "Town" }, CardNumber = "348417606737499", ConsumerLocation = new ConsumerLocationModel { Latitude = 40m, Longitude = 14m }, CV2 = "420", EmailAddress = "*****@*****.**", ExpiryDate = "120615", JudoId = "12356", MobileNumber = "07745352515", YourConsumerReference = "User10" }; var validator = new CardPaymentValidator(); var result = validator.Validate(payment); Assert.IsNotNull(result); Assert.IsTrue(result.IsValid); }
public void ValidateCardPaymentWithErrorOnPaymentValidation() { var payment = new CardPaymentModel { Amount = 2.0m, CardAddress = new CardAddressModel { Line1 = "Test Street", PostCode = "W40 9AU", Town = "Town" }, CardNumber = "348417606737499", ConsumerLocation = new ConsumerLocationModel { Latitude = 40m, Longitude = 14m }, CV2 = "420", EmailAddress = "*****@*****.**", ExpiryDate = "120615", MobileNumber = "07745352515", YourConsumerReference = "User10" }; var validator = new CardPaymentValidator(); validator.ShouldHaveValidationErrorFor(model => model.JudoId, payment); }
public void ValidateCardPaymentWithErrorOnSpecificCardPaymentInformation() { var payment = new CardPaymentModel(); var validator = new CardPaymentValidator(); validator.ShouldHaveValidationErrorFor(model => model.CardNumber, payment); }
public override void MakeCardPayment() { var cardNumber = cardEntryView.GetCardNumber(); var expiryDate = cardEntryView.GetCardExpiry(); var cv2 = cardEntryView.GetCardCV2(); CardAddressModel cardAddress = new CardAddressModel(); if (JudoSDKManager.Configuration.IsAVSEnabled) { var country = avsEntryView.GetCountry(); cardAddress.PostCode = avsEntryView.GetPostCode(); } string startDate = null; string issueNumber = null; if (JudoSDKManager.Configuration.IsMaestroEnabled) { issueNumber = startDateEntryView.GetIssueNumber(); startDate = startDateEntryView.GetStartDate(); } var cardPayment = new CardPaymentModel() { JudoId = judoId, Currency = judoCurrency, Amount = judoAmount, YourPaymentReference = judoPaymentRef, YourConsumerReference = judoConsumer.YourConsumerReference, YourPaymentMetaData = judoMetaData.Metadata, CardNumber = cardNumber, CardAddress = cardAddress, StartDate = startDate, ExpiryDate = expiryDate, CV2 = cv2, ClientDetails = JudoSDKManager.GetClientDetails(this) }; ShowLoadingSpinner(true); var judoPay = JudoSDKManager.JudoClient; judoPay.PreAuths.Create(cardPayment).ContinueWith(HandleServerResponse, TaskScheduler.FromCurrentSynchronizationContext()); }
public Task<IResult<ITransactionResult>> Payment(Context context, string judoId, string currency, decimal amount, string paymentReference, string consumerReference, IDictionary<string, string> metaData, string cardNumber, string postCode, string startDate, string expiryDate, string cv2) { var cardPayment = new CardPaymentModel() { JudoId = judoId, Currency = currency, Amount = amount, YourPaymentReference = paymentReference, YourConsumerReference = consumerReference, YourPaymentMetaData = metaData, CardNumber = cardNumber, CardAddress = new CardAddressModel { PostCode = postCode }, StartDate = startDate, ExpiryDate = expiryDate, CV2 = cv2, ClientDetails = JudoSDKManager.GetClientDetails(context) }; return JudoSDKManager.JudoClient.Payments.Create(cardPayment); }
public Task<IResult<ITransactionResult>> Create(CardPaymentModel cardPayment) { var validationError = Validate<CardPaymentModel, ITransactionResult>(CardPaymentValidator, cardPayment); return validationError ?? PostInternal<CardPaymentModel, ITransactionResult>(_createAddress, cardPayment); }
public async Task ExplicitUserAgentSendsExplicitValue() { var httpClient = Substitute.For<IHttpClient>(); var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent((@"{ results : [{ receiptId : '134567', type : 'Create', judoId : '12456', originalAmount : 20, amount : 20, netAmount : 20, cardDetails : { cardLastfour : '1345', endDate : '1214', cardToken : 'ASb345AE', cardType : 'VISA' }, currency : 'GBP', consumer : { consumerToken : 'B245SEB', yourConsumerReference : 'Consumer1' } }]}")) }; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var responseTask = new TaskCompletionSource<HttpResponseMessage>(); responseTask.SetResult(response); httpClient.SendAsync(Arg.Any<HttpRequestMessage>()).Returns(responseTask.Task); var connection = new Connection(httpClient, DotNetLoggerFactory.Create, "http://test.com"); var paymentModel = new CardPaymentModel { UserAgent = "SomeText" }; await connection.Send(HttpMethod.Post, "http://foo", null, null, paymentModel); await httpClient.Received().SendAsync(Arg.Is<HttpRequestMessage>(r => r.Headers.UserAgent.First().Product.Name == paymentModel.UserAgent)); }
public Task<IResult<JudoApiErrorModel>> Validate(CardPaymentModel cardPreAuth) { var validationError = Validate<CardPaymentModel, JudoApiErrorModel>(CardPaymentValidator, cardPreAuth); return validationError ?? PostInternal<CardPaymentModel, JudoApiErrorModel>(_validatePreAuthAddress, cardPreAuth); }
public Task<IResult<ITransactionResult>> Create(CardPaymentModel registerCard) { var validationError = Validate<CardPaymentModel, ITransactionResult>(RegisterCardValidator, registerCard); return validationError ?? PostInternal<CardPaymentModel, ITransactionResult>(_createAddress, registerCard); }