Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }