示例#1
0
        public async Task <CreatePaymentResponse> CreateInboundPayment(ClaimsPrincipal principal,
                                                                       CreatePaymentRequestViewModel 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 CreateInboundPaymentRequest
                {
                    Culture     = request.Culture,
                    RedirectUrl = GetPaymentRedirectUrl(),
                    Payment     = new InboundPaymentRequest
                    {
                        Amount = new PaymentAmountRequest
                        {
                            Value = request.Amount
                        },
                    }
                };

                return(await CallApi <CreatePaymentResponse>($"v1/accounts/{request.SourceAccountId}/payments/inbound",
                                                             paymentRequest,
                                                             HttpMethod.Post,
                                                             user.AiiaTokenType,
                                                             user.AiiaAccessToken));
            }
        }
示例#2
0
        public async Task <ActionResult <CreatePaymentResultViewModel> > CreateInboundPayment(
            [FromBody] CreatePaymentRequestViewModel body)
        {
            if (_environment.IsProduction())
            {
                return(NotFound());
            }
            var result = new CreatePaymentResultViewModel();

            try
            {
                var createPaymentResult = await _aiiaService.CreateInboundPayment(User, body);

                result.PaymentId        = createPaymentResult.PaymentId;
                result.AuthorizationUrl = createPaymentResult.AuthorizationUrl;
            }
            catch (AiiaClientException e)
            {
                result.ErrorDescription = e.Message;
            }

            return(Ok(result));
        }
示例#3
0
        public async Task <CreatePaymentResponse> CreateOutboundPayment(ClaimsPrincipal principal,
                                                                        CreatePaymentRequestViewModel 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 CreateOutboundPaymentRequest
            {
                Culture     = request.Culture,
                RedirectUrl = GetPaymentRedirectUrl(),
                Payment     = new PaymentRequest
                {
                    Message         = request.message,
                    TransactionText = request.TransactionText,
                    Amount          = new PaymentAmountRequest
                    {
                        Value = request.Amount
                    },
                    Destination   = new PaymentDestinationRequest(),
                    PaymentMethod = request.PaymentMethod,
                },
            };

            paymentRequest.Payment.Destination.RecipientFullname = request.RecipientFullname;



            if (!string.IsNullOrWhiteSpace(request.Iban))
            {
                paymentRequest.Payment.Destination.IBan = 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 <CreatePaymentResponse>($"v1/accounts/{request.SourceAccountId}/payments/outbound",
                                                         paymentRequest,
                                                         HttpMethod.Post,
                                                         user.AiiaTokenType,
                                                         user.AiiaAccessToken));
        }