コード例 #1
0
        public async Task <ActionResult> Recurrent(CreditCardSimpleRecurrentInput request)
        {
            var transactionService = new TransactionService(_merchant, EnvironmentEnum.Sandbox);

            var result = await transactionService.CreateCreditCardSimpleRecurrentTransactionAsync(request);

            return(Ok(new { result }));
        }
コード例 #2
0
        // 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));
        }