public async Task <ActionResult <CreatePaymentResultViewModelV2> > CreatePayment( [FromBody] CreatePaymentRequestViewModelV2 body) { if (_environment.IsProduction()) { return(NotFound()); } var result = new CreatePaymentResultViewModelV2(); try { var createPaymentResult = await _aiiaService.CreatePaymentV2(User, body); result.PaymentId = createPaymentResult.PaymentId; } catch (AiiaClientException e) { result.ErrorDescription = e.Message; } return(Ok(result)); }
public async Task <CreatePaymentResponseV2> CreatePaymentV2(ClaimsPrincipal principal, CreatePaymentRequestViewModelV2 request) { var currentUserId = principal.FindFirst(ClaimTypes.NameIdentifier).Value; var user = _dbContext.Users.FirstOrDefault(x => x.Id == currentUserId); if (user == null) { throw new UserNotFoundException(); } var paymentRequest = new CreateOutboundPaymentRequestV2 { Payment = new PaymentRequestV2 { Message = request.Message, TransactionText = request.TransactionText, Amount = new PaymentAmountRequestV2 { Value = request.Amount, Currency = request.Currency }, Destination = new PaymentDestinationRequestV2(), PaymentMethod = request.PaymentMethod, }, }; paymentRequest.Payment.Destination.Name = request.RecipientFullname; if (!string.IsNullOrWhiteSpace(request.Iban)) { paymentRequest.Payment.Destination.IBan = new PaymentIbanRequestV2 { IbanNumber = request.Iban }; } else if (!string.IsNullOrWhiteSpace(request.BbanAccountNumber)) { paymentRequest.Payment.Destination.BBan = new PaymentBBanRequest { BankCode = request.BbanBankCode, AccountNumber = request.BbanAccountNumber }; } else { paymentRequest.Payment.Destination.InpaymentForm = new PaymentInpaymentFormRequest { Type = request.InpaymentFormType, CreditorNumber = request.InpaymentFormCreditorNumber }; } if (!string.IsNullOrEmpty(request.Ocr)) { paymentRequest.Payment.Identifiers = new PaymentIdentifiersRequest { Ocr = request.Ocr } } ; if (!string.IsNullOrEmpty(request.AddressStreet)) { paymentRequest.Payment.Destination.Address = new PaymentAddressRequest { Street = request.AddressStreet, BuildingNumber = request.AddressBuildingNumber, PostalCode = request.AddressPostalCode, City = request.AddressCity, Country = request.AddressCountry, }; } return(await CallApi <CreatePaymentResponseV2>($"v2/accounts/{request.SourceAccountId}/payments", paymentRequest, HttpMethod.Post, user.AiiaTokenType, user.AiiaAccessToken)); }