Ejemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] CardPaymentDto model)
        {
            try
            {
                var first3Digits = model.Number.Substring(0, 3);
                var bank         = await this.bankService
                                   .GetBankByBankIdentificationCardNumbersAsync <BankPaymentServiceModel>(first3Digits);

                if (bank?.CardPaymentUrl == null)
                {
                    return(this.BadRequest());
                }

                var encryptedAndSignedData = TransactionHelper.SignAndEncryptData(model, this.configuration.Key, bank.ApiKey);
                var client  = new HttpClient();
                var request = await client.PostAsJsonAsync(bank.CardPaymentUrl, encryptedAndSignedData);

                if (request.StatusCode != HttpStatusCode.OK)
                {
                    return(this.BadRequest());
                }

                return(this.Ok());
            }
            catch
            {
                return(this.BadRequest());
            }
        }
Ejemplo n.º 2
0
        public CardPayment(CardPaymentDto payment)
        {
            if (payment is null)
            {
                throw new ArgumentNullException(nameof(payment));
            }

            Amount    = payment.Amount;
            VatAmount = payment.VatAmount;
            RemainingCaptureAmount      = payment.RemainingCaptureAmount;
            RemainingCancellationAmount = payment.RemainingCancellationAmount;
            RemainingReversalAmount     = payment.RemainingReversalAmount;
            Created                   = payment.Created;
            Updated                   = payment.Updated;
            Currency                  = new Currency(payment.Currency);
            Description               = payment.Description;
            Id                        = new Uri(payment.Id, UriKind.RelativeOrAbsolute);
            Instrument                = payment.Instrument.ParseTo <PaymentInstrument>();
            Language                  = new Language(payment.Language);
            Number                    = payment.Number;
            Operation                 = payment.Operation;
            PayeeInfo                 = payment.PayeeInfo.Map();
            PayerReference            = payment.PayerReference;
            InitiatingSystemUserAgent = payment.InitiatingSystemUserAgent;
            Prices                    = payment.Prices.Map();
            State                     = payment.State;
            Urls                      = new UrlsResponse(payment.Urls);
            UserAgent                 = payment.UserAgent;
            Metadata                  = new Metadata(payment.Metadata);
            RecurrenceToken           = payment.RecurrenceToken;

            Authorizations = payment.Authorizations?.Map();
            Cancellations  = payment.Cancellations?.Map();
            Captures       = payment.Captures?.Map();
            Reversals      = payment.Reversals?.Map();
            Transactions   = payment.Transactions?.Map();
            if (!string.IsNullOrEmpty(payment.Intent))
            {
                Intent = payment.Intent.ParseTo <PaymentIntent>();
            }
        }
Ejemplo n.º 3
0
        public async Task CreatePaymentRequest(CardPayment cardPayment)
        {
            var cardPaymentDto = new CardPaymentDto()
            {
                Amount              = cardPayment.PaymentAmount.Amount,
                CardNumber          = cardPayment.CardDetails.CardNumber,
                Currency            = cardPayment.PaymentAmount.Currency,
                Cvv                 = cardPayment.CardDetails.Cvv,
                ExpiryMonth         = cardPayment.CardDetails.ExpiryMonth,
                ExpiryYear          = cardPayment.CardDetails.ExpiryYear,
                CustomerName        = cardPayment.CustomerDetails.CustomerName,
                CustomerAddress     = cardPayment.CustomerDetails.CustomerAddress,
                Reference           = cardPayment.Reference,
                ThirdPartyReference = "",
                PaymentStatus       = PaymentStatus.Pending,
            };

            using var connection = new SqlConnection(_connectionString);
            await connection.ExecuteAsync(CreateCardPaymentProcedure,
                                          cardPaymentDto,
                                          commandType : CommandType.StoredProcedure);
        }