public async Task <string> PostFormData(ThreeDsRequest request) { Guard.ArgumentNotNull(request, nameof(request)); request.Md = this.GetMerchantId(); var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(request)); var webRequest = WebRequest.Create(request.PostUrl); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = data.Length; this.logger.LogTrace($"Start send form data {request.ToJson()}"); var stream = await webRequest.GetRequestStreamAsync(); await stream.WriteAsync(data, 0, data.Length); stream.Close(); var response = await webRequest.GetResponseAsync(); if (response == null) { throw new BadRequestException($"Failure post form data for 3D secure. Data: {request.ToJson()}. WebRequest: {webRequest.ToJson()}"); } string result; using (var sr = new StreamReader(response.GetResponseStream())) { result = await sr.ReadToEndAsync(); sr.Close(); } return(result.Split("value").Last().Split("\"")[1]); }
protected async Task <PaymentResponse> Make3dsCardPayment(bool attemptN3d = false) { var phone = GetPhone(); var billingAddress = GetAddress(); var requestCardSource = new RequestCardSource { Name = TestCardSource.Visa.Name, Number = TestCardSource.Visa.Number, ExpiryYear = TestCardSource.Visa.ExpiryYear, ExpiryMonth = TestCardSource.Visa.ExpiryMonth, Cvv = TestCardSource.Visa.Cvv, BillingAddress = billingAddress, Phone = phone }; var threeDsRequest = new ThreeDsRequest { Enabled = true, AttemptN3D = attemptN3d, Eci = attemptN3d ? "05" : null, Cryptogram = attemptN3d ? "AgAAAAAAAIR8CQrXcIhbQAAAAAA" : null, Xid = attemptN3d ? "MDAwMDAwMDAwMDAwMDAwMzIyNzY=" : null, Version = "2.0.1" }; var customerRequest = new CustomerRequest { Email = GenerateRandomEmail() }; var paymentRequest = new PaymentRequest { Source = requestCardSource, Capture = false, Reference = Guid.NewGuid().ToString(), Amount = 10L, Currency = Currency.USD, Customer = customerRequest, ThreeDs = threeDsRequest }; var paymentResponse = await PreviousApi.PaymentsClient().RequestPayment(paymentRequest); paymentResponse.ShouldNotBeNull(); return(paymentResponse); }