public async Task <ActionResult> Recurrent(CreditCardSimpleRecurrentInput request) { var transactionService = new TransactionService(_merchant, EnvironmentEnum.Sandbox); var result = await transactionService.CreateCreditCardSimpleRecurrentTransactionAsync(request); return(Ok(new { result })); }
// Recurrent Transaction public async Task <TransactionCreditCardEntityResult> CreateCreditCardSimpleRecurrentTransactionAsync(CreditCardSimpleRecurrentInput input) { Transaction transaction = new Transaction() { MerchantOrderId = input.MerchantOrderId, Customer = new Customer() { Name = input.CustomerName }, Payment = new Payment() { Type = PaymentTypeEnum.CREDIT_CARD.GetEnumDescriptionAttribute(), Amount = CieloApiUtils.ConvertToCents(input.PaymentAmount), Installments = input.PaymentInstallments, SoftDescriptor = input.PaymentSoftDescriptor, RecurrentPayment = new RecurrentPayment() { EndDate = input.RecurrentPaymentEndDate, Interval = input.RecurrentPaymentInterval.GetEnumDescriptionAttribute() }, CreditCard = new CreditCard() { CardNumber = input.CreditCardNumber, Holder = input.CreditCardHolder, ExpirationDate = input.CreditCardExpirationDate, Brand = input.CreditCardBrand.GetEnumDescriptionAttribute(), SecurityCode = input.CreditCardSecurityCode }, Capture = true } }; var centsTo = Convert.ToDecimal(transaction.Payment.Amount) / 100; if (centsTo != input.PaymentAmount) { throw new Exceptions.CieloeCommerceApiException("Existe uma divergência no valor informado em relação a conversão para centavos"); } // Se a recorrencia for programada força a autorização para falso e insere data data inicial da recorrencia. if (input.ScheduleRecurrent) { transaction.Payment.RecurrentPayment.AuthorizeNow = false; if (input.ScheduleRecurrentStartDate == DateTime.MinValue) { throw new Exceptions.CieloeCommerceApiException("Informar a data de início da recorrência para agendamento"); } else { transaction.Payment.RecurrentPayment.StartDate = input.ScheduleRecurrentStartDate; } } else { transaction.Payment.RecurrentPayment.AuthorizeNow = input.RecurrentPaymentAuthorizeNow; } return(await CreateTransaction(transaction)); }