Exemplo n.º 1
0
        public async Task <ActionResult> AlterPayment(CreditCardAlterPaymentInput request)
        {
            var transactionService = new TransactionService(_merchant, EnvironmentEnum.Sandbox);

            var result = await transactionService.CreditCardRecurrentTransactionAlterPaymentAsync(request);

            return(Ok(new { result }));
        }
Exemplo n.º 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));
                }
            }
        }