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()); } }
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>(); } }
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); }