public async Task InvalidateCreditCardAsync_ForValidToken_ReturnsOK(CartaoProtegidoClient sut) { var saveRequest = new SaveCreditCardRequest { CustomerName = "Bjorn Ironside", CustomerIdentification = "762.502.520-96", CardHolder = "BJORN IRONSIDE", CardExpiration = "10/2025", CardNumber = "1000100010001000" }; var saveResponse = await sut.SaveCreditCardAsync(saveRequest, new MerchantCredentials { MerchantKey = "106c8a0c-89a4-4063-bf50-9e6c8530593b" }); Assert.Equal(HttpStatusCode.OK, saveResponse.HttpStatus); Assert.Empty(saveResponse.ErrorDataCollection); Assert.NotNull(saveResponse.JustClickKey); var invalidateRequest = new InvalidateCreditCardRequest { JustClickKey = saveResponse.JustClickKey }; var invalidateResponse = await sut.InvalidateCreditCardAsync(invalidateRequest, new MerchantCredentials { MerchantKey = "106c8a0c-89a4-4063-bf50-9e6c8530593b" }); Assert.Equal(HttpStatusCode.OK, invalidateResponse.HttpStatus); }
private static async Task <SaveCreditCardResponse> SaveCreditCardAsync(ICartaoProtegidoClient client) { var request = new SaveCreditCardRequest { CustomerName = "Bjorn Ironside", CustomerIdentification = "762.502.520-96", CardHolder = "BJORN IRONSIDE", CardExpiration = "10/2025", CardNumber = "1000100010001000", JustClickAlias = DateTime.Now.Ticks.ToString() }; return(await client.SaveCreditCardAsync(request)); }
public async Task SaveCreditCardAsync_ReturnsJustClickToken(CartaoProtegidoClient sut) { var request = new SaveCreditCardRequest { CustomerName = "Bjorn Ironside", CustomerIdentification = "762.502.520-96", CardHolder = "BJORN IRONSIDE", CardExpiration = "10/2025", CardNumber = "1000100010001000", JustClickAlias = DateTime.Now.Ticks.ToString() }; var response = await sut.SaveCreditCardAsync(request, new MerchantCredentials { MerchantKey = "106c8a0c-89a4-4063-bf50-9e6c8530593b" }); Assert.Equal(HttpStatusCode.OK, response.HttpStatus); Assert.Empty(response.ErrorDataCollection); Assert.NotNull(response.JustClickKey); }
public async Task <SaveCreditCardResponse> SaveCreditCardAsync(SaveCreditCardRequest request, MerchantCredentials credentials = null) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (_credentials == null && credentials == null) { throw new InvalidOperationException("Credentials are null"); } var currentCredentials = credentials ?? _credentials; if (string.IsNullOrWhiteSpace(currentCredentials.MerchantKey)) { throw new InvalidOperationException("Invalid credentials: MerchantKey is null"); } var httpRequest = new RestRequest(@"v2/cartaoprotegido.asmx", Method.POST) { RequestFormat = DataFormat.Xml, XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer() }; var sb = new StringBuilder(); sb.AppendLine("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"); sb.AppendLine("<soap:Body>"); sb.AppendLine("<SaveCreditCard xmlns=\"http://www.cartaoprotegido.com.br/WebService/\">"); sb.AppendLine("<saveCreditCardRequestWS>"); sb.AppendLine(request.RequestId.HasValue ? $"<RequestId>{request.RequestId.Value}</RequestId>" : $"<RequestId>{Guid.NewGuid()}</RequestId>"); sb.AppendLine($"<MerchantKey>{currentCredentials.MerchantKey}</MerchantKey>"); sb.AppendLine($"<CustomerIdentification>{request.CustomerIdentification}</CustomerIdentification>"); sb.AppendLine($"<CustomerName>{request.CustomerName}</CustomerName>"); sb.AppendLine($"<CardHolder>{request.CardHolder}</CardHolder>"); sb.AppendLine($"<CardNumber>{request.CardNumber}</CardNumber>"); sb.AppendLine($"<CardExpiration>{request.CardExpiration}</CardExpiration>"); sb.AppendLine($"<JustClickAlias>{request.JustClickAlias}</JustClickAlias>"); sb.AppendLine("<DataCollection />"); sb.AppendLine("</saveCreditCardRequestWS>"); sb.AppendLine("</SaveCreditCard>"); sb.AppendLine("</soap:Body>"); sb.AppendLine("</soap:Envelope>"); httpRequest.AddParameter("text/xml", sb.ToString(), ParameterType.RequestBody); var cancellationTokenSource = new CancellationTokenSource(); var httpResponse = await RestClient.ExecuteTaskAsync(httpRequest, cancellationTokenSource.Token); if (httpResponse.StatusCode != HttpStatusCode.OK) { return(new SaveCreditCardResponse { HttpStatus = httpResponse.StatusCode }); } var jsonResponse = XmlDeserializer.Deserialize <SaveCreditCardResponse>(httpResponse); jsonResponse.HttpStatus = httpResponse.StatusCode; return(jsonResponse); }