Esempio n. 1
0
        static internal PaymentOrderDto MapSITOrdenPagoToPaymentOrderRequest(OrdenPagoDto ordenPago)
        {
            PaymentOrderDto paymentOrder = new PaymentOrderDto();

            paymentOrder.UID = ordenPago.idPagoElectronico.ToString();

            paymentOrder.Issuer  = "SECFIN";
            paymentOrder.Version = "1.0";

            DateTime dateValue;

            if (DateTime.TryParse(ordenPago.fechaGeneracion, out dateValue))
            {
                paymentOrder.IssueTime = dateValue;
            }

            if (DateTime.TryParse(ordenPago.fechaVencimiento, out dateValue))
            {
                paymentOrder.DueDate = dateValue;
            }

            paymentOrder.Total = ordenPago.total;

            paymentOrder.Status = ordenPago.idEstatus.ToString();

            return(paymentOrder);
        }
Esempio n. 2
0
        public async Task <BuildOrderPostRequestResult> BuildOrderPostRequest(PaymentOrderDto paymentOrder)
        {
            var apiconfig = await apiconfigRepository.FirstOrDefaultAsync(a => a.CompanyId == paymentOrder.CompanyId &&
                                                                          a.ApiMethod == ApiMethod.PlaceOrder &&
                                                                          a.SupportedChannels.Any(sc => sc.ChannelId == paymentOrder.ChannelId));

            var result = new BuildOrderPostRequestResult
            {
                ApiId               = apiconfig.Id,
                Url                 = apiconfig.Url,
                AcceptCharset       = apiconfig.AcceptCharset,
                ContentType         = apiconfig.ContentType,
                DataType            = apiconfig.DataType,
                Method              = apiconfig.Method,
                RequestType         = apiconfig.RequestType,
                HasResponeParameter = apiconfig.HasResponseParameter
            };
            var apiRequests = await GetApiParameters(paymentOrder.CompanyId, paymentOrder.ChannelId,
                                                     ApiMethod.PlaceOrder, ParameterType.ToRequest);

            if (apiconfig.HasResponseParameter)
            {
                var apiRespones = await GetApiParameters(paymentOrder.CompanyId, paymentOrder.ChannelId,
                                                         ApiMethod.PlaceOrder, ParameterType.FromResponse);

                result.ApiResponeParameters = apiRespones;
            }
            var variable = new ParameterValueProcessor(null, null, null, null, null);
            var values   = variable.GetValues(apiRequests);

            result.SetHttpValues(values);

            return(result);
        }
Esempio n. 3
0
 public ParameterValueProcessor(
     PaymentApp tenantPaymentApp,
     CompanyDto company,
     ApiConfigurationDto apiConfiguration,
     CompanyAccountDto companyAccount,
     PaymentOrderDto paymentOrder)
 {
     this.paymentOrder     = paymentOrder;
     this.companyAccount   = companyAccount;
     this.apiConfiguration = apiConfiguration;
     this.tenantPaymentApp = tenantPaymentApp;
     this.company          = company;
 }
Esempio n. 4
0
        public async Task Handle(OrderEnrolledAcceptedEvent message, CancellationToken cancellationToken)
        {
            var pagamentoPedido = new PaymentOrderDto
            {
                OrderId            = message.OrderId,
                ClientId           = message.ClientId,
                Total              = message.Total,
                NameCard           = message.NameCard,
                NumberCard         = message.NumberCard,
                ExpirationDateCard = message.ExpirationDateCard,
                CvvCard            = message.CvvCard
            };

            await _paymentService.ExectureOrderPayment(pagamentoPedido);
        }
Esempio n. 5
0
        public async Task <Transaction> ExectureOrderPayment(PaymentOrderDto paymentOrder)
        {
            var order = new Order
            {
                Id       = paymentOrder.OrderId,
                ClientId = paymentOrder.ClientId,
                Total    = paymentOrder.Total
            };

            var payment = new Payment
            {
                Total              = paymentOrder.Total,
                NameCard           = paymentOrder.NameCard,
                NumberCard         = paymentOrder.NumberCard,
                ExpirationDateCard = paymentOrder.ExpirationDateCard,
                CvvCard            = paymentOrder.CvvCard,
                OrderId            = paymentOrder.OrderId
            };

            var transaction = _paymentCreditCardFacade.ExecutePayment(order, payment);

            if (transaction.StatusTransaction == StatusTransaction.Paid)
            {
                payment.AddEvent(new PaymentRealizedEvent(payment.Id, transaction.Id, order.Id, order.ClientId, order.Total));

                _orderRepository.Add(payment);
                _orderRepository.Add(transaction);

                await _orderRepository.UnitOfWork.Commit();

                return(transaction);
            }

            await _mediatorHandler.PublishNotification(new DomainNotification(this.GetType().Name, "A operadora recusou o pagamento"));

            await _mediatorHandler.PublishEvent(new PaymentRefusedEvent(payment.Id, transaction.Id, order.Id, order.ClientId, order.Total));

            return(transaction);
        }