/// <summary> /// Gera o cabeçalho de autenticação OAuth. /// </summary> /// <param name="authenticateType">Tipo de Autenticação.</param> /// <param name="oauth">Objeto de dados para autenticação OAuth.</param> /// <returns>Cabeçalho de autenticação OAuth.</returns> public static string GenerateOAuth(string authenticateType, OAuthRequestData oauth) { string nonce = GenerateNonce(); string timestamp = GenerateOAuthTimestamp(); StringBuilder oAuthBuilder = new StringBuilder(authenticateType); oAuthBuilder.Append(" "); AppendProperty(OAuthConstants.REALM_PARAM, oauth.Realm, true, oAuthBuilder); AppendProperty(OAuthConstants.CONSUMER_KEY_PARAM, oauth.ConsumerKey, true, oAuthBuilder); AppendProperty(OAuthConstants.NONCE_PARAM, nonce, true, oAuthBuilder); AppendProperty(OAuthConstants.SIGNATURE_PARAM, GenerateSignature(oauth.ConsumerKey, nonce, timestamp, oauth.SignatureMethod, oauth.Version), true, oAuthBuilder); AppendProperty(OAuthConstants.SIGNATURE_METHOD_PARAM, oauth.SignatureMethod, true, oAuthBuilder); AppendProperty(OAuthConstants.TIMESTAMP_PARAM, timestamp, true, oAuthBuilder); AppendProperty(OAuthConstants.VERSION_PARAM, oauth.Version, false, oAuthBuilder); return oAuthBuilder.ToString(); }
public void CreateTransactionTest() { TransactionService target = new TransactionService(); TransactionRequest request = new TransactionRequest() { Buyer = new Domain.Account.Customer() { Address = new Domain.Account.Address() { address = "Rua teste teste", City = "Cidade Modelo", Complement = "Apto 123", Neighborhood = "Bairro de Teste", Number = "123", State = StateEnum.MINAS_GERAIS, ZipCode = "38408-266" }, BirthDate = new DateTime(1986, 07, 21), CellPhone = "3499265135", CompanyName = "Empresa X", Cnpj = "72139715000130", Cpf = "85082236504", Gender = GenderEnum.MALE, IssueRgDate = new DateTime(2010, 06, 25), Mail = "*****@*****.**", Name = "Bruno Aparecido Capel Moretti", OrganConsignorRg = "SSP", Phone = "3432558584", Rg = "13194030", SearchToken = String.Empty, StateConsignorRg = StateEnum.MINAS_GERAIS }, PaymentMethod = new PaymentMethod(PaymentMethodEnum.BB_ONLINE_TRANSFER), Products = new List<Product>() { { new Product("1236456", "Produto de teste 1", 5, new Decimal(15.25), "Produto exemplo") } }, SellerMail = "*****@*****.**", OrderId = "123456", Free = "Texto livre para o usuário...", Freight = new Decimal(10.50), FreightType = FreightTypeEnum.SEDEX, Discount = new Decimal(1.95), Addition = new Decimal(2.65), UrlReturn = "retorno.pagamentodigital.com.br", UrlNotification = "aviso.pagamentodigital.com.br", Installments = 1, Currency = CurrencyEnum.REAL, AcceptedContract = true, ViewedContract = true }; OAuthRequestData oauth = new OAuthRequestData("437f7c3021a87ebf1cefb17be66e3fb72fa8dd51"); TransactionResponse actual = null; try { actual = target.CreateTransaction(request, oauth); Assert.IsNotNull(actual); } catch (ServiceException ex) { throw ex; } }
/// <summary> /// Obtém o dicionário do cabeçalho de autenticação. /// </summary> /// <param name="oauth">Objeto de dados para autenticação OAuth.</param> /// <returns>Dicionário preenchido com os Parâmetros e Valores.</returns> private Dictionary<string, string> GetOAuthHeader(OAuthRequestData oauth) { string oAuthData = OAuthUtils.GenerateOAuth(AUTHENTICATION_TYPE, oauth); return new Dictionary<string, string>(1) { { AuthConstants.AUTHORIZATION, oAuthData } }; }
public void CreateTransactionWithExtendedWarrantyTest() { List<SearchProduct> products = new List<SearchProduct>() { new SearchProduct("nokia", 1550.00), new SearchProduct("samsung", 10.00) }; ExtendedWarrantyResponse response = searchExtendedWarranty(products); Assert.AreEqual<int>(response.code, 2); Dictionary<string, ResponseProducts> reponseProducts = response.productsByDescrition(); List<Product> Products = new List<Product>(); ResponseProducts nokia = null; reponseProducts.TryGetValue("nokia", out nokia); Assert.IsNotNull(nokia); ResponseProducts samsung = null; reponseProducts.TryGetValue("samsung", out samsung); Assert.IsNotNull(samsung); Products.Add(newProduct(nokia)); Products.Add(newProduct(samsung)); TransactionRequest transactionRequest = getTransactionRequest(Products); OAuthRequestData oauth = new OAuthRequestData("437f7c3021a87ebf1cefb17be66e3fb72fa8dd51"); TransactionResponse actual = null; try { TransactionService target = new TransactionService(); actual = target.CreateTransaction(transactionRequest, oauth); Assert.IsNotNull(actual); } catch (ServiceException ex) { throw ex; } }
/// <summary> /// Cria uma transação a partir dos dados informados. /// </summary> /// <param name="request">Objeto que contém informações para a criação da transação.</param> /// <param name="oauth">Objeto que contém informações de autenticação para consumir o serviço.</param> /// <returns>Objeto que contém informações de status da transação criada.</returns> public TransactionResponse CreateTransaction(TransactionRequest request, OAuthRequestData oauth) { string data = JsonConvert.SerializeObject(request, Formatting.None, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new List<JsonConverter>() { { new BooleanConverter() }, { new DateTimeConverter() } } }); HttpClientResponse response = this.HttpClient.Post( ConfigUtil.UriTransactionCreateService, this.GetParams(data), this.GetOAuthHeader(oauth)); if (response.HttpStatus != HttpStatusCode.OK) { // ErrorList throw new ServiceException(JsonConvert.DeserializeObject<ErrorList>(response.ResponseBody)); } return JsonConvert.DeserializeObject<TransactionResponse>(response.ResponseBody); }