예제 #1
0
        public async Task <bool> CreditCardRecurrentTransactionDeactiveAsync(string recurrentPaymentId)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(GetBaseAddressApi);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantId", _merchant.MerchantId);
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantKey", _merchant.MerchantKey);
                client.DefaultRequestHeaders.TryAddWithoutValidation("RequestId", _merchant.RequestId);

                HttpResponseMessage response = await client.PutAsync(string.Format("/1/RecurrentPayment/{0}/Deactivate", recurrentPaymentId), null);

                if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
                {
                    throw new Exceptions.CieloeCommerceApiException("Ocorreu um erro interno");
                }

                if (response.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    dynamic contentResult = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result.ToString());
                    string  code          = Convert.ToString(contentResult[0].Code);
                    string  description   = CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) != "" ? CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) : contentResult[0].Message;
                    throw new Exceptions.CieloeCommerceApiException(string.Format("{0} (Cod.{1})", description, code));
                }
            }
        }
예제 #2
0
        public async Task <bool> CreditCardRecurrentTransactionAlterPaymentAsync(CreditCardAlterPaymentInput input)
        {
            if ((Convert.ToDecimal(CieloApiUtils.ConvertToCents(input.PaymentAmount)) / 100) != input.PaymentAmount)
            {
                throw new Exception("Existe uma divergência no valor informada em relação a conversão para centavos");
            }

            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(GetBaseAddressApi);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantId", _merchant.MerchantId);
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantKey", _merchant.MerchantKey);
                client.DefaultRequestHeaders.TryAddWithoutValidation("RequestId", _merchant.RequestId);

                var content = new StringContent(JsonConvert.SerializeObject(new
                {
                    Type           = input.PaymentType.GetEnumDescriptionAttribute(),
                    Amount         = CieloApiUtils.ConvertToCents(input.PaymentAmount),
                    Installments   = input.PaymentInstallments,
                    SoftDescriptor = input.PaymentSoftDescriptor,
                    CreditCard     = new
                    {
                        Brand          = input.CreditCardBrand.GetEnumDescriptionAttribute(),
                        Holder         = input.CreditCardHolder,
                        CardNumber     = input.CreditCardNumber,
                        ExpirationDate = input.CreditCardExpirationDate
                    }
                }),
                                                System.Text.Encoding.UTF8, "application/json");

                HttpResponseMessage response = await client.PutAsync(string.Format("/1/RecurrentPayment/{0}/Payment",
                                                                                   input.RecurrentPaymentId), content);

                if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
                {
                    throw new Exceptions.CieloeCommerceApiException("Ocorreu um erro interno");
                }

                if (response.IsSuccessStatusCode)
                {
                    return(true);
                }
                else
                {
                    dynamic contentResult = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result.ToString());

                    string code        = Convert.ToString(contentResult[0].Code);
                    string description = CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) != "" ? CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) : contentResult[0].Message;
                    throw new Exceptions.CieloeCommerceApiException(string.Format("{0} (Cod.{1})", description, code));
                }
            }
        }
예제 #3
0
        internal async Task <TransactionCreditCardEntityResult> CreateTransaction(Transaction transaction)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(GetBaseAddressApi);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantId", _merchant.MerchantId);
                client.DefaultRequestHeaders.TryAddWithoutValidation("MerchantKey", _merchant.MerchantKey);
                client.DefaultRequestHeaders.TryAddWithoutValidation("RequestId", _merchant.RequestId);

                var json = JsonConvert.SerializeObject(transaction);

                var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

                HttpResponseMessage response = await client.PostAsync("/1/sales", content);

                TransactionCreditCardEntityResult result = new TransactionCreditCardEntityResult();

                if (response.StatusCode == System.Net.HttpStatusCode.InternalServerError)
                {
                    throw new Exceptions.CieloeCommerceApiException("Ocorreu um erro interno");
                }

                if (response.IsSuccessStatusCode)
                {
                    var responseContent = await response.Content.ReadAsStringAsync();

                    result = JsonConvert.DeserializeObject <TransactionCreditCardEntityResult>(responseContent);
                }
                else
                {
                    dynamic contentResult = JsonConvert.DeserializeObject(
                        response.Content.ReadAsStringAsync().Result.ToString());

                    if (contentResult != null)
                    {
                        string code = Convert.ToString(contentResult[0].Code);

                        string description = CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) != "" ?
                                             CieloApiUtils.GetErrorApi(Convert.ToString(contentResult[0].Code)) : contentResult[0].Message;

                        throw new Exceptions.CieloeCommerceApiException(string.Format("{0} (Cod.{1})", description, code));
                    }
                }

                return(result);
            }
        }